Interactive · Argo CD v3.5.x

One commit, all the way to a running pod

The architecture stays put; only its state changes. Thick grey lines are connections that always exist — the coloured line that lights on top is the one carrying traffic at this step. Detect works out that something needs doing and never touches your cluster. Act is the only half that changes anything.

← → to step click a box to jump to it click the current step again for details
Phase
Lines always exists git traffic control plane cache to your cluster Marker work inside one component
Argo CD architecture, stepped through one commit A fixed layout. On the left the SCM. In the middle a control-plane frame holding argocd-server, the Application custom resource, the application controller, the repo server, Redis, and the cluster etcd — which lists the records it holds and gains them as the walk proceeds. On the right a target cluster frame holding the Kubernetes API, its own etcd listing its records, and the workloads. The API server is the only component that touches etcd, and the workloads are created by the kubelet watching the API rather than the store. Stepping lights one flow at a time. CONTROL PLANE · NS ARGOCD TARGET CLUSTER Git source of truth argocd-server API · UI · webhook Application a CRD app controller the reconciler repo-server helm template Redis cache, not storage etcd · what the control plane persists kube API the only way in etcd only the API reaches it workloads kubelet watches the API

The steps, with the knob that governs each

#HopWhat happensSetting

Verify it against your own install

Claim on this pageHow to check it
Refresh is an annotation, not an RPCkubectl get app <name> -n argocd -o jsonpath='{.metadata.annotations}'
Two queues, tuned separatelykubectl get deploy argocd-application-controller -n argocd -o yaml | grep processors
The refresh interval and its jitterkubectl get cm argocd-cm -n argocd -o jsonpath='{.data.timeout\.reconciliation}'
Redis holds no durable statekubectl delete pod -l app.kubernetes.io/name=argocd-redis -n argocd
The sync operation is on the objectkubectl get app <name> -n argocd -o jsonpath='{.status.operationState.phase}'