Prod deployment overview
Use this overview as the entry point for Blaster production work. It links to focused runbooks for Kubernetes manifests, Flux GitOps, Cloudflare tunnelling and security hardening.
Blaster GitOps series
- Blaster GitOps summary
- Blaster repo and branches
- Dockerfile & GitLab CI
- Clerk authentication & user setup
- Google OAuth for Clerk
- Blaster prep for automation
- Dev app k8s manifests
- Dev flux sources & Kustomizations
- Dev image automation
- Dev SOPS & age
- Dev verification & troubleshooting
- Dev full runbook
- Prod overview - you are here
- Prod app k8s manifests and deployment
- Prod Flux GitOps and image automation
- Prod Cloudflare, Origin CA and tunnel routing
- Prod full runbook
- Post development branches
1. What this deployment does
Blaster production runs as a Next.js app on your on-prem Kubernetes cluster, fronted by:
- A
blasternamespace with PostgreSQL and the Blaster app Deployment. - FluxCD GitOps pulling manifests from
games/blasterand automating image updates. - Cloudflare Tunnel and Origin CA certificates terminating TLS for
https://blaster.muppit.au/.
Secrets are managed with SOPS + age, and everything is driven from Git.
2. Runbook structure
Use these documents depending on the task:
-
Kubernetes manifests and app deployment
How the
blasternamespace is built: DB StatefulSet, app Deployment, Ingress, Secrets, ConfigMaps and SOPS encryption. -
Flux GitOps and image automation
How Flux tracks
games/blasteronmain, decryptsk8s/prod, watches Docker image tags and commits updated tags back to Git. -
Cloudflare and Origin CA / tunnel routing
How
blaster.muppit.auis configured through Cloudflare Tunnel, how Origin CA certs are issued, and how to restartcloudflaredsafely. -
Dev to Prod full runbook
The full runbook with all commands to publish the game into production.
-
Security hardening Git flow
How to branch, push and open a merge request for security work such as auth hardening, without trampling prod.
- See Post Git flow
3. Typical production change flow
- Update app code and commit to
develop. - Promote to
mainvia GitLab merge request. - GitLab CI builds a new
prod-YYYYMMDD.BUILDimage and pushes toregistry.reids.net.au/games/blaster. - Flux ImageRepository discovers the new tag, ImagePolicy selects it and ImageUpdateAutomation commits the new image tag into
k8s/prod. - Flux Kustomization applies the updated manifests.
- Cloudflare serves
https://blaster.muppit.au/via the tunnel, using the Origin CA certificate from theblasternamespace.
4. Verification checklist
After a change, verify:
- Blaster pods are
Readyin theblasternamespace. - The app is using the expected
prod-YYYYMMDD.BUILDimage. - TLS Secret
blaster-muppit-au-tlsis present andCertificateisReady=True. - Cloudflare DNS and tunnel config include
blaster.muppit.au. -
curl -k https://blaster.muppit.au/ -IreturnsHTTP/2 200.