3.5 KiB
3.5 KiB
Runbook - Track 7 Scale Validation
Goal
Validate the production-like scale500 profile for Wave 2 / Track 7 on K8s on-prem.
This runbook assumes:
- Helm is the canonical deployment path
DATABASE_URLpoints to a shared PostgreSQL endpointmetrics-serveris installed and healthy- Helm migration hook is enabled
Prerequisites
kubectlaccess to the target clusterhelminstalled locally- namespace chosen (examples below use
mvp-cc) - Helm chart configured with:
global.schemaManagementMode=migrationsmigrations.enabled=true
Configure Helm values
Before deployment, confirm:
profiles.scale500.enabled=trueglobal.databaseUrlis set to PostgreSQLglobal.schemaManagementMode=migrationsmigrations.enabled=truedb.poolSize,db.maxOverflow,db.poolTimeoutSeconds,db.poolRecycleSecondsmatch the target baseline
Render and inspect:
helm lint deployment\helm
helm template mvp-cc deployment\helm -n mvp-cc
Deploy
helm upgrade --install mvp-cc deployment\helm -n mvp-cc --create-namespace
Wait until:
- migration Job
mvp-cc-db-migratecompleted successfully - all expected pods are
Ready - HPA objects are created for the hot-path services
recording-servicestays singleton
Step validation (250 + 250)
Run the staged profile first:
python scripts\load_test.py --base-url http://<gateway-host> --profile step_250_250 --auth-mode bearer
python scripts\track7_check.py --namespace mvp-cc --report-dir .artifacts\track7\<timestamp> --require-success-rate 99 --require-p95-seconds 1.5 --require-p99-seconds 3.0
Expected:
- success rate
>= 99% - no crash loops or OOM kills
- no unexpected pod restarts
You can also run the staged helper, which writes a formal acceptance pack automatically:
python scripts\track7_stage.py --base-url http://<gateway-host> --namespace mvp-cc --auth-mode bearer
This creates:
.artifacts/track7/staged_<timestamp>/step_250_250.artifacts/track7/staged_<timestamp>/target_500_500.artifacts/track7/staged_<timestamp>/acceptance_summary.json.artifacts/track7/staged_<timestamp>/acceptance_summary.md
Target validation (500 + 500)
Only after the step profile passes:
python scripts\load_test.py --base-url http://<gateway-host> --profile target_500_500 --auth-mode bearer
python scripts\track7_check.py --namespace mvp-cc --report-dir .artifacts\track7\<timestamp> --require-success-rate 99 --require-p95-seconds 2.0 --require-p99-seconds 3.5
Expected:
500 voice + 500 digitalmixed profile- success rate
>= 99% - p95
<= 2.0s - p99
<= 3.5s 5xx/ transport failure rate<= 0.5%
Evidence pack
Keep the following together:
- rendered Helm values/profile
summary.jsonlatency_samples.csverror_samples.jsonmix_profile.json- output from
track7_check.py - rollout notes (cluster, namespace, date, profile, result)
Rollback
If the target profile fails:
- Roll back the Helm release:
helm rollback mvp-cc
- Keep the failed report directory for analysis.
- Reduce to the last passing profile and re-run validation only after tuning.
Canonical scale500 values
Use the built-in preset as the base overlay for the production-like scale profile:
helm upgrade --install mvp-cc deployment\helm -f deployment\helm\values.scale500.yaml -n mvp-cc --create-namespace
Then override at least:
global.databaseUrl- image tag / repository as needed for the target cluster