← All writing
Guide · 7 min

GitOps in Practice: Progressive Delivery with Argo CD

Why pull-based GitOps beats push-based pipelines for Kubernetes, and how sync waves plus Argo Rollouts give you safe, automated, reversible deployments.

#gitops#argocd#kubernetes#ci-cd

Push vs. Pull

In a classic push pipeline, CI runs kubectl apply against the cluster. That means CI holds production credentials, and the cluster’s real state can silently drift from what’s in Git.

GitOps inverts this: an in-cluster agent (Argo CD) pulls the desired state from Git and continuously reconciles. Git is the single source of truth, the cluster has no inbound credentials, and drift is auto-corrected.

Ordering with Sync Waves

Not everything can apply at once — CRDs before the controllers that use them, namespaces before the workloads inside them. Argo CD sync waves give you deterministic ordering:

metadata:
  annotations:
    argocd.argoproj.io/sync-wave: "-1"   # CRDs first

Progressive Delivery

A successful sync doesn’t mean a healthy release. Argo Rollouts replaces the Deployment with a canary strategy and automated analysis:

strategy:
  canary:
    steps:
      - setWeight: 20
      - pause: { duration: 2m }
      - analysis: { templates: [{ templateName: error-rate }] }
      - setWeight: 50
      - pause: { duration: 5m }

If the error-rate analysis breaches its threshold, the rollout aborts and reverts automatically — no human in the critical path at 3am.

Takeaways

  • Keep one repo (or path) as the source of truth per environment.
  • Health checks + analysis are what make automation trustworthy.
  • Everything is a pull request: reviewable, auditable, revertable.

Written by Ehsan Ullah — Cloud, DevOps & AI Engineer.