Skip to content

devopsgeek1979/gh-devops-repo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 DevOps End-to-End CI/CD Pipeline with GitOps (ArgoCD + Terraform)

Shashi Vashisht
DevOps Engineer | Linux | Kubernetes | Automation


📌 Project Overview

This project demonstrates a production-grade DevOps pipeline implementing:

  • ✅ CI/CD using GitHub Actions
  • ✅ Docker-based application delivery
  • ✅ GitOps deployment model
  • ✅ Kubernetes orchestration
  • ✅ ArgoCD for continuous deployment
  • ✅ Terraform for infrastructure provisioning

This architecture reflects real-world enterprise DevOps practices.


🏗️ Architecture

Developer → GitHub → CI (Build/Test) → DockerHub
        → CD updates GitOps Repo → ArgoCD → Kubernetes Cluster

⚙️ Tech Stack

Category Tools Used
CI/CD GitHub Actions
Containerization Docker
Orchestration Kubernetes
GitOps ArgoCD
IaC Terraform
Backend App Python (Flask)

📁 Repository Structure

.
├── app/                      # Flask application
├── Dockerfile               # Container build
├── requirements.txt         # Python dependencies
├── .github/workflows/       # CI/CD pipelines
├── assets/                  # Images (profile, diagrams)
└── README.md

🔄 CI/CD Workflow Explained

🔹 Continuous Integration (CI)

Triggered on every push:

  • Code checkout
  • Build Docker image
  • Tag image using commit SHA
  • Push image to DockerHub
docker build -t <username>/demo-app:${{ github.sha }}
docker push <username>/demo-app:${{ github.sha }}

🔹 Continuous Deployment (CD - GitOps)

Instead of deploying directly:

  1. CI updates GitOps repository
  2. ArgoCD detects changes
  3. Automatically syncs with Kubernetes

👉 This ensures:

  • Declarative deployments
  • Version-controlled infrastructure
  • Easy rollback capability

🚀 Application Details

Endpoints

Endpoint Description
/ Health check
/version App version

🐳 Running Locally

Build Docker Image

docker build -t demo-app .

Run Container

docker run -p 5000:5000 demo-app

Access:

http://localhost:5000

☸️ Kubernetes Deployment (GitOps)

Deployment is handled via:

  • GitOps repo (separate)
  • ArgoCD Application
  • Kubernetes manifests

Example:

image: your-docker/demo-app:<commit-sha>

🌍 Terraform (Infrastructure)

Infrastructure provisioning includes:

  • Compute resources (EC2 / K8s nodes)
  • Networking (VPC, subnets)
  • IAM roles

🔐 Secrets Management

Handled via GitHub Secrets:

  • DOCKER_USERNAME
  • DOCKER_PASSWORD

📊 Key DevOps Concepts Demonstrated

  • GitOps (ArgoCD)
  • Immutable deployments
  • CI/CD pipeline design
  • Infrastructure as Code (Terraform)
  • Container lifecycle management
  • Separation of concerns (App vs Infra vs GitOps)

🧠 Interview Explanation (Use This)

“I implemented a GitOps-based CI/CD pipeline where GitHub Actions builds Docker images, pushes them to DockerHub, updates a GitOps repository, and ArgoCD handles automated deployment to Kubernetes with self-healing enabled.”


🚀 Future Enhancements

  • Helm charts for templating
  • Multi-environment setup (dev/stage/prod)
  • Prometheus + Grafana monitoring
  • GitHub OIDC (no static secrets)
  • ArgoCD RBAC & Projects
  • Canary deployments

📸 Screenshots (Optional)

Add:

  • ArgoCD dashboard
  • Pipeline execution
  • Kubernetes pods

Place inside:

assets/screenshots/

🤝 Connect With Me


⭐ If you like this project

Give it a ⭐ on GitHub — it helps a lot!


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors