Kubernetes is currently the most demanded technology in almost every technical company to manage it’s application on a containerized platform. Hosting any application for the public requires high resources with full availability and zero downtime which is almost impossible to handle. The handling of this kind of infrastructure is complex and also effects the business of the application with frequent downtimes. It is the best practice to provide all this infrastructure as a managed service through various platforms. One of the best platforms that provide infrastructure as a service is Azure. Azure maintains the high availability of the resources and even ensures SLA agreement for the redundancy of it’s resources. Hence we can launch our complete cluster in the Virtual Machine services of the Azure.
While doing so , it is our responsibility to ensure the proper functioning of the Kubernetes master which is the crucial component of the cluster. There can be innumerable chances of failure of the master.
Hence , to ease this too Azure took responsibility of managing the master and all we have to do is to provide with the number of worker nodes that we require. Azure maintains the high availability of the master of K8s cluster and even allows some limitation to number of pods launched in each worker node to ensure the high availability of the worker nodes too. Wrapping up these services in a complete service , Azure launched a completely new services called as the Azure Kubernetes Service (AKS) which is a boom in the market. Almost every company that is used to of using the K8s cluster looks forward to switch to this AKS services so as to ensure high availability.
Azure launched this AKS services for general availability in June 2018.
Azure AKS gives developers greater flexibility, automation and reduced management overhead for administrators and developers. This is because it’s a managed service, which takes some of the management burden off the user. The major benefit is that AKS needs to be provided with the information of the number of worker nodes required. Apart from that the entire cluster is managed by the Azure. Hence we can focus on our deployment and the services of the Kubernetes. One more benefit that AKS provides is that it allocates a load balancer as a service which can be exposed for a deployment. Apart from all these Azure AKS is also a free service however you pay only for the virtual machines , storage and network resources.
To manage this complexity, Azure AKS provides an open source API to deploy, scale and manage Docker containers and container-based applications across a cluster of container hosts.
Various use cases for AKS include:
Shifting to containers :
Easily migrate existing application to container(s) and run within the Azure managed Kubernetes service (AKS).
- User converts existing application to container(s) & publishes container image(s)to the Azure Container Registry
- Using Azure Portal or command line, user deploys containers to AKS cluster
- Azure Active Directory is used to control access to AKS resources
- Easily access SLA-backed Azure Services such as Azure Database for MySQL using OSBA (Open Service Broker for Azure)
- Optionally, AKS can be deployed with a VNET virtual network
Microservices with AKS :
Use AKS to simplify the deployment and management of microservices based architecture. AKS streamlines horizontal scaling, self-healing, load balancing, secret management.
- Developer uses IDE such as Visual Studio to commit changes to GitHub
- GitHub triggers a new build on Azure DevOps
- Azure DevOps packages microservices as containers and pushes them to the Azure Container Registry
- Containers are deployed to AKS cluster
- Users access services via apps and website
- Azure Active Directory is used to secure access to the resources
- Microservices use databases to store and retrieve information
- Administrator accesses via a separate admin portal
Secure DevOps for AKS
DevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale.
- Developers rapidly iterate, test, and debug different parts of an application together in the same Kubernetes cluster.
- Code is merged into a GitHub repository, after which automated builds and tests are run by Azure Pipelines.
- Release pipeline automatically executes pre-defined deployment strategy with each code change.
- Kubernetes clusters are provisioned using tools like Helm charts that define the desired state of app resources and configurations.
- Container image is pushed to Azure Container Registry.
- Cluster operators define policies in Azure Policy to govern deployments to the AKS cluster.
AKS also finds it’s use cases in various architecture like machine learning , data streaming , etc.,.