This project demonstrates the deployment of a microservice application to Azure Kubernetes Service (AKS) using Azure DevOps for CI/CD and ArgoCD for GitOps-based continuous deployment.
For a detailed explanation of the steps involved, please refer to this blog post.
This repository contains the source code and deployment scripts for a microservice application. The deployment process leverages Azure DevOps for building and deploying the application, and ArgoCD for managing Kubernetes resources in a GitOps manner.
The architecture consists of the following components:
- Microservice Application: A sample microservice application. (example-voting-app)
- Azure Kubernetes Service (AKS): Managed Kubernetes cluster in Azure.
- Azure DevOps: CI/CD platform for building and deploying the application.
- ArgoCD: GitOps continuous delivery tool for Kubernetes.
Before you begin, ensure you have the following:
- An Azure account with necessary permissions to create resources.
- Azure DevOps organization and project.
- AKS cluster.
- ArgoCD installed on your AKS cluster.
kubectl
configured to interact with your AKS cluster.
Clone this repository to your local machine using:
git clone https://github.com/ChetanThapliyal/Argocd-AKS-microservices-deployment
cd Argocd-AKS-microservices-deployment
- Create a new pipeline in Azure DevOps.
- Link the repository and configure the pipeline using the
azure-pipelines.yml
file provided in this repository. - Set up service connections for Azure and Docker Registry as required by the pipeline.
- Install ArgoCD on your AKS cluster if not already installed. Follow the official documentation for installation instructions.
- Create a new application in ArgoCD that points to this repository.
- Once the pipeline is configured and run successfully, it will build the Docker images and push them to the container registry.
- ArgoCD will automatically sync the Kubernetes manifests from the repository and deploy the application to AKS.
After deployment, you can access the microservice application via the external IP address of the AKS service. Use kubectl get services
to find the external IP.