Production Environment
The production environment serves live traffic at app.the-shift.dev.
Details
| Property | Value |
|---|---|
| URL | app.the-shift.dev |
| Branch | main |
| Replicas | 2 |
| Namespace | shift-platform |
| GCP Project | platform-489018 |
| Region | us-central1 |
| Cluster | GKE shift-platform |
| Artifact Registry | us-central1-docker.pkg.dev/platform-489018/shift-platform/platform |
| Storage | Convex (self-hosted, in-cluster) |
Deployment
Pushing to the main branch triggers an automatic production deployment via GitHub Actions:
git push origin main
The CI/CD pipeline executes:
- Lint --
bun run check - Test --
bun run test - Docker Build -- Multi-stage build
- Push -- Image pushed to GCP Artifact Registry with
sha-<commit>andlatesttags - Deploy --
kubectl apply -k k8s/overlays/prod/followed by a rollout restart
Verifying
After a deploy, verify the production environment:
curl https://app.the-shift.dev/healthz
# {"status":"ok","service":"shift-gateway"}
# Check aggregated service health
curl https://app.the-shift.dev/api/v1/health
Kustomize Overlay
The production overlay (k8s/overlays/prod/) configures:
- 2 replicas for high availability
NODE_ENV=production- Production hostname (
app.the-shift.dev) in the Ingress - Production namespace (
shift-platform) - Production resource requests and limits
Rollback
To roll back to a previous version, you can:
- Revert the commit on
mainand push, triggering a new deploy - Manually set the image tag to a previous
sha-<commit>:
kubectl set image deployment/shift-gateway \
shift-gateway=us-central1-docker.pkg.dev/platform-489018/shift-platform/platform:sha-<previous-commit> \
-n shift-platform
Monitoring
Check pod status and logs:
kubectl get pods -n shift-platform
kubectl logs -f deployment/shift-gateway -n shift-platform
Check the health endpoint for all services:
curl https://app.the-shift.dev/api/v1/health