Skip to main content
Let’s examine the ArgoCD architecture at a high level and explain how its components, flows, and integrations work together to implement GitOps for Kubernetes. ArgoCD runs inside a Kubernetes cluster as a set of controllers and services. Users interact with ArgoCD via the web UI or the CLI to create Application resources, manage Projects, configure single sign-on (SSO), and define sync behavior (manual, automatic, pruning, self-heal, etc.). The desired state lives in Git, and ArgoCD continuously monitors Git repositories to reconcile cluster state with that desired state. Key concepts and flows
  • Desired state in Git
    • Manifests (YAML), Helm charts, Kustomize overlays, Jsonnet, or Helmfile live in your Git repositories. These repositories act as the single source of truth.
  • Continuous reconciliation
    • ArgoCD continuously compares the desired state in Git with the actual state in the target clusters. When drift is detected, the reconciliation loop can apply changes according to the sync policy (manual or automatic).
  • Webhooks for faster sync
    • You can configure webhooks on your Git provider to notify ArgoCD of push/merge events. Webhooks prompt immediate refresh and reconciliation rather than waiting for the next polling interval.
  • API server (gRPC + REST)
    • ArgoCD exposes gRPC endpoints and a REST interface (via gRPC-gateway). These are used by the UI, CLI (argocd), and automation tools.
  • Component responsibilities
    • repo-server: clones repositories and renders manifests (Helm/Kustomize).
    • application-controller: performs the continuous reconciliation between Git and clusters.
    • argocd-server: serves the UI, CLI API, and authentication endpoints.
    • Redis (optional): used for caching and work queues.
    • SSO connectors (optional): Dex or external OIDC providers for authentication.
  • Multi-cluster control plane
    • A single ArgoCD control plane can manage deployments across multiple target clusters. Cluster credentials are stored in the control plane and used to apply manifests to registered clusters.
  • Observability & notifications
    • ArgoCD exports Prometheus metrics for monitoring (visualized in Grafana).
    • ArgoCD Notifications supports triggers, templates, and integrations (Slack, Teams, email, GitHub, etc.) to alert teams about syncs, health changes, and failures.
A diagram of ArgoCD architecture showing the ArgoCD server (octopus) pulling from GitHub and receiving webhook events, being managed via UI/CLI and CI, and syncing/deploying manifests to multiple Kubernetes clusters (prod, dev, staging). It also shows notifications/metrics flowing to tools like Teams/Gmail/Slack/Grafana/Prometheus.
How the reconciliation loop works
  1. ArgoCD reads Application manifests that reference Git repositories and target clusters.
  2. The repo-server clones the repository and renders manifests for the specified revision (branch, tag, commit).
  3. The application-controller compares the rendered desired state with the live cluster resources.
  4. If divergence (drift) is detected, the controller either:
    • Enqueues a sync operation (automatic sync policy), or
    • Marks the Application as OutOfSync for an operator to manually sync (manual policy).
  5. During sync, ArgoCD applies the manifests to the target cluster and can perform pruning (remove resources no longer in Git) and self-heal (auto-correct drift).
Common sync commands
# Create an Application (example)
argocd app create my-app \
  --repo https://github.com/example/repo.git \
  --path k8s/overlays/prod \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace my-namespace

# Trigger a manual sync
argocd app sync my-app

# Add a target cluster to ArgoCD control plane
argocd cluster add my-kube-context
Webhooks and refresh behavior
  • Polling vs. webhook: ArgoCD can poll Git repositories on a periodic interval, but configuring webhooks on your Git provider (GitHub, GitLab, Bitbucket) reduces latency by informing ArgoCD immediately when changes occur.
  • Webhook flow:
    1. Developer pushes/merges to Git.
    2. Git provider sends webhook to ArgoCD.
    3. ArgoCD refreshes its cache and triggers reconciliation for affected Applications.
Security considerations
Store cluster credentials and Git access tokens securely. Avoid committing tokens or kubeconfig files into repositories. Use Kubernetes secrets, sealed-secrets, or external secret managers (Vault, AWS Secrets Manager, etc.) to protect sensitive credentials.
ArgoCD components and responsibilities (concise)
ComponentPrimary responsibilityNotes
argocd-serverServes UI and API endpointsgRPC + REST (gRPC-gateway)
repo-serverClones and renders manifestsRuns Helm/Kustomize rendering
application-controllerContinuous reconciliationDetects drift and triggers syncs
Redis (optional)Caching and work queuesImproves performance at scale
SSO connectorsAuthentication (Dex/OIDC)Integrates external identity providers
NotificationsAlerts on eventsIntegrates with Slack, Teams, email, etc.
Typical actors and integrations
Actor / IntegrationRole
Users (UI / CLI)Create and manage Applications and Projects
Git repositoriesSource of truth containing desired manifests
WebhooksNotify ArgoCD of Git events for immediate refresh
ArgoCD APIConsumed by UI, CLI, and automation pipelines
App controller & repo-serverCore controllers doing reconciliation and rendering
Target clustersActual Kubernetes clusters where ArgoCD applies resources
Observability systemsPrometheus/Grafana for metrics and dashboards
Notification channelsSlack, Teams, email, GitHub notifications
Best practices and tips
  • Model each deployable component as an ArgoCD Application and group related Applications into Projects for access control and separation.
  • Use Git branching strategies (feature, release, main) and tie ArgoCD Applications to specific branches or tags for predictable deployments.
  • Enable webhooks for faster continuous delivery; rely on Prometheus metrics and Grafana dashboards for operational visibility.
Links and references This architecture enables a Git-centric, observable, and auditable continuous delivery control plane capable of managing multiple Kubernetes clusters from a single ArgoCD deployment.

Watch Video