Upgrading, resizing and unsticking the ArgoCD control plane on the
operations cluster. ArgoCD reconciles many applications across many tenant
clusters.
Config lives in infra-operations/argocd/{production,staging}/values.yaml.
That repo is not in the ArgoCD-managed set — ArgoCD cannot deploy itself, so
these changes are applied by hand with Helm.
The mental model that matters
ArgoCD being down does not take production down. It is a reconciler: it compares git to the clusters and applies the difference. If it stops for ten minutes, every Honcho pod keeps serving traffic exactly as before. What you lose is new changes landing and drift being corrected.
So the risk during an upgrade is “changes queue up,” not “production breaks.” That is what makes a mid-day upgrade acceptable.
Upgrading
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
gcloud container clusters get-credentials operations \
--region us-east4 --project plastic-labs-prod
helm upgrade --install argocd argo/argo-cd \
--namespace argocd --version 10.2.2 \
-f infra-operations/argocd/production/values.yaml \
--atomic --create-namespace --timeout 45mWhat each flag actually does:
--version 10.2.2pins the chart, not ArgoCD. Chart10.2.2ships ArgoCDv3.4.6. Check withhelm search repo argo/argo-cd --versions.--atomicimplies--wait— Helm blocks until every resource reports ready and rolls the whole release back on any failure. This is what you want, and it is why the timeout has to be generous.--timeout 45m— the controller StatefulSet rolls one pod at a time and each new shard has to re-list every cluster it owns. Budget tens of minutes, not seconds.
The argocd release is a normal Helm release; nothing about it appears in the
ArgoCD UI, because ArgoCD does not manage itself. Watch it with kubectl:
kubectl --context gke_plastic-labs-prod_us-east4_operations -n argocd \
get pods -wCredentials
admin, with the password in Secret Manager on the matching GCP project. On a
fresh install:
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -dSee also
- GitOps pipeline — sync waves and the traps
- Compute classes and spot — fleet-wide
nodeSelectorchanges hit the control plane hard infra-operations/argocd/README.md— first-time install, Workload Identity bindings, cluster registration