Skip to content

kushalesh/gitops-platform-argocd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ gitops-platform-argocd

Argo CD Kubernetes License: MIT CI

Production-grade Argo CD GitOps control plane β€” app-of-apps + ApplicationSets, multi-environment, progressive delivery with Argo Rollouts, secrets via Sealed Secrets / External Secrets Operator.


✨ Highlights

  • 🌳 App-of-apps root + ApplicationSets for scalable multi-tenant management
  • 🌐 Multi-env: dev / staging / prod via list & matrix generators
  • 🚦 Progressive delivery: Argo Rollouts canary + blue-green examples with Prometheus analysis
  • πŸ” Secrets: External Secrets Operator (GCP Secret Manager via Workload Identity) + Sealed Secrets
  • πŸ‘₯ RBAC: AppProjects scoping access, OIDC-ready
  • πŸ”„ Drift detection + auto-heal + automated sync with retry/backoff
  • πŸ” Sync waves for ordered rollout across environments
  • βœ… CI gates: yamllint, kustomize build, kubeconform schema validation

οΏ½οΏ½ Repository Layout

.
β”œβ”€β”€ bootstrap/               # One-time install: Argo CD Helm values + root app-of-apps
β”‚   β”œβ”€β”€ argocd-install.yaml
β”‚   β”œβ”€β”€ values.yaml
β”‚   └── root-app.yaml        # Apply once β†’ bootstraps everything else
β”œβ”€β”€ projects/                # AppProjects (RBAC scopes)
β”‚   β”œβ”€β”€ platform.yaml        # Cluster-wide infra (ingress, observability, policy)
β”‚   └── apps.yaml            # Tenant workloads (with developer role)
β”œβ”€β”€ applicationsets/         # Scalable app generation
β”‚   β”œβ”€β”€ projects.yaml        # Apply AppProjects from git
β”‚   β”œβ”€β”€ platform-addons.yaml # Same addons across all envs
β”‚   └── microservices.yaml   # Matrix: services Γ— environments
β”œβ”€β”€ apps/                    # Sample app manifests (Kustomize)
β”‚   β”œβ”€β”€ base/
β”‚   └── overlays/{dev,staging,prod}/
β”œβ”€β”€ rollouts-examples/       # Argo Rollouts: canary + blue-green
β”‚   β”œβ”€β”€ canary/
β”‚   └── blue-green/
β”œβ”€β”€ secrets/                 # ESO + Sealed Secrets samples
└── .github/workflows/       # CI: yamllint, kustomize, kubeconform

πŸš€ Bootstrap (One-Time)

# 1. Install Argo CD
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd argo/argo-cd -n argocd --create-namespace -f bootstrap/values.yaml

# 2. Apply the root app-of-apps β€” Argo takes over from here
kubectl apply -f bootstrap/root-app.yaml

# 3. (Optional) Login to UI
argocd login argocd.platform.example.com --sso

🌳 The App-of-Apps Pattern

flowchart LR
  Root[root Application] --> AS[ApplicationSets]
  AS --> Projects[AppProjects]
  AS --> Addons[platform-addons-{dev,staging,prod}]
  AS --> Apps[microservices: 3 svcs Γ— 3 envs = 9 apps]
  Addons --> AddonRepo[(k8s-platform-addons repo)]
  Apps --> AppRepo[(microservices-demo-app repo)]
Loading

One root β†’ ApplicationSets β†’ ~15 generated Applications. Add a new service or environment β†’ automatically rendered.

🚦 Progressive Delivery (Argo Rollouts)

Strategy Use Case Example
Canary (NGINX traffic split + Prometheus analysis) Stateless web services rollouts-examples/canary/
Blue-green (preview service + manual promote) Risky migrations, schema changes rollouts-examples/blue-green/

Analysis templates query Prometheus for success-rate & latency, auto-rollback on regression.

πŸ” Secrets Strategy

flowchart TB
  Dev[Developer] --> Git[git commit ExternalSecret CR]
  Git --> Argo[Argo CD]
  Argo --> ESO[External Secrets Operator]
  ESO --> WI{Workload Identity}
  WI --> GSM[GCP Secret Manager]
  GSM --> K8sSecret[K8s Secret in cluster]
  K8sSecret --> Pod[Pod]
Loading
  • Plain text never in git β€” only references
  • Workload Identity β€” no SA keys
  • Sealed Secrets as fallback for clusters without ESO

πŸ‘₯ RBAC Model

Project Who Permissions
platform platform-admins Cluster-wide, all resources
apps app-developers sync + get on apps in apps/* (no delete)

πŸ“œ License

MIT β€” see LICENSE.


Author: Kushalesh β€” Senior GKE Platform Engineer

About

πŸš€ Production Argo CD GitOps platform β€” app-of-apps, ApplicationSets, Argo Rollouts, External Secrets, multi-env.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors