Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI/CD Pipeline Docker Kubernetes ArgoCD Python GitHub Actions


🚀 Overview

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%

🏗️ Architecture

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
└─────────────────────┘

🧰 Tech Stack

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

📁 Project Structure

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

⚙️ GitHub Actions Pipeline

Push to main
     ↓
🧪 Test & Lint     ← Python tests + Flake8
     ↓
🐳 Build & Push    ← Docker image → DockerHub
     ↓
📋 Update Manifest ← Image tag bumped in K8s YAML
     ↓
✅ Verify          ← Manifest validation

🚀 Quick Start

# 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

☸️ Deploy with ArgoCD

# 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

🔗 API Endpoints

Endpoint Method Description
/ GET Beautiful landing page
/health GET Health check — returns UP/DOWN
/api/info GET App info — version, stack, author

Built with ❤️ by Govind · Junior DevOps Engineer

⭐ Star this repo if it helped you!

trigger

About

Production-grade GitOps platform — ArgoCD + K8s + Docker + GitHub Actions

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages