Context
What started as "let Argo Workflows run terraform apply for OpenBao/Grafana from inside the cluster" (OpenBao isn't reachable from outside for a while after boot) grew over one long session into: a working CronWorkflow automation, a full Argo Server UI with Dex SSO, and a real ArgoCD OOM incident + HA tuning pass. Tracking it all here since it ended up spanning way more than the original scope.
Two PRs, one per repo, both already live-tested against a real full cluster destroy+rebuild (not just planned):
Related follow-up already filed separately: #72 (image-pull-caching investigation).
Done (confirmed live, not just written)
Core feature — terraform-apply CronWorkflows
Argo Server UI + Dex SSO
ArgoCD OOM incident + fix
Observability
Incidental fix, unrelated to the above but hit along the way
Remaining / follow-up (not blocking merge)
Context
What started as "let Argo Workflows run
terraform applyfor OpenBao/Grafana from inside the cluster" (OpenBao isn't reachable from outside for a while after boot) grew over one long session into: a working CronWorkflow automation, a full Argo Server UI with Dex SSO, and a real ArgoCD OOM incident + HA tuning pass. Tracking it all here since it ended up spanning way more than the original scope.Two PRs, one per repo, both already live-tested against a real full cluster destroy+rebuild (not just planned):
Related follow-up already filed separately: #72 (image-pull-caching investigation).
Done (confirmed live, not just written)
Core feature — terraform-apply CronWorkflows
05-secrets/openbao/managed,06-monitoring/grafana/{bootstrap,managed})argo-workflows-stateScaleway identity, project-scoped IAM (not a bucket policy — see the incident note below)openbao-managedCronWorkflow confirmed succeeding for real on its own hourly schedulegrafana(wave 5) existed, failing every run until a scheduled trigger happened to land later by luckArgo Server UI + Dex SSO
argo-workflows.scalepack.fr, RBAC mapped to the GitHub org admin group via SSO rbac-ruledex-gateway's HTTPRoute needs the Gateway) — was blocking the entire sync at wave 1 once argo-server's eager OIDC discovery needed it to existserver.sso.issuerset to Dex's in-cluster Service (not the public URL) +issuerAliasfor the public issuer string, so discovery/token-exchange don't depend on the cluster's own hairpin-NAT-affected public routeGET /→ 200, SSO redirect → Dex → real login flow, correct client_id/redirect_uriArgoCD OOM incident + fix
argocd-application-controllerOOMKilled repeatedly during a full ~40-Application tree resync, silently killing every sync attempt — this is what actually blocked the sync for the better part of an hour, not an application-level errorGOMEMLIMIT(proactive GC before the cgroup hard limit) + memory 1000Mi → 1500Mi +priorityClassName: system-cluster-critical(protects it from the kubelet's own node-memory-pressure eviction specifically, a different mechanism than the cgroup OOM)resource.exclusions(EndpointSlice/Endpoints/cilium.io) to cut cluster-cache memoryObservability
PrometheusRule:ContainerOOMKilled(cluster-wide) +ArgoCDApplicationControllerMemoryHigh(85% sustained 5m early warning) — confirmed live, both load with healthok,ContainerOOMKilledcorrectly fired on real data from the incident aboveIncidental fix, unrelated to the above but hit along the way
letsencrypt-staging→letsencrypt-prod— was flipped to staging 2026-07-25 after a rate-limit incident, the retry-after window closed weeks ago (2026-07-26) and it just never got flipped back. Was silently breaking browser trust + every native-OIDC app's server-side token exchange this whole time.Remaining / follow-up (not blocking merge)
TODO(before merge)lines in the gitops branch (bootstrap/values.yamlrevision,terraform-apply's gitRef) back tomainbefore merging — isolated in their own commit alreadyopenbao-manageddoesn't actually need to wait that long (only depends on OpenBao itself, wave 0); proper per-root dependency/health gating is real follow-up work, not done herevault_kv_secret_v2'sdata_json_wo/data_json_wo_versionwrite-only pattern: flagged live tonight as a recurring footgun (state can silently diverge from live OpenBao if a version bump is forgotten — this exact thing happened after a backup restore during tonight's testing). Owner wants this pattern removed from05-secrets/openbao/managedin a dedicated follow-up session, not bundled here.