5. DNS cutover
Step 5 of the deployment sequence. With ingress, TLS & auth in place and serving on the reserved static IP, this is the final networking step: point DNS at it.
Records to set
Section titled “Records to set”All three host types resolve to
the one static IP you reserved for Traefik. Set three A records in your zone
(<STATIC_IP> is the reserved regional address):
| Type | Name | Value | Purpose |
|---|---|---|---|
A | app | <STATIC_IP> | Dashboard (app.<domain>) |
A | api | <STATIC_IP> | API (api.<domain>) |
A | * | <STATIC_IP> | Per-session workshops (*.<domain>) |
Add the apex too if you use it.
Example (Cloudflare):
Type Name Content ProxyA app <STATIC_IP> DNS onlyA api <STATIC_IP> DNS onlyA * <STATIC_IP> DNS onlyParallel stand-up, then cut over
Section titled “Parallel stand-up, then cut over”Because the static IP and cluster were stood up alongside any existing (Autopilot) cluster, cutover is just moving these DNS records:
- Validate the new cluster end-to-end while DNS still points at the old one (test via the raw IP / a temporary hostname).
- Flip the
app,api, and*records to<STATIC_IP>. - New sessions land on the new cluster; let existing time-limited sessions on the old cluster drain.
- Keep the old cluster running until you’re confident (a day of real workshops),
then decommission it. If the old cluster was an out-of-band Autopilot
cluster (created via
gcloud/console, not Terraform), delete it the same way — there is notofu destroyfor it. Record final old-vs-new cost to confirm the savings.
Rollback
Section titled “Rollback”Trivial: repoint the DNS records back to the old cluster’s IP. Nothing about standing up the new cluster disturbed the old one.
Next: CI/CD to automate future deploys, and Troubleshooting for the known failure modes.