This project demonstrates a real-world GitOps workflow for Kubernetes-based microservices. It features:
- Automated canary deployments and rollbacks (Argo Rollouts)
- Service mesh implementation (Istio)
- Automated CI/CD pipeline (GitHub Actions)
- Environment promotion (dev → staging → prod) via GitOps
- Microservices: Python/Flask, Docker
- CI/CD: GitHub Actions
- GitOps CD: ArgoCD
- Service Mesh: Istio
- Canary Deployments: Argo Rollouts
- Kubernetes cluster (local or cloud)
- Istio, ArgoCD, Argo Rollouts installed
- DockerHub account
- GitHub CLI (
gh
)
- Fork/clone this repo
- Add
DOCKERHUB_USERNAME
andDOCKERHUB_TOKEN
as GitHub secrets - Push code to
main
to trigger CI/CD pipeline
- Connect ArgoCD to
k8s/overlays/dev
(or staging/prod) in your repo - ArgoCD will auto-sync manifests to your cluster
- Canary deployments and rollbacks managed by Argo Rollouts
- Promote to staging/prod via PR merges between overlays
- Istio manages service mesh, traffic routing, and observability
services/ # Microservices source code
k8s/base/ # Base K8s manifests (Deployments, Services, Rollouts, Istio)
k8s/overlays/ # Kustomize overlays for dev, staging, prod
.github/workflows/ # CI/CD pipeline
This project is licensed under the MIT License. See LICENSE.
- gitops
- kubernetes
- argocd
- istio
- microservices
- canary-deployment
- github-actions
- argo-rollouts
For more details, see the official docs: