Deploy basketball-api to k8s (Phase 1c) #18
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/basketball-api#18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lineage
plan-2026-03-08-tryout-prep→ Phase 1 → Phase 1cRepo
forgejo_admin/pal-e-services(tofu changes) +forgejo_admin/basketball-api(verify only)User Story
As the platform admin,
I want basketball-api deployed and accessible at https://basketball.tail5b443a.ts.net,
So that registration links and coach onboarding links resolve and the email blast can go out today.
Context
basketball-api is built — registration form, coach onboarding, roster view, Stripe webhooks, photo upload, pal-e-auth, all merged to main. CI passes (Woodpecker + Postgres service container). k8s manifests exist in
basketball-api/k8s/. But nothing is deployed. There is no live URL. This is the single blocker for every remaining deliverable.Service onboarding SOP (
service-onboarding-sop) is a 7-step checklist. Steps 3 (scaffold repo) and 4 (activate Woodpecker) are already done. Remaining work:Postgres runs as a standalone Deployment with 1Gi PVC (not CNPG). Three Alembic migrations must run after first deploy (001 initial, 002 player fields, 003 coach model).
File Targets
pal-e-services:
k3s.tfvars— add basketball-api to var.services mapbasketball-api (no code changes — verify only):
k8s/— manifests already correct (deployment, postgres, service, kustomization).woodpecker.yaml— build-and-push step already existsAcceptance Criteria
basketball-apiadded tovar.servicesin pal-e-services:"forgejo_admin/basketball-api""basketball-api/api"tofu applysucceeds — creates namespace, ArgoCD app, Harbor project, robot accounts, image pull secretbasketball-api-secretscreated in basketball-api namespace:postgres-password— generated strong passwordstripe-webhook-secret— from ~/secrets/stripe-api-key— from ~/secrets/pal-e-auth-secretscreated in basketball-api namespace:jwt-secret-key— generated strong secretgoogle-client-id— from pal-e-auth configgoogle-client-secret— from pal-e-auth configharbor_username,harbor_passwordfrom tofu output)alembic upgrade head(3 migrations)curl https://basketball.tail5b443a.ts.net/healthz→ 200 OKcurl https://basketball.tail5b443a.ts.net/register→ registration form HTMLcurl https://basketball.tail5b443a.ts.net/docs→ FastAPI OpenAPI pageTest Expectations
No code changes — this is infrastructure. Verification is the AC curl commands above.
Constraints
Checklist
Related
project-westside-basketballservice-onboarding-sopPhase 1c: Already deployed
Investigation found the infrastructure was already set up 13 days ago:
f8e21df(5 commits behind HEAD) due to platform-wide Image Updater auth bugWhat was done
bug-image-updater-registry-authin pal-e-docsb0fc60f(commit0eea78d)Verification
https://basketball-api.tail5b443a.ts.net/healthz→{"status":"ok"}https://basketball-api.tail5b443a.ts.net/register→ Registration form rendershttps://basketball-api.tail5b443a.ts.net/docs→ Swagger UI loadsNote: Hostname is
basketball-api.tail5b443a.ts.net(notbasketball.tail5b443a.ts.netas originally planned — service name becomes the subdomain).Remaining concern
Image Updater is broken platform-wide. Future pushes to main won't auto-deploy. Manual image bumps needed until the platform bug is fixed.