Container CI/CD using Jenkins and Kubernetes on Azure Kubernetes Service (AKS)

Azure Container Registry
Azure Cosmos DB
Azure Kubernetes Service (AKS)
Azure Monitor

Solution ideas

This article is a solution idea. If you'd like us to expand the content with more information, such as potential use cases, alternative services, implementation considerations, or pricing guidance, let us know by providing GitHub feedback.

Containers make it easy for you to continuously build and deploy applications. By orchestrating the deployment of those containers using Azure Kubernetes Service (AKS), you can achieve replicable, manageable clusters of containers.

By setting up a continuous build to produce your container images and orchestration, you can increase the speed and reliability of your deployment.

Jenkins and Grafana are trademarks of their respective companies. No endorsement is implied by the use of these marks.

Jenkins can be deployed on an Azure Virtual Machine. Alternately, Jenkins X can be deployed on Azure Kubernetes Service. Jenkins X is Jenkins sub project that can be deployed directly to cloud native platforms.

Dynamic build agents for Jenkins can be provisioned on Azure Kubernetes Service. The Jenkins agent connects to the Jenkins controller. The Jenkins controller can provision tasks to run on Jenkins agents.

Potential use cases

  • Modernize application development practices to a microservice, container-based approach.
  • Speeding up application development and deployment lifecycles.
  • Automating deployments to test or acceptance environments for validation.

Architecture

Diagram showing container CI/CD using Jenkins and Kubernetes on Azure Kubernetes Service.

Download a Visio file of this architecture.

Dataflow

  1. Developer makes changes to the application source code.
  2. Developer commits the code changes to GitHub.
  3. Continuous integration triggers Jenkins.
  4. Jenkins launches the build job using Azure Kubernetes Service (AKS) for a dynamic build agent.
  5. Jenkins builds and pushes Docker container to Azure Container Registry.
  6. Jenkins deploys your new containerized app to Kubernetes on Azure.
  7. The app connects to Azure Cosmos DB.
  8. Grafana displays visualization of infrastructure and application metrics via Azure Monitor.

Components

Deploy this scenario

Next steps