ArgoCD

A declarative GitOps continuous delivery tool for Kubernetes that syncs cluster state to the desired state defined in a Git repository — making Git the single source of truth for deployments.

ArgoCD is a Kubernetes controller that continuously watches a Git repository and ensures your cluster's actual state matches what's declared in that repo. If someone manually modifies a Kubernetes resource ("drift"), ArgoCD detects it and either alerts or auto-corrects. This GitOps model makes every deployment auditable, reversible, and reproducible.

GitOps Model

The GitOps workflow:

  1. Developer merges a PR that updates a Kubernetes manifest (or Helm values)
  2. ArgoCD detects the change in Git (polling or webhook)
  3. ArgoCD applies the diff to the cluster
  4. ArgoCD reports sync status: Synced, OutOfSync, Degraded

No kubectl apply in CI pipelines, no direct cluster access needed by developers, full audit trail in Git history.

Core Concepts

  • Application — ArgoCD's CRD that links a Git repo/path to a cluster namespace
  • Sync — the act of applying Git state to the cluster
  • Sync Policy — manual (human clicks sync) or automated (ArgoCD syncs immediately on change)
  • Health Status — whether deployed resources are actually running correctly
  • AppProjects — RBAC scoping: which repos can deploy to which clusters/namespaces

Source Types

ArgoCD can sync from:

  • Raw Kubernetes YAML manifests
  • Helm charts (with values overrides)
  • Kustomize overlays
  • Jsonnet
  • Any tool via config management plugins

Multi-Cluster Management

One ArgoCD instance can manage multiple clusters — staging, production, different regions. ApplicationSets generate ArgoCD Applications programmatically across clusters from a single template, ideal for platform teams managing many tenant clusters.

ArgoCD vs Flux

Both implement GitOps for Kubernetes. ArgoCD has a richer UI and user-facing features; Flux is more lightweight, Kubernetes-native (uses CRDs exclusively), and has better multi-tenancy support. For teams that want a UI and easy onboarding, ArgoCD. For platform engineering teams that want a minimal controller, Flux.

Integration with CI

A common pattern: CI builds and pushes a Docker image, updates the image tag in the Helm values or manifest file in Git, and commits. ArgoCD detects the commit and deploys. CI never touches the cluster directly — it only updates Git.

  • Helm — primary packaging format ArgoCD deploys
  • Kubernetes — the platform ArgoCD manages
  • Pulumi — IaC for cluster infrastructure; ArgoCD for workload delivery
  • Hashicorp Vault — secrets injected into workloads that ArgoCD deploys

Subscribe to Sahil's Playbook

Clear thinking on product, engineering, and building at scale. No noise. One email when there's something worth sharing.
[email protected]
Subscribe
Mastodon