Earlier I had written a series of posts on how to build a Continuous Deployment pipeline along with Continuous Integration for multi-container application using Docker and Visual Studio Team System (VSTS). Today I begin a new series of posts about building highly scalable application using Docker. While the earlier series was using Docker Swarm as an Orchestration Engine running in Azure Container Service (ACS), this series will be based on the Azure Container Service (AKS). AKS provides Kubernetes as managed service in Azure.
One of the reason for moving away from Docker Swarm is based on the recent announcement from Microsoft that Kubernetes is available as a new managed service. Kubernetes is becoming a de facto standard for container orchestration. Although Azure will support existing Docker Swam & DC OS cluster deployments, the future seems to be moving in the direction of Kubernetes.
I will be building this demo on top of the previous codebase. The pre-requisites mentioned in the earlier series are applicable here as well like VSTS account for Continuous Integration, Github as source code management tool, DockerHub account for storing Docker images. In fact I will be reusing the CI pipeline built in the earlier series to push images to DockerHub. The major change is the Azure subscription with the right privileges to create Kubernetes cluster.
What to expect during this series?
I will be focusing more on Azure Container Service features during this series. Some of the things I intend to cover include
- Provision Kubernetes cluster using AKS preview
- Understand concepts related to Kubernetes like namespace, pods and deployments, service etc.
- Deploy multi-container app to Kubernetes cluster
- Use Init Containers for managing dependent services across multiple containers
- Use Persistent Volumes (PV) and Persistent Volume Claims (PVC) with SQL Server 2017 on Linux with Azure Disk
- Manage Secrets in Kubernetes
- Manually Scale services using Kubernetes
- Manage secrets using Azure Key Vault
- Auto scale services using Kubernetes
- Monitor containers using Prometheus and Grafana
- Extend Kubernetes features using supporting tool like Helm, Istio etc
For now the list seems quite long. I am sure as I go along more tools and concepts will be clear and I will share them along the way.
Quick overview of the application
The demo application we will be using is built on ASP.NET Core framework and has a MVC front end and a basic web API. There is also SQL Server 2017 on Linux which acts as a persistent storage. All these 3 components are running inside Docker containers. As we go along we might add new features to the application which will help to showcase the power of Docker and Kubernetes along with key services provided by Azure.
I am excited to take this journey and hope the readers will also find it interesting. Get ready to play around with the Kubrnetes CLI using kubectl. Feel free to add any other related topic using the comments section and I will be happy to accommodate them during this series.
Until next time code with passion and strive for excellence.