argoproj/argo-cd
Deployment
How Argo CD itself gets installed into a cluster, and how releases are cut.
Installation bundles
The repo ships several install bundles under manifests/. They are all generated artifacts; the source of truth is the Kustomize bases in manifests/base/.
| Bundle | What it installs |
|---|---|
manifests/install.yaml |
Standard cluster-wide install (the file the README's quick-start uses). |
manifests/namespace-install.yaml |
Namespace-scoped install (only manages Apps in its own namespace). |
manifests/core-install.yaml |
"Core" install with no API server / UI / Dex — controller-only, for users running argocd app … in --core mode. |
manifests/install-with-hydrator.yaml |
Same as install.yaml but adds the commit server and enables the manifest hydrator. |
manifests/core-install-with-hydrator.yaml |
Core install + hydrator. |
manifests/namespace-install-with-hydrator.yaml |
Namespace + hydrator. |
manifests/cluster-install/ |
Kustomize overlay for cluster-wide install. |
manifests/cluster-install-with-hydrator/ |
Cluster + hydrator overlay. |
manifests/ha/ |
HA install with Redis Sentinel + multiple replicas. |
manifests/dev-tilt/ |
Local-development overlay used by Tiltfile. |
The CRDs live under manifests/crds/ and are referenced by every bundle.
Building the bundles
hack/update-manifests.sh (invoked by make manifests) re-renders all of the bundle YAMLs using kustomize build. Never edit the rendered YAMLs by hand — the next make manifests will overwrite them.
CRD size and --server-side
The Application CRD with all the annotations and OpenAPI schema is large enough that kubectl apply -f install.yaml fails the default client-side annotation size limit. The README directs users to use:
kubectl apply -n argocd --server-side --force-conflicts -f manifests/install.yamlThis limitation is also called out in manifests/install.yaml's README.
HA install
manifests/ha/ ships:
- A Redis Sentinel cluster (HAProxy + Redis pods) instead of a single Redis Deployment.
- Multiple replicas of the API server with anti-affinity rules.
- Multiple replicas of the application controller with sharding flags.
- Optional resource requests/limits sized for production.
Release pipeline
.github/workflows/release.yaml plus the helper workflows (init-release.yaml, image.yaml, image-reuse.yaml) cut releases from a tag. goreleaser (.goreleaser.yaml) builds the CLI cross-platform binaries. Container images are built via the image.yaml workflow and pushed to quay.io/argoproj/argocd and ghcr.io/argoproj/argocd.
Backports
Patches to active release branches go through the cherry-pick workflows (.github/workflows/cherry-pick.yml, cherry-pick-single.yml). Maintainers trigger them by commenting on a merged PR.
Helm chart
The official Helm chart lives in the sibling repo argoproj/argo-helm, not in this one. The chart consumes the same manifests/ artifacts.
Running locally
For dev, the Procfile + goreman start workflow is the fastest way (no real cluster needed for most paths). For cluster-style local development, Tiltfile brings everything up inside a k3d/kind cluster.
See also
- Getting started — how to build and run from source.
- features/manifest-hydrator — the bundle variants that include the hydrator.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.