Skip to content

Common operations

Everyday tasks for working in the GitOps repos. Commands assume you're at the root of one of the repos with kubectl/helm configured against the cluster.

Validate before you commit

Every GitOps repo ships a validate.sh that discovers all Chart.yaml files and lints each:

./validate.sh                 # yamllint + helm lint, all charts
./validate.sh --kubeconform   # + manifest schema validation
./validate.sh --kubelinter    # + kube-linter checks
./validate.sh path/to/Chart.yaml   # a single chart

Render a chart locally

helm template <release> applications/<app>/ -f applications/<app>/values.yaml

# the whole app-of-apps for a repo:
helm template <prefix>-app-of-apps clusters/<cluster>/applications/ -f values/global.yaml

Add an application

  1. Create applications/<new-app>/ — a Helm chart.
  2. Add clusters/<cluster>/applications/templates/<new-app>.yaml — copy an existing Application CR and adjust.
  3. (Optional) cluster overrides in clusters/<cluster>/values/<new-app>.yaml.
  4. If it pins a container image tag that Renovate should track, add a matching customManager entry.

Commit — the layer's ArgoCD picks it up on its next sync.

Trigger a sync now

ArgoCD auto-syncs on push. To force it immediately, patch the Application's operation:

kubectl patch application <name> -n <argocd-namespace> --type merge \
  -p '{"operation":{"initiatedBy":{"username":"you"},"sync":{"revision":"HEAD"}}}'

<argocd-namespace> is platform-argocd, addons-argocd, or opendesk-argocd.

See what's out of sync

kubectl get applications -n <argocd-namespace>

Re-run a completed Job

A plain (non-hook) ArgoCD-managed Job won't re-run by itself — its spec is immutable and already Complete, so a resync is a no-op. Re-run it in three steps:

  1. Delete the Job object.
  2. Terminate any in-progress sync on its Application.
  3. Trigger a sync (command above) — ArgoCD recreates the Job from the chart.

See also: Architecture · Sealed Secrets · Renovate.