Bootstrap
Two scripts live in argocd/:
argocd-init.sh
One-shot install — creates the argocd namespace and installs the official argo/argo-cd Helm chart (pinned version in the script) with overrides from values-argocd.yaml:
./argocd/argocd-init.sh
What it does:
- Creates the
argocdnamespace if missing. - Adds
https://argoproj.github.io/argo-helmand runshelm upgrade --install --version <pinned>. - Waits for the
argo-cd-argocd-serverDeployment to be available.
Re-running it is idempotent and safe (uses helm upgrade --install).
After the install, apply the bootstrap secrets that ArgoCD does not manage itself:
kubectl apply -f argocd/meta/gitlab-repo-creds.yaml
kubectl apply -f argocd/meta/gitlab-oci-repo-creds.yaml
kubectl apply -f argocd/meta/kargo-gitlab-creds.yaml
kubectl apply -f argocd/meta/cluster-main-application.yaml
sync-apps.sh
Applies every top-level definition found in the repo:
./argocd/sync-apps.sh
What it does:
- Applies the top-level cluster Application (
k8s/cluster/cluster.app.yaml). - Applies all
*.app.yamlunderk8s/app/system/. - Applies all
*.app.yamlunderk8s/app/database/. - Applies all
*/definition/*.yamlunderk8s/app/— the per-projectXPlatformAppresources.
This is what you run after adding a new project, adding an environment, or bumping a project's chartVersion. Nothing watches k8s/app/platform/ automatically; everything generated from those definitions is GitOps, the definitions themselves are not.