Refs #67 Merged by commander after reviewing Code Queue task codex_1779422774244_1. Adds deploy.json public endpoint/frp/k3s/health source fields and dry-run validation. Follow-up: align deploy.json commit/image desired state with the current DEV runtime before using it as apply truth.
2.2 KiB
Deploy Contract
deploy.schema.json defines the future deploy/deploy.json manifest shape.
The MVP acceptance environment is DEV only. Public endpoint source fields live in
deploy/deploy.json: frontend http://74.48.78.17:16666 and API/edge
http://74.48.78.17:16667. PROD profile fields may be represented in schema
for future compatibility, but PROD deployment is not part of MVP acceptance.
L5 DEV Skeleton
deploy/deploy.jsonis the DEV-only deploy manifest.deploy/deploy.jsonis the single source forhealth.path,publicEndpoints,frp.proxies, andk3s.serviceMappings.deploy/k8s/basecontains parseable k3s resource skeletons for the frozen HWLAB service IDs rendered from the manifest contract.deploy/k8s/devcontains the DEV health contract and endpoint metadata.hwlab-cloud-apideclares the DEV DB env contract withHWLAB_CLOUD_DB_URLfrom Secret referencehwlab-cloud-api-dev-db/database-urland non-secretHWLAB_CLOUD_DB_SSL_MODE=require. The repository records names only, never secret values or a live DB connection string; runtime health reports redacted env injection and DB connection result classifiers.deploy/k8s/prodis a disabled placeholder gate only.deploy/frpdescribes the D601-to-master reverse link without secrets.deploy/master-edgedescribes public edge ownership and health boundaries.
Dry-run source rendering:
node scripts/deploy-contract-plan.mjs --pretty
node scripts/deploy-contract-plan.mjs --check
The deploy contract plan renders and validates only. It does not run frps/frpc,
does not call kubectl apply, does not restart services, and does not touch
PROD. Later work can wire the same source fields into hwlab edge apply or
deploy apply.
Next DEV deploy smoke commands, for a separately authorized deployment task:
npm run check
node -e "JSON.parse(require('node:fs').readFileSync('deploy/deploy.json','utf8'))"
kubectl apply --dry-run=server -k deploy/k8s/dev
curl -fsS http://74.48.78.17:16667/health/live
node scripts/dev-edge-health-smoke.mjs --live --write-report
Do not run PROD deployment or substitute UniDesk backend, provider-gateway, or microservice proxy for HWLAB runtime services.