A break up of Azures full container services offering and how they fit in with development and deployment life cycle of containers.

A review of Azures container services offering and how they fit in with development and deployment lifecycle of containers.

Containers are an isolated, resource controlled, manageable operating environment. An application can run without affecting the system, and without the system affecting the application. In production, containers are never deployed as a single container since they are ephemeral but as a cluster that can to be managed maintained and updated.

Azure Provides container services in the cloud with several offerings. Each built with a specific goal to cohesively work together to build, deploy and manage containers in production.

1. Azure Container instance (ACI)
2. Azure Kubernetes Service (AKS)
3. Azure Container Registry (ACR)
4. Service Fabric Cluster
5. Web App For Containers
6. Docker on Ubantu Server

I will be focusing on ACI, AKS and ACR service offerings.

Azure Container Instance (ACI)
Azure Container Instances are built for scenarios that operate in isolated containers. They are not for production, which requires higher level orchestration capabilities.

Unlike Azure Kubernetes Service, Azure Container instances do not require virtual machine to run a container instance. You do however get to choose the computing resources dedicated to your container.

  • The number of cors – Between 1 and 4
  • Memory capacity – 1 to 14 GBs

Additionally, Azure provides networking flexibility with two options. A public DNS address and specific port association, or having a closed private system. Currently, there is no ability to connect to a virtual network, though it seems to be a functionality being actively worked on.

Both Windows and Linux container are currently supported.

While ACI instances are quick and simple to deploy, ACI does allow for some level of orchestration using Kubernetes. The ACI connector is an open-source connector for Kubernates that enables K8S clusters to deploy to Azure container instances. This enables for quick instantaneous containers orchestrated by K8S without having the VM infrastructure to manage.
Azure container instances can be used for quick unpredictable scaling, whereas VMs are more for predictable scaling and more resource utilization. Workloads can easily migrate back-and-forth between these underlying infrastructure models.

Azure Kubernetes Service (AKS)
While running containers on a single host to develop and test applications is acceptable, In production, we do not have the same liberties as we need to ensure that ourĀ applications:

  • Are fault-tolerant.
  • Can scale, and do this on-demand.
  • Use resources optimally.
  • Can discover and communicate with other applications and resources.
  • Are accessible from the external world.
  • Can update/rollback without any downtime.

Container orchestration provides us these features. Kubernetes is one such orchastrator.

“This new service features an Azure-hosted control plane, automated upgrades, self-healing, easy scaling, and a simpler user experience for both developers and cluster operators. With AKS, customers get the benefit of open source Kubernetes without the complexity and operational overhead.”

AKS cluster can utilize the Azure container registry (ACR) to upload and manage container images.

To connect to the Kubernetes cluster from a client computer, You can use kubectl, the Kubernetes command-line client. If you’re using Azure CloudShell, kubectl is already installed. Since AKS utilizes ACR authentication should be set up for communication between these two services.

After an application has been deployed in Kubernetes, When updating, the update is staged so that only a portion of the deployment is concurrently updated, and the interruption to the application is minimized to where if properly managed it is unnoticeable to end users. It also provides a rollback mechanism if a deployment failure occurs.

Azure Container Registry (ACR)
Azure container registry is a managed Docker registry service based on the open-source Docker registry 2.0. You can create and maintain Azure container registries to store manage and build your private Docker container images.

Use container registries in Azure with your existing resources. You can use your current container development and deployment pipelines. Use Azure Container Registry Build (ACR Build) to build container images in Azure. Build on demand, or fully automate builds with source code commit and base image update build triggers.

Azure Container Registry is not limited for AKS to build a kubernates cluster. it can also be utilized in:

  • Other scalable orchestration systems that manage containerized applications across clusters of hosts. DC/OS, Docker Swarm, and Kubernetes to name a few.
  • Azure services such as Azure Kubernetes Service (AKS), App Service, Batch, Service Fabric, and others.

Some components of the registry being:

Registry – Creates one or more container registries in your Azure subscription.
Repository – Which are groups of container images. One or more repositories belong to a single registry. Azure Container Registry supports multilevel repository namespaces. With multilevel namespaces, you can group collections of images related to a specific app, or a collection of apps to specific development or operational teams.
Image – Stored in a repository, each image is a read-only snapshot of a Docker container. Azure container registries can include both Windows and Linux images.

The Big Picture.

Below is an example of how Visual Studio can be utilized for the continuous integration and delivery in the development process. It is only one of many ways in how Azure containers, Kubernetes, and registry can integrate, for a more efficient, faster, deployment.

  1. Change application source code
  2. Commit Application Code
  3. Continuous integration triggers application build, container image build and unit tests
  4. Container image pushed to Azure Container Registry
  5. Continuous deployment trigger orchestrates deployment of application artefacts with environment specific parameters
  6. Deployment to Azure Container Service
  7. Container is launched using Container Image from Azure Container Registry
  8. Application Insights collects and analyses health, performance and usage data
  9. Review health, performance and usage information
  10. Update backlog item.

With container technology and its concepts changing how applications, and services are deployed and managed, utilizing the efficiencies and speed of the cloud, only increases the impact one can make.

To learn more about container concepts and kubernetes technology, visit the links below. I would also suggest taking few or one of the many Edx classes available online.

RESOURCES:

  • https://azure.microsoft.com/en-in/solutions/architecture/cicd-for-containers/
  • https://docs.microsoft.com/en-us/azure/container-registry/
  • https://docs.microsoft.com/en-us/azure/aks/
  • https://azure.microsoft.com/en-us/blog/introducing-azure-container-service-aks-managed-kubernetes-and-azure-container-registry-geo-replication/

Leave a Reply