Skip to content

fix(#45): harden spoke ACM import reliability - #50

Open
paulczar wants to merge 2 commits into
mainfrom
fix/45-spoke-acm-import-reliability
Open

fix(#45): harden spoke ACM import reliability#50
paulczar wants to merge 2 commits into
mainfrom
fix/45-spoke-acm-import-reliability

Conversation

@paulczar

@paulczar paulczar commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Harden bootstrap-gitops.sh ACM spoke import: ephemeral kubeconfigs, API assertions, poll import secret + apply in-memory YAML, wait for ManagedCluster CRDs and ocm-webhook endpoints, hard-fail unless ManagedClusterJoined=True
  • Require hub break-glass HUB_CREDENTIALS_SECRET for spoke bootstrap (interim until Decouple spoke ACM bootstrap from long-lived hub admin credentials #48)
  • Per-cluster TF_DATA_DIR=clusters/<name>/.terraform so hub/spoke init/plan/apply/destroy can run concurrently from one checkout
  • Fix htpasswd-idp greenfield plan (Invalid count argument when cluster_id is known after apply)
  • Document ACM readiness, parallel apply/destroy, and credential requirements in enablement + bootstrap README

Test plan

  • make test (tf fmt/validate + shfmt/shellcheck)
  • Live e2e: parallel apply dev-hub-1 + dev-spoke-1 from one checkout → hub bootstrap → spoke bootstrap-spokeManagedClusterJoined=True / Available
  • Destroy + redeploy greenfield cycle also succeeded with same path
  • Reviewer: spot-check enablement §6 ACM commands and HUB_CREDENTIALS_SECRET break-glass note

Fixes #45

Made with Cursor

paulczar and others added 2 commits August 4, 2026 13:00
Make spoke bootstrap wait for ACM readiness (CRDs + ocm-webhook), isolate
kubeconfigs, and require ManagedClusterJoined before success. Use per-cluster
TF_DATA_DIR so hub/spoke apply/destroy can run from one checkout, and fix
htpasswd-idp count for greenfield plans.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep local apply/bootstrap/destroy logs and __pycache__ out of git status.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Spoke ACM import can skip klusterlet apply and still report success

1 participant