Production-grade GitOps Continuous Delivery Platform using ArgoCD, Kubernetes, Docker and GitHub Actions. Git is the single source of truth — every deployment is automated, audited and self-healing.
Author : Govind
Stack : Flask + Docker + Kubernetes + ArgoCD + GitHub Actions
Strategy : GitOps — Git as single source of truth
Environments: dev + prod (Kustomize overlays)
Uptime SLA : 99.9%Developer pushes code
↓
┌─────────────────────┐
│ GitHub Actions │ ← Lint · Test · Build · Push
└────────┬────────────┘
↓
┌─────────────────────┐
│ DockerHub │ ← govinddevopsdocker/gitops-app
└────────┬────────────┘
↓
┌─────────────────────┐
│ Manifest Updated │ ← K8s YAML image tag bumped
└────────┬────────────┘
↓
┌─────────────────────┐
│ ArgoCD Detects │ ← Git drift detected
│ Drift & Syncs │ ← Auto self-heal
└────────┬────────────┘
↓
┌─────────────────────┐
│ Kubernetes Cluster │ ← Rolling update
│ dev / prod │ ← Zero downtime
└─────────────────────┘
| Tool | Purpose |
|---|---|
| 🐍 Flask | Lightweight Python web app |
| 🐳 Docker | Multi-stage optimized container |
| ☸️ Kubernetes | Container orchestration |
| 🔄 ArgoCD | GitOps continuous delivery |
| ⚙️ GitHub Actions | CI pipeline — test, build, push |
| 📦 Kustomize | Multi-environment K8s configs |
| 🐧 Linux | Underlying infrastructure |
gitops-argocd-delivery-engine/
├── 📁 app/
│ ├── app.py ← Flask application
│ ├── requirements.txt ← Python dependencies
│ └── templates/
│ └── index.html ← Beautiful UI
├── 📁 k8s/
│ ├── base/
│ │ ├── deployment.yaml ← K8s Deployment
│ │ ├── service.yaml ← K8s Service
│ │ └── kustomization.yaml ← Base kustomize
│ └── overlays/
│ ├── dev/ ← Dev environment
│ └── prod/ ← Prod environment
├── 📁 argocd/
│ └── application.yaml ← ArgoCD Application
├── 📁 .github/workflows/
│ └── ci-cd.yml ← GitHub Actions pipeline
├── Dockerfile ← Multi-stage build
└── README.md
Push to main
↓
🧪 Test & Lint ← Python tests + Flake8
↓
🐳 Build & Push ← Docker image → DockerHub
↓
📋 Update Manifest ← Image tag bumped in K8s YAML
↓
✅ Verify ← Manifest validation
# Clone the repo
git clone https://github.com/govinddevops/gitops-argocd-delivery-engine.git
cd gitops-argocd-delivery-engine
# Run locally with Docker
docker build -t gitops-app .
docker run -p 5000:5000 gitops-app
# Open in browser
http://localhost:5000# Install ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Apply ArgoCD Application
kubectl apply -f argocd/application.yaml
# Access ArgoCD UI
kubectl port-forward svc/argocd-server -n argocd 8080:443| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Beautiful landing page |
/health |
GET | Health check — returns UP/DOWN |
/api/info |
GET | App info — version, stack, author |
trigger