openova/clusters/otech.omani.works/bootstrap-kit
e3mrah 83f9fc429a
fix(bp-cert-manager): add CRD-establishment gate to close ClusterIssuer race (#149) (#1355)
Closes #149 (prov #24, c776423270f4ae30): bp-cert-manager terminal failure
"no matches for kind ClusterIssuer in version cert-manager.io/v1" — the
post-install ClusterIssuer hook (weight 5) fires before the cert-manager.io
ClusterIssuer CRD reaches status.conditions[?(@.type=="Established")].status
== "True". The upstream Jetstack subchart installs CRDs as regular templates
(no helm.sh/hook), so kubectl apply returns when the resource is CREATED —
not when the apiextensions-apiserver has finished Establishing it. Async in
the apiserver; observed up to 30s on fresh Hetzner cold-start k3s.

Target-state fix per docs/INVIOLABLE-PRINCIPLES.md #4 (no hardcoded
band-aids): a post-install,post-upgrade hook-weight -10 Job that polls
every CRD in values.crdGate.crds for Established=True. Only after the
gate exits 0 does the ClusterIssuer hook (weight 5) fire. Models the
canonical webhook-gate pattern from bp-external-secrets-stores (#137,
#143) — same SA + ClusterRole + ClusterRoleBinding + Job triplet.

300s budget gives ~10x headroom over worst-case observed Established
latency while still failing fast on a genuinely broken upstream.

Chart 1.1.2 -> 1.2.0 (minor bump: new templates + new values stanza).
HR pins in clusters/_template + clusters/omantel + clusters/otech
bumped to 1.2.0.

Per principle 16: canonical seam = the chart's templates/clusterissuer-*.yaml
post-install hook. Per principle 18: every gate knob (enabled, crds,
timeoutSeconds, intervalSeconds, image, imagePullPolicy) templatable.

## Claimed TCs

- prov #24 bp-cert-manager Ready=True (and downstream HRs that depend on
  cert-manager: bp-cilium-gateway, bp-harbor, bp-gitea, bp-keycloak,
  bp-openbao, bp-catalyst-platform — all unblocked once cert-manager
  goes Ready)

