Skip to main content

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:

  1. Creates the argocd namespace if missing.
  2. Adds https://argoproj.github.io/argo-helm and runs helm upgrade --install --version <pinned>.
  3. Waits for the argo-cd-argocd-server Deployment 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:

  1. Applies the top-level cluster Application (k8s/cluster/cluster.app.yaml).
  2. Applies all *.app.yaml under k8s/app/system/.
  3. Applies all *.app.yaml under k8s/app/database/.
  4. Applies all */definition/*.yaml under k8s/app/ — the per-project XPlatformApp resources.

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.