This project demonstrates how to implement a GitOps architecture on a AKS cluster using ArgoCD, GitHub Actions and Jenkins. The primary focus is on creating an environment that is not only declaratively managed but also follows the Continuous Integration and Continuous Deployment (CI/CD) process. This ensures that changes are not only automatically applied but also thoroughly tested and deployed in a controlled manner.
- Terraform: Sets up the AKS cluster on Azure along with the Rancher VM.
- Jenkins: Applies Terraform resources on Azure.
- Sonarqube: Validates Terraform code before execution.
- ArgoCD: Used for GitOps deployment, synchronizing the AKS cluster state with definitions in the repository.
- Rancher: To monitor the AKS cluster.
- Apisix Gateway: Used to route and secure traffic to Java service in k8s.
- Prometheus: Used for monitoring and collecting metrics from Apisix.
- Grafana: Provides a visual dashboard to visualize and analyze metrics collected by Prometheus.
- GitHub Actions: Used to automatize the build/test flow.
- Docker: Used for building the Java image.
- Trivy: Tests the Java image for vulnerabilities.
- Newman: Runs the Postman integration testing collection.
- k6 by Grafana: Used for load testing the Java service.
- External Secrets: Manages the secrets synchronization between HashiCorp Vault and Kubernetes.
- Vault by HashiCorp: Stores secrets used in the cluster.
- Kubeseal: Encrypts Vault token.
- Helm: Used with ArgoCD to deploy the manifests taken from official repositories.
-
A push is made first time for Terraform code containing AKS and Rancher resources
-
Jenkins pipeline is triggered from GitHub Webhook
-
Java service is updated
-
Image delivery process in k8s cluster starts
Refer to the Change Log for changes history.













