Azure Kubernetes Service (AKS) with Azure DevOps
Why worry about the complexity of container orchestration, when you can use AKS?
Azure Kubernetes Service (AKS) manages your hosted Kubernetes environment, making it quicker and easier for you to deploy and manage containerized applications. This service also eliminates the burden of ongoing operations and maintenance by provisioning, upgrading, and scaling resources on-demand, without taking your applications offline. AKS is the best way to simplify and streamline Kubernetes so you can scale your app development with real confidence and agility.
- Easy integration with Azure services such as Load balancing, Azure Blob Storage,
- Azure managed Databases, etc
- Hosted control plane
- Easy and secure containerized applications management
- Azure Active Directory integration for RBAC
- AKS management service is free of charge
Is there a one stop solution for CI/CD?
Yes, Azure DevOps has a lot of offerings for different phases of project management and delivery. We will focus on the overview of CI/CD for application deployments in AKS using Azure DevOps Pipelines. Azure pipelines help in automating the software build and release process and set up a continuous integration and delivery (CI/CD) process.
Other alternate CI/CD service providers are GitHub Actions, GitLab Pipelines, Jenkins, AWS codepipeline, GCP CI/CD …
All the big tech players want to provide a more integrated development environment as much as possible so that it’s easier for the teams to manage projects without having to sign-up for 10s of different services and increase integration complexity.
Especially cloud providers are trying their best to become a one-stop-shop for all the development and deployment tools so that their customers do not have to go anywhere to experience an integrated project life cycle. One such company is Microsoft, providing cloud offerings as Azure and DevOps solution as Azure DevOps.
Below is the kickstart of CICD in Azure DevOps, developing microservices as containerized images and deploying them to Azure Kubernetes Service.
Kickstart CICD Azure DevOps
- Azure Container Registry (ACR), AKS, and Azure SQL server
- Azure DevOps Team Project with Dockerized web application (eg. web app developed in Java, .Net core …)
- Build Pipeline to create docker image and upload it to container registry
- Release Pipeline to automatically deploy the application
- Developer pushes the source code to the Azure repository
- Azure pipeline triggers the build by cloning the application code from Azure repo to either Microsoft hosted build agent or self-managed build agents.
- Azure pipeline creates docker image with application code artifacts, tag the image, and push to Azure container registry
- Azure pipeline also can tag the application code in Azure repo that was containerized
- In the Database deployment phase, Azure release pipeline creates a ‘Execute SQL query: DACPAC task’ that executes scripts in the SQL server.
- In AKS Deployment Phase, the Azure release pipeline executes the ‘Create Deployment and Services in AKS’ task to create Kubernetes deployments & services.
- The process starts by pulling the latest image from the Azure container registry and deploy to the AKS cluster
- The deployment also creates an Ingress Controller inside the cluster which provisions an external load balancer and assigns IP to it.
- Finally, users access the web app with the load balancer IP.
(Helm charts can also be used as an alternative for deployments in AKS)
Azure Kubernetes Service (AKS) reduces the complexity and operational overhead of managing a Kubernetes cluster by offloading much of that responsibility to Azure. With Azure DevOps and Azure Container Services (AKS), we can build DevOps for dockerized applications by leveraging docker capabilities enabled on Azure DevOps Hosted Agents.