How to build self-made Azure App Service cluster with docker swarm - azure

Since Azure App Services are too expensive, we would like to build our own App Service Cluster so we can deploy Docker images to custom cloud VMs/workers from different service providers.
It should cover functionalities like:
Deployment Center: selecting Docker images (Docker hub, gitlab) and deploy them to our cloud workers by tag
Scalability (like App Service Plan): add workers
Load balancing
SSL/Domain Management
FW Integration
Logging Streams
Does there exist already an open source framework with a GUI for this type of "private cloud" that can be deployed via docker swarm for instance?
thankz!

Related

What are the advantages of using Azure App Service to deploy a docker application instead of Azure Container Instance?

What are the advantages of using Azure App Service to deploy a docker application instead of Azure Container Instance?
I found out that Azure Container instances don't have any networking-related capabilities in terms of restricting app access. Are there any more advantages of using Azure App Service to deploy a container?
There are many advantages of using Azure app service over azure container instance
Azure app service is PAAS(platform as a service) on the other side azure container the instance is an IAAS(infrastructure as a service).
In azure app service directly integration of custom domain is available
Integration with the application gateway to handle the traffic load
It offers auto-scaling and high availability.
Automated deployments from GitHub, Azure DevOps, or any Git repo to support a continuous deployment model
Host background jobs(Web Jobs)

Difference between Azure App Services and Web App for Containers

I was looking to use Azure App Services and noticed Azure now offers Web App for Containers, now I wonder what's the difference between them? And couple more questions come to my mind
Assuming I choose Web App for Containers, who is going to manage the container updates?
Is the deployment differs from App Services to Web App for Containers, from application perspective?
Web App for Containers is one of the offerings in Azure App Service. It allows you to deploy containerized applications on Linux and Windows (the latter is in preview).
The platform automatically takes care of OS patching, capacity provisioning, and load balancing. But, the container updates are up to you.
The deployment differs in that you will be deploying your application inside a Docker container instead of deploying directly like you do in a Web App.

Difference between Azure Container Service and Web App for Containers

What is the difference between Azure Container Service and Web App for Containers?
They both seem to offer a fully managed platform on which we can deploy containers. I feel that Web App for Containers must be offering something more, but I don't see it. I've read the Azure Container Service FAQ and the Web App for Containers intro page, but the difference is not obvious to me.
Web App for Containers lets you run your custom Docker container which hosts your Web Application. By default the Web App Service with Linux OS provides built-in Docker images like PHP 7.0 and Node.js 4.5. But by following the instructions from this webpage you can also host your custom docker images which allows you to define your own SW-Stack. The limitation is that you can only deploy one docker image to an App Service. You can scale the App Service to use multiple instances, but each instance will have the same docker image deployed. So this allows you to use Docker as a Service, but isn't intended for deploying Microservices.
Container Services (ACS), Kubernetes Service (AKS) and Service Fabric allow you to deploy and manage multiple (different) Docker containers which might also need to communicate with each other. Let's say you implement a shopping website and want to build your web application based on a Microservices architecture. You end up having one Service (= container) which is used for registration & login of users and another Service which is used for the visitors' shopping carts and purchasing items. Additionally you have many further small services for all the other needed tasks. Because the purchasing service is used more frequently than the sign-up/sign-in service, you will need, for example, 6 instances of the sign-up/sign-in service and 12 instances of the cart service. Basically, ACS, AKS and Service Fabric let you deploy and manage all those different Microservices.
If you want to know the difference between ACS/AKS and Service Fabric you might want to have a look here.

Scaling Azure Container Service with private ports on containers

In our organization, we are currently trying out the Azure Container Service with Docker Swarm. We have developed a Web API project based on .NET Core and created containers out of it. We have exposed the web api on Container’s Private Port (3000). We want to scale this to say 15 containers on three agent nodes while still accessing the web api through one single Azure load balancer url on public port 8080.
I believe we would need an Internal Load Balancer to do this but there is no documentation around it. I have seen this article on DC\OS but we are using Docker Swarm here. Any help?
Azure Container Service use vanilla Docker Swarm so any load balancing solution for Swarm will work in ACS, e.g. https://botleg.com/stories/load-balancing-with-docker-swarm
Same is true for DC/OS, but in this case it is documented in "Load balance containers in an Azure Container Service cluster" - https://azure.microsoft.com/en-us/documentation/articles/container-service-load-balancing/

Publish an Asp.Net Web Api Self-hosted console application as Azure Webjob

I have an ASP.NET Web API Self-host console application and I want to publish it as a Azure Webjob service. Is it possible, is it advisable?.
I'm using Topshelf to install it as a windows service on my local server.
I haven't a web application only the console application.
In a Webjob, no. See Azure App Service sandbox limitations here - assuming you need to listen for inbound requests on a socket.
Installing stuff (think .msi or writing to registry) is also not supported.
Look at Cloud Services (Worker Role), Service Fabric or IaaS VMs.
They're all options.
EDIT (sometime in 2017):
Now there's even more option: Docker containers in Azure App Service Linux, Azure Container Service (DC/OS, Swarm or Kubernetes as orchestrator) or Azure Container Instance.

Resources