Record T01 package (in-repo k8s/railiance, combined /ui + API app, dedicated CNPG). Add Dockerfile, healthz, migration/bootstrap scripts, kustomize manifests, ArgoCD Application (in railiance-platform), and docs/deployment.md. T05 left open for operator DNS/OpenBao/image push.
3.3 KiB
3.3 KiB
Deploying Target Revenue Trust Service + Control Plane
Workplan: workplans/TREV-WP-0011-railiance-reef-deployment.md
Public host (target): https://revenue.coulomb.social
Control Plane UI: https://revenue.coulomb.social/ui/
Trust Service API: https://revenue.coulomb.social/ (e.g. /phases/..., /public-key)
This deployment does not by itself authorize new Phases beyond what
WP-0008-T05 already recorded. The first pilot Phase is
trsl:phase:info-tech-canon-service-surface
(history/260805-T05-GoLive-info-tech-canon.md).
T01 decision (2026-08-05)
| Bullet | Decision |
|---|---|
| Manifest home | In-repo k8s/railiance/ (issue-core pattern); ArgoCD Application in railiance-platform |
| Process topology | Single process: combined.py mounts Control Plane at /ui, Trust Service at / |
| Database | Dedicated CNPG Cluster target-revenue-pg in namespace target-revenue (not state-hub DB) |
| Secrets | OpenBao + ExternalSecret → target-revenue-runtime; CNPG role secrets operator-seeded |
| Subdomain / TLS | revenue.coulomb.social, cert-manager.io/cluster-issuer: letsencrypt-prod (same as forgejo.coulomb.social) |
| Founding credential | Idempotent Job target-revenue-bootstrap-binky (scripts/bootstrap_binky.py) |
Operator checklist (first bring-up)
- DNS: point
revenue.coulomb.socialat the Railiance Traefik/ingress (same path as other*.coulomb.socialhosts on railiance01). - OpenBao: create KV path
workloads/target-revenue/runtime-secretswith:TRF_SIGNING_KEY_HEX(64 hex chars)TRF_CONTROL_PLANE_SECRET_KEYTRF_DATABASE_URL(trf_app DSN totarget-revenue-pg-rw)TRF_MIGRATE_DATABASE_URL(trf_owner DSN for migrate/bootstrap Jobs)
- CNPG bootstrap secrets in namespace
target-revenue(before Cluster reconciles):target-revenue-pg-credentials— keys as required by CNPG for ownertrf_ownertarget-revenue-trf-app-credentials— password for managed roletrf_app
- Image: build and push
forgejo.coulomb.social/coulomb/target-revenue:0.1.0
(see Dockerfile; bump tag in Deployment + Jobs when releasing). - ArgoCD: apply
railiance-platform/argocd/applications/target-revenue.application.yaml
(oncemaincontainsk8s/railiance/). - After migrate + bootstrap Jobs succeed: pull founding token from bootstrap Job logs (
TOKEN=...), store offline; sign in at/ui/login. - Migrate pilot Phase data from the local go-live instance (
trf-pilot-pg/:8765) if that instance still holds the authoritative ledger — export Manifest + ledger JSON and re-register/append on the public instance (or promote the pilot DB dump deliberately). Do not leave two competing ledgers.
Local pilot instance (already used for T05)
| Item | Value |
|---|---|
| API | http://127.0.0.1:8765 |
| Postgres container | trf-pilot-pg / volume trf-pilot-pgdata / port 55432 |
| Token file | ~/.config/target-revenue/pilot-binky.token |
python scripts/trf_onboard.py status \
--url http://127.0.0.1:8765 \
--phase-id trsl:phase:info-tech-canon-service-surface
Health
- Combined / standalone:
GET /healthz→{"status":"ok"}(no DB dependency) - Control Plane when mounted:
GET /ui/healthz