Skip to content

pavangm196-devops/argocd-gitops-kubernetes-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitOps Kubernetes Platform with ArgoCD

A production-style GitOps platform deploying a 12-service microservices application on Kubernetes using ArgoCD, Kustomize, and automated sync policies — demonstrating real-world GitOps workflows.


Tech Stack

Kubernetes ArgoCD Kustomize Docker HTTPS PostgreSQL


What Problem This Solves

Manual kubectl apply deployments are error-prone, untracked, and hard to audit. This platform implements a GitOps workflow where Git is the single source of truth — every deployment is driven by a git commit, ArgoCD continuously reconciles cluster state with the declared state in the repo, and any configuration drift is automatically self-healed.


Architecture

┌─────────────────────────────────────────────────────────────────┐
│                        GitOps Workflow                           │
│                                                                  │
│   Developer                                                      │
│   pushes YAML  ──▶  GitHub Repo  ──▶  ArgoCD watches repo       │
│                      (source of       │                          │
│                        truth)         ▼                          │
│                                  ArgoCD syncs ──▶  Kubernetes   │
│                                  (automated        Cluster       │
│                                   prune +                        │
│                                   selfHeal)                      │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│              12-Service Microservices on Kubernetes              │
│                                                                  │
│  Frontend        Adservice        Cartservice                    │
│  Checkoutservice Currencyservice  Emailservice                   │
│  Loadgenerator   Paymentservice   Productcatalogservice          │
│  Recommendationservice            Shippingservice                │
│  ShoppingAssistantservice         VectorDB                       │
│                                                                  │
│  Base manifests (Kustomize) + Overlays (env-specific configs)    │
└─────────────────────────────────────────────────────────────────┘

Key Features / What I Built

  • 12 ArgoCD Application objects — each microservice has its own ArgoCD Application manifest with automated sync, pruning, and self-healing enabled
  • Kustomize-based config managementbase/ holds default manifests; overlays/ holds environment-specific patches (staging, production)
  • Automated sync policyprune: true removes stale resources; selfHeal: true automatically corrects manual changes made to the cluster
  • HTTPS + TLS security — documented in HTTPS-SECURITY.md; ingress configured with TLS termination
  • PostgreSQL included as a backing service with persistent volume configuration
  • VectorDB service included for AI/ML-ready workloads (shopping assistant with vector search)
  • Namespace auto-creation via CreateNamespace=true syncOption — no manual namespace setup needed
  • GitOps architecture documentedGITOPS-ARCHITECTURE.md and ARCHITECTURE.md explain the full design

Folder Structure

argocd-gitops-kubernetes-platform/
├── base/                          # Kustomize base manifests
│   ├── adservice/
│   ├── authservice/
│   ├── cartservice/
│   ├── checkoutservice/
│   ├── currencyservice/
│   ├── emailservice/
│   ├── frontend/
│   ├── loadgenerator/
│   ├── paymentservice/
│   ├── productcatalogservice/
│   ├── recommendationservice/
│   ├── shippingservice/
│   ├── shoppingassistantservice/
│   └── vectordb/
├── overlays/                      # Environment-specific patches
├── postgres/                      # PostgreSQL deployment manifests
├── argocd-app.yaml                # All 12 ArgoCD Application definitions
├── kustomization.yaml             # Root Kustomize config
├── ARCHITECTURE.md                # System architecture overview
├── GITOPS-ARCHITECTURE.md         # GitOps workflow documentation
├── HTTPS-SECURITY.md              # TLS/HTTPS setup guide
└── README.md

How to Run

Prerequisites

  • Kubernetes cluster running (local: kind/minikube, or cloud: EKS/GKE/AKS)
  • kubectl configured
  • ArgoCD installed in the cluster

Step 1 — Install ArgoCD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Access ArgoCD UI
kubectl port-forward svc/argocd-server -n argocd 8080:443

Step 2 — Deploy All Applications

# Clone this repo
git clone https://github.com/pavangm196-devops/argocd-gitops-kubernetes-platform.git
cd argocd-gitops-kubernetes-platform

# Apply all ArgoCD Application manifests
kubectl apply -f argocd-app.yaml

# Verify all apps are synced
kubectl get applications -n argocd

Step 3 — Verify Pods

# Check all services are running
kubectl get pods -n default

# Watch ArgoCD sync status
argocd app list

Step 4 — Kustomize Overlays (Environment-specific)

# Preview what will be deployed for a specific environment
kubectl kustomize overlays/production/

# Apply a specific overlay
kubectl apply -k overlays/production/

GitOps Sync Policy Explained

Each ArgoCD Application in argocd-app.yaml is configured with:

syncPolicy:
  automated:
    prune: true      # Deletes resources removed from Git
    selfHeal: true   # Reverts manual changes made directly to cluster
  syncOptions:
    - CreateNamespace=true  # Auto-creates namespace if missing

This means: the cluster always matches Git. No manual kubectl apply needed after initial setup.


What This Demonstrates

Skill How it's shown
GitOps ArgoCD-driven deployments, Git as single source of truth
ArgoCD Application CRDs, automated sync, prune, self-heal
Kustomize Base + overlays pattern for multi-environment config
Kubernetes 12-service microservices deployment, namespaces, services
Security HTTPS/TLS ingress configuration
Platform Engineering Scalable GitOps setup any team can operate

Author

Pavan G M — DevOps Engineer | AWS Certified Solutions Architect (SAA-C03) | CKA Certified

GitHub LinkedIn ..

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors