~/ nmadiraju.com Amazon EKS · Argo CD core architecture
arrow_back Back to nmadiraju
Architecture Explorer · Delivery and operations

Argo CD's Control Plane, Taken Apart

Click any part to see what it does and what breaks without it, then follow one commit from git push to running Pods.

Argo CD in 60 seconds

  • What it is. Argo CD keeps clusters matching Git: it renders what Git says, compares that with what runs, and applies the difference.
  • No database. Git holds what should run, each cluster holds what runs, and Argo CD's own cluster holds its Applications. Redis is a throwaway cache.
  • Two triggers. A Git webhook refreshes the affected apps in seconds; a timer re-checks every app about every 3 minutes.
  • Small blast radius. Lose Redis and the cache rebuilds after a brief load spike. Lose the repo-server and syncs stall, but nothing is deleted.

1Explore Argo CD

Argo CD's control plane in an EKS cluster, between Git and a managed cluster Left, a developer and the UI, CLI and CI. Next, Git with branch main and a hydrated branch env/prod. In the middle, the EKS cluster ops with namespace argocd: API server, Dex, ApplicationSet controller, Redis, repo-server, commit-server, application-controller and notifications controller, above the cluster's Kubernetes API and etcd, which holds the Application objects. Right, the managed cluster prod-us with its Kubernetes API, Deployment web and Pods, and Slack below it. Priya · developer pushes to main UI · CLI · CI talk to the API server GIT · DESIRED STATE branch main apps/web · Helm acme/platform-config branch env/prod written by commit-server EKS CLUSTER ops · NAMESPACE argocd API server UI, CLI, webhooks, RBAC argocd-server · stateless Dex SSO federation optional · off the sync path ApplicationSet ctrl 1 template → N Applications generators: cluster, git, list Redis disposable · rebuilds repo-server fetches Git, renders YAML Helm · Kustomize · plugins commit-server pushes hydrated YAML optional · only Git pusher application-controller diff desired vs live, sync StatefulSet · timer ~3 min Notifications ctrl triggers + templates off the sync path Kubernetes API · etcd of cluster ops Application objects live here. Argo CD has no database. EKS CLUSTER prod-us Kubernetes API live state, watched Argo CD applies here Deployment web rolled by Kubernetes Pods Argo CD runs no containers Slack #deploys on-deployed messages once per revision

    2What broke? Check yourself

    Check yourself