-
Ensure you have the following tools deployed in your cluster:
- ArgoCD
- Argo Rollouts
- Cert-Manager
-
Install Kargo using Helm by following the official guide: Installing Kargo
This example demonstrates a "slightly realistic" scenario where there are two clusters:
- Cluster 1: Used for testing and UAT (User Acceptance Testing).
- Cluster 2: Dedicated to production.
Note for the OG'S: Ideally, there should be one cluster per environment, but to simplify, we are combining testing and UAT into one.
The deployment utilizes two simple Nginx images stored in my GitHub Packages. You can find the corresponding Dockerfile
in the ./dockerfiles
directory.
- The promotion strategy ensures that updates always target the latest version following SemVer (Semantic Versioning).
- The process covers updates both for:
- New image versions in the repository.
- New Git manifests added to the source control.
.
├── README.md
├── argocd-apps-of-apps # ArgoCD App of Apps pattern for managing apps with different clusters
│ ├── application.yaml # Main ArgoCD Application to deploy all apps
│ ├── apps-one # Subdirectory for environment-specific applications
│ │ ├── prod-us-east-1 # ArgoCD Application for production in US East 1
│ │ │ └── application.yaml
│ │ ├── prod-us-west-1 # ArgoCD Application for production in US West 1
│ │ │ └── application.yaml
│ │ ├── test # ArgoCD Application for testing
│ │ │ └── application.yaml
│ │ └── uat # ArgoCD Application for UAT
│ │ └── application.yaml
│ └── kustomization.yaml # Kustomize configuration for the Appof Apps
├── charts # Custom easy Helm charts for the deployment
│ └── helm-chart-own # Custom Helm chart for this project (ignore this its not need to check or review)
│ ├── Chart.yaml
│ ├── templates
│ │ ├── _helpers.tpl
│ │ ├── deployment1.yaml
│ │ └── deployment2.yaml
│ └── values.yaml # Default values for the Helm chart
├── dockerfiles # Folder where dockerfile sare stored
│ ├── Dockerfile1
│ └── Dockerfile2
├── kargo.yaml # Configuration file for Kargo
└── stages # Environment-specific configurations
├── prod-us-east-1 # Configuration for production in US East 1
│ ├── kustomization.yaml
│ ├── resources # Additional resources for the environment
│ │ └── resources.yaml
│ └── values.yaml # Values specific to this environment
├── prod-us-west-1 # Configuration for production in US West 1
│ ├── kustomization.yaml
│ ├── resources
│ │ └── resources.yaml
│ └── values.yaml
├── test # Configuration for testing
│ ├── kustomization.yaml
│ ├── resources
│ │ └── resources.yaml
│ └── values.yaml
└── uat # Configuration for UAT
├── kustomization.yaml
├── resources
│ └── resources.yaml
└── values.yaml
- Deploy ArgoCD, Argo Rollouts, and Cert-Manager in your cluster.
- Follow the Kargo Installation Guide.
- Configure your clusters as described in the scenario above.
- Deploy Kargo configuration:
kubectl apply -f kargo.yaml
- Deploy the ArgoCD "App of Apps":
kubectl apply -f argocd-apps-of-apps/application.yaml
To check documentation in general for Kargo check: