
Vikram Sood
Mar 15, 2026 · 10 min read
Before GitOps, engineers ran custom kubectl commands directly from their laptops to debug and deploy. Nobody had a clear overview of what exact configurations were active in production. This led to persistent differences between staging and production, causing outages during standard updates.
To solve this, we declared the desired cluster state in a Git repository and configured ArgoCD to continuously sync the cluster state with Git. Here is an example of an application manifest:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: logistics-web-app
namespace: argocd
spec:
project: default
source:
repoURL: 'https://github.com/thinkalternate/logistics-app-infra.git'
targetRevision: HEAD
path: k8s/production
destination:
server: 'https://kubernetes.default.svc'
namespace: core-apps
syncPolicy:
automated:
prune: true
selfHeal: trueWith this configuration, changes are committed to Git, reviewed via Pull Requests, and automatically synced to the cluster in 30 seconds. Release cycle times plummeted from 2 weeks to daily, and deployment failures are reverted instantly by merging a simple revert commit.
Vikram Sood
Mar 15, 2026
10 min read
Mobile App Development