**ArgoCD** is a declarative, GitOps continuous delivery tool for [[Kubernetes]]. It monitors a Git repository containing Kubernetes manifests and automatically synchronises the live cluster state to match what's in Git — making Git the single source of truth for all cluster configuration.
---
### First Principle: If it's not in Git, it doesn't exist. The cluster should always reflect what Git says.
Traditional CI/CD pushes changes to clusters. GitOps flips this: the cluster pulls its desired state from Git. ArgoCD sits in the cluster, watches the Git repo, and reconciles any drift — whether caused by a deployment, an accidental manual change, or a partial failure.
---
### Key Considerations
- **Application Model**: ArgoCD defines Applications (CRDs) that specify a Git repo + path + target cluster/namespace. Each Application has a sync status (Synced/OutOfSync) and health status (Healthy/Degraded).
- **Sync Policies**: Applications can be set to auto-sync (changes in Git are applied immediately) or manual sync (operator approves changes). Most production deployments use manual sync for critical services.
- **Rollback**: Since every state is committed to Git, rollback is simply reverting a commit and letting ArgoCD re-sync. The complete deployment history is your Git log.
- **Multi-Cluster**: One ArgoCD instance can manage hundreds of clusters — making it the GitOps layer for [[Rancher]]-scale multi-cluster deployments.
- **ApplicationSets**: Automatically generate Applications from patterns — powerful for managing hundreds of environments consistently.
- **Notifications**: ArgoCD Notifications integrates with Slack, PagerDuty, and email to alert on sync failures or deployment completion.
---
### How It Fits
```
Developer commits to [[Gitea]] / Git
→ ArgoCD detects diff (Git vs live cluster)
→ ArgoCD syncs cluster to match Git
→ [[Prometheus]] / [[Grafana]] monitor the result
```
[[Kubernetes]] | [[Tekton]] | [[Gitea]] | [[Rancher]] | [[OpenTofu]] | [[Open Source Hyperscaler MoC]]