Co-authored-by: openova-bot <claude@openova.io>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 08:28:06 +04:00
..
01-cilium.yaml fix(bp-*): event-driven HR install -- drop blanket timeout, use disableWait (#250) 2026-04-30 16:55:19 +04:00
02-cert-manager.yaml fix(bp-cert-manager): add CRD-establishment gate to close ClusterIssuer race (#149) (#1355) 2026-05-11 08:28:06 +04:00
03-flux.yaml fix(bp-flux): catalyst-cluster-reconciler ClusterRoleBinding overlay (closes #338) (#393) 2026-05-01 15:56:45 +04:00
04-crossplane.yaml fix(bp-crossplane): split XRDs+Compositions into bp-crossplane-claims (#247) 2026-04-30 16:55:05 +04:00
05-sealed-secrets.yaml fix(bp-*): event-driven HR install -- drop blanket timeout, use disableWait (#250) 2026-04-30 16:55:19 +04:00
06-spire.yaml fix(bp-*): event-driven HR install -- drop blanket timeout, use disableWait (#250) 2026-04-30 16:55:19 +04:00
07-nats-jetstream.yaml fix(bp-*): event-driven HR install -- drop blanket timeout, use disableWait (#250) 2026-04-30 16:55:19 +04:00
08-openbao.yaml fix(bp-*): event-driven HR install -- drop blanket timeout, use disableWait (#250) 2026-04-30 16:55:19 +04:00
09-keycloak.yaml feat(bp-keycloak): Phase-8b sovereign realm — token-exchange, catalyst-ui/api-server OIDC clients, SMTP, bump 1.2.2 → 1.3.0 (#604) (#609) 2026-05-02 17:05:27 +04:00
10-gitea.yaml fix(bp-gitea+harbor): use CNPG inheritedMetadata to propagate reflector annotations to pg-app Secret (#595) 2026-05-02 15:37:48 +04:00
11-powerdns.yaml fix(tls): DNS-01 wildcard TLS chain — solverName pdns, NodePort 30053, dynadot test fix (#582) 2026-05-02 13:49:58 +04:00
12-external-dns.yaml fix(bp-external-dns): remove --pdns-api-version flag — unknown in v0.15.1 (Closes #587) (#589) 2026-05-02 15:20:00 +04:00
13-bp-catalyst-platform.yaml feat(catalyst-api): /auth/handover endpoint for seamless single-identity flow (Closes #606) (#612) 2026-05-02 17:34:26 +04:00
14-crossplane-claims.yaml fix(bp-crossplane): split XRDs+Compositions into bp-crossplane-claims (#247) 2026-04-30 16:55:05 +04:00
15-external-secrets.yaml fix(bp-external-secrets): gate ClusterSecretStore on CRD presence + drop delete-policy (#337) 2026-04-30 23:31:24 +04:00
16-cnpg.yaml feat(bootstrap-kit): storage+DB foundation batch — slots 15-19 (W2.K1; resolves #254) (#262) 2026-04-30 17:18:12 +04:00
17-valkey.yaml feat(bootstrap-kit): storage+DB foundation batch — slots 15-19 (W2.K1; resolves #254) (#262) 2026-04-30 17:18:12 +04:00
18-seaweedfs.yaml fix(bp-seaweedfs, bp-cluster-autoscaler-hcloud): StorageClass + autoscaler config (qa-loop Wave 5 Fix #79, Gaps B+D) (#1314) 2026-05-10 21:18:39 +04:00
19-harbor.yaml fix(bp-harbor): convert harbor-database-secret to Helm pre-install hook (1.2.8) (#603) 2026-05-02 15:57:55 +04:00
20-opentelemetry.yaml feat(bootstrap-kit): observability batch — slots 20-26 (W2.K2) (#277) 2026-04-30 17:21:26 +04:00
21-alloy.yaml fix(bp-trivy): node-collector tolerates control-plane taint (closes #769) (#772) 2026-05-04 17:38:29 +02:00
22-loki.yaml feat(bootstrap-kit): observability batch — slots 20-26 (W2.K2) (#277) 2026-04-30 17:21:26 +04:00
23-mimir.yaml feat(bootstrap-kit): observability batch — slots 20-26 (W2.K2) (#277) 2026-04-30 17:21:26 +04:00
24-tempo.yaml feat(bootstrap-kit): observability batch — slots 20-26 (W2.K2) (#277) 2026-04-30 17:21:26 +04:00
25-grafana.yaml feat(bp-grafana): chart-verified — smoke OK on contabo + per-Sovereign overlay drift fix (closes #381) (#416) 2026-05-01 16:55:07 +04:00
26-langfuse.yaml feat(bootstrap-kit): observability batch — slots 20-26 (W2.K2) (#277) 2026-04-30 17:21:26 +04:00
27-kyverno.yaml feat(bootstrap-kit): security+policy batch — slots 27-34 (W2.K3) (#276) 2026-04-30 17:22:34 +04:00
28-reloader.yaml feat(bootstrap-kit): security+policy batch — slots 27-34 (W2.K3) (#276) 2026-04-30 17:22:34 +04:00
29-vpa.yaml feat(bootstrap-kit): security+policy batch — slots 27-34 (W2.K3) (#276) 2026-04-30 17:22:34 +04:00
30-trivy.yaml fix(bp-trivy): node-collector tolerates control-plane taint (closes #769) (#772) 2026-05-04 17:38:29 +02:00
31-falco.yaml feat(bootstrap-kit): security+policy batch — slots 27-34 (W2.K3) (#276) 2026-04-30 17:22:34 +04:00
32-sigstore.yaml feat(bootstrap-kit): security+policy batch — slots 27-34 (W2.K3) (#276) 2026-04-30 17:22:34 +04:00
33-syft-grype.yaml feat(bootstrap-kit): security+policy batch — slots 27-34 (W2.K3) (#276) 2026-04-30 17:22:34 +04:00
34-velero.yaml wip(#425): vendor-agnostic OS rename — partial (rate-limited mid-run) (#435) 2026-05-01 18:05:19 +04:00
35-coraza.yaml feat(bootstrap-kit): edge + apps + AI batch — slot 35 (W2.K4) (#261) 2026-04-30 17:23:59 +04:00
kustomization.yaml feat(bootstrap-kit): edge + apps + AI batch — slot 35 (W2.K4) (#261) 2026-04-30 17:23:59 +04:00