Azure Container Service - Containerization Simplified
Almost eight years ago, Microsoft started with Azure Cloud. In broad terms, Azure provides services around IaaS and PaaS, from computing, storage, and networking to databases, security and management, integration, analytics and IoT, AI, monitoring and management, web and mobile, etc. In addition, Azure developer services are one of the best, which include Visual Studio Team Services, Azure DevTest Labs, SDKs, Application Insight, Xamarin, API management solutions, etc.
Azure Container Service (ACS) is a container management service that provides a container hosting environment where you can deploy and manage containers for Azure with tools of your choice. ACS enables you to migrate existing applications to Azure containers without much hassle and lets you stick to tools you prefer and management practices you are already familiar with. And you can scale and orchestrate your Docker containers with the help of popular orchestration tools like DC/OS, Docker Swarm, and Kubernetes. With setting up, deployment, orchestration, and management tasks being taken care of, you can concentrate on application development. With ACS, you can easily deploy, manage, and automate a group of virtual machines pre-configured as container orchestration clusters. You can leverage all Azure capabilities and combine them with ACS capabilities.
The ACS engine is an integral part of Azure Container Service. It is a CLI tool written in Go that helps you generate Azure Resource Manager (ARM) templates. These templates can help you customize the configuration for the orchestrator of your choice, viz., Docker Swarm, Mesosphere DC/OS, or Kubernetes. ACS engine lets you integrate the Docker-enabled container cluster into a customer's virtual network. The desired ACS engine needs information like cluster, orchestrator, features, agents, etc. The installation procedure for the ACS engine is available for Windows, Linux, and Mac OS.
Container Clusters and Orchestrators
Creating container clusters with ACS is very simple. In the Azure portal, go to Azure container services. You can create a new container service and configure your container cluster. Select the container orchestrator you want, like Swarm or Kubernetes, fill in the subscription details and resource groups, and select the location but make sure that ACS is available in the region of your choice.
Clusters are made of masters and agents. Masters are for management, while Agents provide computing power. The next step will help you to set up the Master-Agent configuration. You can choose a DNS name and can define master credentials such as username, public key, and the number of masters for the cluster. Similarly, select the number of agents you want and select the machine size for Agent instance. Once these steps are completed, you need to create SSH Tunnel, and once the setup is complete, create a container. Now all you need is some preliminary tests, and you are good to go. What makes ACS stand out is it lets you choose an orchestrator which you are comfortable with. ACS allows you to quickly deploy a production-ready Kubernetes, DC/OS, or Docker Swarm cluster. Microsoft has in-detail documentation to explain the deployment process for these three.
How are the giants lining up their Container Services?
Choosing a container service in the cloud totally depends on your needs and the most suitable provider for those needs in terms of services provided, expertise, tools available, and of course, costs involved. AWS has always dominated the cloud and, as a result, the container services market, which has now become a three-horse race that includes Azure and Google. AWS container service is known as ECS, and Google has Google Container Engine (GKE). There are different opinions from different users and reviewers based on their points of view as to which is the best Container-as-a-Service (CaaS) platform.
At Opcito, we have worked with these three platforms for different clients and still I am not able to decide which one is better because of the different scenarios and requirements from customer to customer. When it comes to management, clustering, and scheduling, Google uses Kubernetes; after all, they are the ones who initially designed K8s. AWS has its own proprietary technology whereas ACS gives you the freedom to choose from three options, which I have talked about earlier. So, in this case, we can see ACS as a more feasible option. But that is not the only criteria that we consider. For monitoring, all of them have a different set of tools. Prometheus and ELK are the most commonly used ones and are available with all three of them. In terms of security, the most concerned aspect when it comes to cloud and containers, Google utilizes Kubernetes security features, ACS relies on security measures from the chosen orchestrator, while AWS has a lot of encryption and integration options. One of the ultimate aims of containerization is DevOps, and each provider has a number of tools for DevOps integration apart from the common ones like Jenkins, Solano CI, TeamCity, etc. When it comes to pricing, Google lets you have up to 5 nodes for free, but after that, charging starts on per cluster per hour basis; AWS and ACS let you use the service for free and charge for the resources you use. In conclusion, there is no clear winner for CaaS.
ACS is getting a lot of interest from organizations going for containerization, especially Docker containers. There are several reasons for the increasing interest like Microsoft’s reliability, the ease with which it allows to develop services across platforms, optimized use of open-source tools and technologies for Azure, and inherent container advantage - “faster than VM”. Most people complain about the application portal because of the lag; a lot of us face the problem. This could be because of the excessive use of animation on the portal, which makes the web browser a little lethargic. But I won’t mind little sluggishness for the reduced efforts of orchestrating and managing the clusters. Plus, you don’t need to pay upfront to use container service; there are no termination charges, and you pay only for the resources you use, like the database, app services, number of virtual machines, etc. In July 2017, Microsoft introduced Azure Container Instances (ACI) with features like per-second billing, compute-on-demand, scheduling of multi-container groups, and direct mounting of Azure files shares and custom sizes which make it the best option for complex microservices applications.
I like Azure Container Service because it gives you the freedom to go with tools of your choice which makes it easy to adopt containers in the cloud. What it gives you is “the true essence of agile DevOps.”