GitOps with ArgoCD: From Messy Pipelines to Declarative Deployments
BADJO Dibéa Koffi
Published on May 6, 2026
The Jenkins Era
Our pipeline was 2,000 lines of Groovy across 12 Jenkinsfiles. Each microservice had subtle differences. When a deployment failed at 2 AM, fixing it took 30 minutes of SSH and manual kubectl commands.
What Is GitOps?
Git is the single source of truth. The desired state of your cluster is declared in Git. ArgoCD continuously reconciles actual state with desired state.
ApplicationSet: One Template, All Services
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: microservices
spec:
generators:
- git:
repoURL: https://github.com/our-org/k8s-manifests
revision: main
directories:
- path: services/*
template:
metadata:
name: "{{path.basename}}"
spec:
source:
repoURL: https://github.com/our-org/k8s-manifests
path: "{{path}}"
destination:
server: https://kubernetes.default.svc
namespace: "{{path.basename}}"
syncPolicy:
automated:
prune: true
selfHeal: trueEvery directory under services/ becomes an ArgoCD Application automatically.
Rollbacks in 10 Seconds
git revert HEAD
git pushArgoCD syncs. The old version is running within 60 seconds.
What We Gained
| Metric | Jenkins | ArgoCD |
|---|---|---|
| Deploy time | 8-15 min | 2-3 min |
| Rollback time | 15-30 min | < 1 min |
| Pipeline code | 2,000 lines | 40 lines YAML |
| Failed deploys/month | 4-6 | 0-1 |
Comments
Stay Updated
Get my latest articles delivered straight to your inbox.
Related Articles
Zero-Downtime PostgreSQL Migrations on Kubernetes
A battle-tested strategy for schema migrations without locking tables or dropping connections.
Deploying LLM Inference on Kubernetes with vLLM
Serving a 13B model in production for under $200/month using smart scheduling and autoscaling.