Blueprint Release CI's smoke-render gate fails on `render < 5 lines` unless the chart Chart.yaml declares the LITERAL token `catalyst.openova.io/smoke-render-mode: "default-off"`. PR #1526 shipped the 3 vCluster blueprints with descriptive but non-accepted tokens (`primary-only` / `every-region` / `secondary-only`) so the gate failed for `bp-mgmt-vcluster` (renders 1 line with `mgmtVcluster.enabled=false`). All 3 charts default-OFF (`.enabled: false` in values.yaml) and the bootstrap-kit slots flip them on via postBuild.substitute. This PR aligns all 3 to the accepted `"default-off"` token. The full-ON render path is exercised by each chart's `chart/tests/render.sh` (asserts Namespace + NetworkPolicy + subchart StatefulSet + Service produced when enabled=true) — CI doesn't run this as a Release gate but the agent's brief did. Refs PR #1526. Co-authored-by: hatiyildiz <hatice.yildiz@openova.io> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| chart | ||
| blueprint.yaml | ||
| README.md | ||
bp-rtz-vcluster
Bootstrap-kit Blueprint #59. Provisions the RTZ vCluster on every secondary region — the regional tenant-workload vCluster.
Why this exists — DoD A4
docs/SOVEREIGN-MULTI-REGION-DOD.md invariant A4:
primary region = MGMT + DMZ vCluster; each secondary region = DMZ + RTZ vCluster. Cross-vCluster intra-region traffic stays inside host k3s via Cilium.
This Blueprint implements the RTZ half of the secondary-region pair.
| Region role | vClusters | This chart |
|---|---|---|
| Primary | MGMT + DMZ | not rendered (gated off via SOVEREIGN_REGION_ROLE) |
| Secondary | DMZ + RTZ | rendered |
Resources rendered (full-ON)
Namespace rtz(catalyst.openova.io/vcluster-role=rtz label)NetworkPolicy default-deny + allowFrom dmz(RTZ has NO direct MGMT access — primary's MGMT only reachable via DMZ WG cross-region)- Upstream loft-sh/vcluster 0.20.0 subchart under
rtznamespace with:nodeSelector: openova.io/region=<secondary-region-key>so the StatefulSet lands on the region's own CP nodelocal-pathstorage class, 5Gi PVC- 200m CPU / 384Mi memory request
- MIRROR-EVERYTHING image:
harbor.openova.io/proxy-ghcr/loft-sh/vcluster:0.20.0
Topology dependency
Phase 0 (cloud-init Hetzner CP per region)
↓
bp-cilium — CNI + Gateway API (slot 01)
↓
bp-cert-manager — TLS for ClusterIssuers (slot 02)
↓
bp-mgmt-vcluster — slot 58 (primary-only)
bp-dmz-vcluster — slot 54 (every region)
bp-rtz-vcluster — THIS chart (slot 59, secondary-only)
See also
docs/SOVEREIGN-MULTI-REGION-DOD.md— A4 contractplatform/bp-mgmt-vcluster/— primary-region companionplatform/bp-dmz-vcluster/— every-region companionscripts/expected-bootstrap-deps.yamlslot 59