Skip to content

feat(provision): one-command automation for runbook steps 2, 4, 5 - #171

Merged
alovladi007 merged 1 commit into
mainfrom
feat/provision-scripts
Aug 3, 2026
Merged

feat(provision): one-command automation for runbook steps 2, 4, 5#171
alovladi007 merged 1 commit into
mainfrom
feat/provision-scripts

Conversation

@alovladi007

Copy link
Copy Markdown
Owner

Why

The go-live runbook's cluster-side steps were copy-paste-heavy. These scripts collapse each to one command, so the human work shrinks to exactly what needs human accounts: create the cluster, point DNS, create a ghcr PAT.

What

  • scripts/provision/install_addons.sh <acme-email> — ingress-nginx, cert-manager + ClusterIssuer (with webhook retry), sealed-secrets, namespace; waits for readiness and prints the ingress IP for DNS.
  • scripts/provision/make_sealed_secrets.sh — generates strong values for the five application secrets and seals them against the live cluster (plaintext never written to disk), emitting committable manifests + kustomization under k8s/overlays/production/sealed/. Prints the ghcr pull-secret command for the user's PAT.
  • scripts/provision/wire_github_and_deploy.sh <tag> — confirms the kubectl context interactively, sets KUBE_CONFIG via gh secret set, tags and pushes → fires the full CD deploy; prints the bootstrap_admin follow-up.

All three are idempotent and bash -n clean; the runbook's sections 2/5/7 now lead with them.

No behavior change to CI/CD or the app — scripts + docs only.

🤖 Generated with Claude Code

Three idempotent scripts so go-live is copy-paste once the cluster and
domain exist (the only parts that need human accounts):

- install_addons.sh <email>: ingress-nginx + cert-manager (+ Let's
  Encrypt ClusterIssuer, webhook-retry) + sealed-secrets + namespace,
  waits for readiness, prints the ingress IP for the DNS records.
- make_sealed_secrets.sh: generates strong values for all five app
  secrets and seals them against the live cluster — plaintext never
  touches disk; writes committable manifests + kustomization under
  k8s/overlays/production/sealed/. Prints the ghcr pull-secret command
  (the PAT is the user's to create).
- wire_github_and_deploy.sh <tag>: confirms the kubectl context, sets
  the KUBE_CONFIG repo secret via gh, tags, and pushes — firing the
  full CD run; prints the bootstrap_admin follow-up.

Runbook sections 2/5/7 now lead with the script and keep the manual
flow as reference.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@alovladi007
alovladi007 merged commit 3e288c8 into main Aug 3, 2026
18 checks passed
@alovladi007
alovladi007 deleted the feat/provision-scripts branch August 3, 2026 20:04
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.

1 participant