- Define an Argo CD Application CRD that maps Git/Helm sources to target clusters.
- Configure sync policies for automated GitOps (auto-sync, self-heal, prune).
- Deploy Helm charts through Argo CD and manage Helm value overrides.
- Use ApplicationSets to scale many Applications across clusters and environments.

- Developer pushes a change to Git.
- Argo CD detects the change and marks the Application “Out of Sync”.
- A platform engineer must manually open the Argo CD UI and click Sync to deploy.


- Hotfixes and deployments are delayed by manual steps.
- Manual
kubectledits introduce drift until reconciled. - Resources removed from Git are not pruned and can become orphaned.
- Mixed sync modes cause inconsistent environment behavior.

- Source: where manifests originate (Git repo path/revision or Helm chart + repo/OCI).
- Destination: where manifests are deployed (cluster server/cluster name and namespace).
Sync policies — automation for true GitOps
Argo CD supports automation options you should enable in production. The main options:
Example concise snippet to enable production-grade automation:
Enable
automated with selfHeal: true and prune: true in production to ensure Git changes are applied automatically, manual edits are reverted, and removed resources are pruned.source includes chart and repoURL (or an OCI reference). Argo CD caches the rendered manifests for diffs and drift detection, but it does not commit rendered manifests back to Git.
Two primary ways to supply Helm values:
helm.values— inline YAML embedded directly in the Application (good for small overrides).helm.valueFiles— reference files inside the repo (preferred for many or environment-specific overrides).
- Use
helm.valueFilesto keep overrides versioned and environment-specific. - Use
helm.valuesfor small, quick overrides (but prefer files for consistency). - Argo CD’s server-side rendering supports chart dependencies, templating, and helpers as a local Helm client would.

- list — static list of elements (good for a small, fixed set).
- git — one application per directory found in a Git repo (add a directory to create a new Application).
- cluster — one application per registered cluster (register a cluster to deploy to it).
- matrix/merge — combine generators (e.g., app × cluster combinations).
myapp-{{cluster}} to stamp unique Application names per element.

- Application CRDs map a source (Git or Helm chart) to a destination (cluster/namespace) and are grouped into Projects for RBAC.
- For production GitOps, enable
automatedplusselfHealandpruneto apply Git changes automatically, revert manual edits, and remove orphaned resources. - Argo CD renders Helm charts server-side. Use
helm.valuesfor small inline overrides andhelm.valueFilesfor versioned environment overrides. - ApplicationSets let you scale Application creation using generators (list, git, cluster, matrix), avoiding manual duplication.
- Argo CD documentation: https://argo-cd.readthedocs.io/
- ApplicationSet controller docs: https://argocd-applicationset.readthedocs.io/
- For a different GitOps perspective, compare with GitOps using Flux: https://learn.kodekloud.com/user/courses/gitops-with-fluxcd