fix(charts): explicit harbor.openova.io/proxy-dockerhub prefix on all chart-hook images (#163) (#1367)

Per CLAUDE.md MIRROR-EVERYTHING inviolable rule: every chart-hook
image reference (pre/post-install Jobs, helper Pods) must use the
explicit Harbor proxy-cache form. Fix #158's bitnami → bitnamilegacy
swap was a band-aid; the architecturally correct fix is to defeat
upstream-deletion blast radius entirely by routing through Harbor.

The node-level containerd mirror in infra/hetzner/cloudinit-control-
plane.tftpl (line 706) already redirects docker.io/* →
harbor.openova.io/proxy-dockerhub/* implicitly, but implicit routing:
  - Hides the routing from SBOM scans
  - Bypasses the Kyverno harbor-proxy-pull ClusterPolicy
  - Means a chart audit (`grep docker.io`) misses a real dependency
  - Was the proximate cause of prov #27 wedging when Bitnami deleted
    docker.io/bitnami/kubectl:1.30.4 (Fix #158 had to chase the
    deletion mid-flight instead of being insulated by Harbor cache)

19 chart-hook image: refs + 5 chart values.yaml repository: defaults
now carry the explicit harbor.openova.io/proxy-dockerhub prefix.
Application/subchart images (keycloak, postgresql, mongodb in
keycloak+litmus subcharts) are intentionally out of scope for this
PR — those go through the node-level containerd mirror still.

Affected blueprints + chart version bumps:
  bp-cert-manager            1.2.1  -> 1.2.2
  bp-external-secrets-stores 1.0.4  -> 1.0.5
  bp-crossplane-claims       1.1.4  -> 1.1.5
  bp-flux                    1.2.1  -> 1.2.2
  bp-guacamole               0.1.16 -> 0.1.17
  bp-self-sovereign-cutover  0.1.28 -> 0.1.29
  bp-k8s-ws-proxy            0.1.9  -> 0.1.10
  bp-harbor                  1.2.15 -> 1.2.16
  bp-gitea                   1.2.5  -> 1.2.6
  bp-newapi                  1.4.5  -> 1.4.6
  bp-wordpress-tenant        0.2.0  -> 0.2.1
  catalyst-platform          1.4.138 -> 1.4.139

Co-authored-by: e3mrah <1234567+e3mrah@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
e3mrah 2026-05-11 11:32:21 +04:00 committed by GitHub
parent a415bfed58
commit 74d23ab3dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
43 changed files with 184 additions and 64 deletions

View File

@ -41,7 +41,7 @@ spec:
# 1.2.1 (Fix #158): crdGate hook image switched from
# bitnami/kubectl:1.30.4 (deleted from Docker Hub 2025-08) to
# bitnamilegacy/kubectl:1.30.7.
version: 1.2.1
version: 1.2.2
sourceRef:
kind: HelmRepository
name: bp-cert-manager

View File

@ -62,7 +62,7 @@ spec:
# 1.2.1 (Fix #158): stuckHelmReleaseRecovery image switched from
# bitnami/kubectl:1.31 (deleted from Docker Hub 2025-08) to
# bitnamilegacy/kubectl:1.31.4. (Catches up from 1.1.3 → 1.2.1.)
version: 1.2.1
version: 1.2.2
sourceRef:
kind: HelmRepository
name: bp-flux

View File

@ -256,7 +256,7 @@ spec:
# platform-wide migration off bitnami/kubectl (deleted from
# Docker Hub 2025-08). This Blueprint already uses alpine/k8s
# + alpine since 0.1.10; no functional image change here.
version: 0.1.28
version: 0.1.29
sourceRef:
kind: HelmRepository
name: bp-self-sovereign-cutover

View File

@ -52,7 +52,7 @@ spec:
# bp-self-sovereign-cutover Step 1 gitea-mirror Job mounts it. K8s
# forbids cross-namespace secretKeyRef; reflector is the canonical
# platform-level mirror. Caught live on otech103 2026-05-04.
version: 1.2.5
version: 1.2.6
sourceRef:
kind: HelmRepository
name: bp-gitea

View File

@ -57,7 +57,7 @@ spec:
# controller watches).
# 1.1.4 (Fix #158): kubectlImage switched from bitnami/kubectl:1.31
# (deleted from Docker Hub 2025-08) to bitnamilegacy/kubectl:1.31.4.
version: 1.1.4
version: 1.1.5
sourceRef:
kind: HelmRepository
name: bp-crossplane-claims

View File

@ -70,7 +70,7 @@ spec:
# 1.0.4 (Fix #158): webhookGate hook image switched from
# bitnami/kubectl:1.30.4 (deleted from Docker Hub 2025-08) to
# bitnamilegacy/kubectl:1.30.7.
version: 1.0.4
version: 1.0.5
sourceRef:
kind: HelmRepository
name: bp-external-secrets-stores

View File

@ -99,7 +99,7 @@ spec:
# live on otech113 2026-05-05 (issue #935 Bug 1) — Step 02 was
# in CreateContainerConfigError for 11+ retries, blocking
# cutover indefinitely.
version: 1.2.15
version: 1.2.16
sourceRef:
kind: HelmRepository
name: bp-harbor

View File

@ -80,7 +80,7 @@ spec:
# because the Job (weight -10, lower=earlier in Helm) was
# applied before its SA (weight 0). Bumps Chart.yaml 0.1.7 ->
# 0.1.8; CI promote auto-bumps to 0.1.9 with new image SHA.
version: 0.1.9
version: 0.1.10
sourceRef:
kind: HelmRepository
name: bp-k8s-ws-proxy

View File

@ -92,7 +92,7 @@ spec:
# 0.1.15 (Fix #158): migrationImage bumped to
# bitnamilegacy/kubectl:1.30.7 (was 1.29.3); template fallback no
# longer references bitnami/kubectl (deleted from Docker Hub 2025-08).
version: 0.1.15
version: 0.1.17
sourceRef:
kind: HelmRepository
name: bp-guacamole

View File

@ -102,7 +102,7 @@ spec:
# for service "external-secrets-webhook"` on every fresh provision,
# blocking the chart from reaching Ready and the Catalyst signup
# hook (ADR-0003 §3.2) from finding the admin-token Secret.
version: 1.4.4
version: 1.4.6
sourceRef:
kind: HelmRepository
name: bp-newapi

View File

@ -7,7 +7,14 @@ name: bp-cert-manager
# remain), causing ImagePullBackOff on fresh Sovereign provisions
# (prov #27 wedge). bitnamilegacy is Bitnami's deprecation-fallback
# path with bash/sh preserved.
version: 1.2.1
#
# 1.2.2 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): crdGate hook image
# switched from bitnamilegacy/kubectl:1.30.7 to
# harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.30.7.
# Per CLAUDE.md inviolable rule, ALL chart-hook references MUST be
# explicit Harbor proxy-cache form — not just rely on the node-level
# containerd mirror in registries.yaml.
version: 1.2.2
description: |
Catalyst-curated Blueprint umbrella chart for cert-manager. Depends on the
upstream `cert-manager` chart (Jetstack) as a Helm subchart so

View File

@ -137,9 +137,15 @@ crdGate:
# versioned tags AND retains bash/sh in the image (rancher/kubectl
# is distroless and would break the hook's bash-c shell script —
# see platform/k8s-ws-proxy hmac-bootstrap-job.yaml comment).
# Same registry-path pattern as platform/guacamole recordings
# migrationImage. 1.30.7 is the newest 1.30.x in bitnamilegacy.
image: bitnamilegacy/kubectl:1.30.7
# 1.30.7 is the newest 1.30.x in bitnamilegacy.
#
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit Harbor proxy-cache
# prefix per CLAUDE.md inviolable rule. Node-level containerd mirror in
# cloudinit-control-plane.tftpl line 706 already rewrites docker.io →
# harbor.openova.io/proxy-dockerhub, but explicit references defeat
# upstream-deletion blast radius AND satisfy the Kyverno
# `harbor-proxy-pull` ClusterPolicy.
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.30.7
imagePullPolicy: IfNotPresent
certManager:

View File

@ -5,7 +5,13 @@ name: bp-crossplane-claims
# 1.31.4. Bitnami's 2025-08 secure-images cutover deleted every versioned
# tag from docker.io/bitnami/kubectl. bitnamilegacy is Bitnami's
# deprecation-fallback path.
version: 1.1.4
#
# 1.1.5 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): kubectlImage repository
# switched from bitnamilegacy/kubectl to
# harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl. Per CLAUDE.md
# inviolable rule, ALL chart-hook references MUST be explicit Harbor
# proxy-cache form.
version: 1.1.5
description: |
Catalyst Crossplane XRDs + Compositions Blueprint. Carries ONLY the
apiextensions.crossplane.io/v1 CompositeResourceDefinition and

View File

@ -24,8 +24,13 @@ global:
# versioned tags from docker.io/bitnami/kubectl (only :latest +
# sha256-named tags remain). bitnamilegacy is Bitnami's deprecation-
# fallback registry path; retains bash/sh.
#
# 2026-05-11 (Fix #163, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md inviolable
# rule. Operator override still works — entire `repository` is one
# configurable string.
kubectlImage:
repository: bitnamilegacy/kubectl
repository: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl
tag: "1.31.4"
catalystBlueprint:

View File

@ -37,7 +37,17 @@ name: bp-external-secrets-stores
# bitnamilegacy is Bitnami's deprecation-fallback path with bash/sh
# preserved (rancher/kubectl is distroless and would break the inline
# shell script).
version: 1.0.4
#
# 1.0.5 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): webhookGate hook image
# switched from bitnamilegacy/kubectl:1.30.7 to
# harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.30.7.
# Per CLAUDE.md inviolable rule, ALL chart-hook image references must
# pull through the Harbor proxy-cache explicitly — not just rely on
# the node-level containerd mirror in registries.yaml. This protects
# the bootstrap-kit from upstream Docker Hub deletions (Bitnami 2025-08
# is exactly such an incident) and satisfies the Kyverno
# `harbor-proxy-pull` ClusterPolicy.
version: 1.0.5
description: |
Catalyst-curated Blueprint chart for the default ESO ClusterSecretStore(s)
that wire each Sovereign's bp-external-secrets controller to its bp-openbao

View File

@ -85,11 +85,14 @@ webhookGate:
# recordings-pvc-migrate-hook.yaml). Versioned tag per
# docs/INVIOLABLE-PRINCIPLES.md #4a.
#
# 2026-05-11 (Fix #158): switched from docker.io/bitnami/kubectl:1.30.4
# because Bitnami's 2025-08 secure-images cutover deleted all
# versioned tags from docker.io/bitnami/kubectl (only :latest +
# sha256-named tags remain). bitnamilegacy is Bitnami's deprecation-
# fallback registry path; retains bash/sh (rancher/kubectl is
# distroless and would break the hook's bash-c shell script).
image: bitnamilegacy/kubectl:1.30.7
# 2026-05-11 (Fix #163, MIRROR-EVERYTHING): explicit Harbor proxy-cache
# prefix per CLAUDE.md inviolable rule. Node-level containerd mirror
# (registries.yaml in cloudinit-control-plane.tftpl line 706) already
# routes `docker.io/*` → `harbor.openova.io/proxy-dockerhub/*`, but
# explicit references defeat upstream-deletion blast radius (cf.
# bitnami/kubectl 2025-08 secure-images purge) AND make SBOM auditing
# plus the Kyverno `harbor-proxy-pull` ClusterPolicy work consistently.
# bitnamilegacy/* is Bitnami's deprecation-fallback path; kept because
# rancher/kubectl is distroless and would break the hook's bash shim.
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.30.7
imagePullPolicy: IfNotPresent

View File

@ -5,7 +5,13 @@ name: bp-flux
# docker.io/bitnamilegacy/kubectl:1.31.4. Bitnami's 2025-08 secure-images
# cutover deleted every versioned tag from docker.io/bitnami/kubectl.
# bitnamilegacy is Bitnami's deprecation-fallback path.
version: 1.2.1
#
# 1.2.2 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): stuckHelmReleaseRecovery
# CronJob image switched from bitnamilegacy/kubectl:1.31.4 to
# harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.31.4.
# Per CLAUDE.md inviolable rule, ALL chart-hook references MUST be
# explicit Harbor proxy-cache form.
version: 1.2.2
description: |
Catalyst-curated Blueprint umbrella chart for Flux. Depends on the
upstream `flux2` chart (fluxcd-community) as a Helm subchart so

View File

@ -62,7 +62,12 @@ catalyst:
# 2026-05-11 (Fix #158): switched from docker.io/bitnami/kubectl:1.31
# because Bitnami's 2025-08 secure-images cutover deleted all
# versioned tags. bitnamilegacy is the deprecation-fallback path.
image: "bitnamilegacy/kubectl:1.31.4"
#
# 2026-05-11 (Fix #163, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub/* prefix per CLAUDE.md inviolable
# rule. Defeats upstream-deletion blast radius and satisfies the
# Kyverno `harbor-proxy-pull` ClusterPolicy.
image: "harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.31.4"
# ─── Upstream chart values (subchart key: flux2) ──────────────────────────
# Generated by docs/PROVISIONING-PLAN.md tickets [F] chart Pass 105+.

View File

@ -1,6 +1,10 @@
apiVersion: v2
name: bp-gitea
version: 1.2.5
# 1.2.6 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): database-secret-sync-job
# hook image switched from curlimages/curl:8.10.1 to
# harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1 per CLAUDE.md
# inviolable rule.
version: 1.2.6
description: |
Catalyst-curated Blueprint umbrella chart for Gitea. Depends on the
upstream `gitea` chart (dl.gitea.com) as a Helm subchart so

View File

@ -76,7 +76,10 @@ spec:
# - bitnami/kubectl:1.31.4 — bitnami moved to sha256-only tags
# - rancher/kubectl:v1.34.6 — distroless, no /bin/sh; container
# can't run our inline shell script.
image: curlimages/curl:8.10.1
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1
imagePullPolicy: IfNotPresent
env:
- name: SOURCE_SECRET

View File

@ -37,7 +37,10 @@ name: bp-guacamole
# bitnamilegacy/kubectl:1.29.3 -> bitnamilegacy/kubectl:1.30.7 to align
# with k3s 1.30 server version on Hetzner Sovereigns + template
# fallback default no longer references the deleted bitnami path.
version: 0.1.16
# 0.1.17 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): migrationImage AND
# oidc-secret-bootstrap-job both gain explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md inviolable rule.
version: 0.1.17
appVersion: "1.5.5"
description: |
Catalyst-authored Blueprint chart for Apache Guacamole — a clientless

View File

@ -199,7 +199,10 @@ spec:
# k8s-API operations from a Job — alpine-based, has /bin/sh,
# has /dev/urandom, has base64. Identical to the image used
# by Fix #78 (k8s-ws-proxy hmac-bootstrap).
image: curlimages/curl:8.10.1
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1
imagePullPolicy: IfNotPresent
env:
- name: SECRET_NAME

View File

@ -110,7 +110,10 @@ guacamole:
# image traceable to a known-good SHA).
# Fix #158 (2026-05-11): bumped 1.29.3 -> 1.30.7 to align with
# k3s 1.30 server version on Hetzner Sovereigns.
migrationImage: docker.io/bitnamilegacy/kubectl:1.30.7
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md inviolable
# rule.
migrationImage: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.30.7
# ── Keycloak OIDC ──────────────────────────────────────────────
oidc:
# Issuer URL — render in per-Sovereign overlay as

View File

@ -38,7 +38,11 @@ description: |
this Blueprint hard-depends on bp-cnpg + bp-cert-manager. The
earlier dependency on bp-seaweedfs is REMOVED (cloud-direct S3 path).
type: application
version: 1.2.15
# 1.2.16 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): database-secret-sync-job
# hook image switched from curlimages/curl:8.10.1 to
# harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1 per CLAUDE.md
# inviolable rule.
version: 1.2.16
appVersion: "2.14.3"
keywords: [catalyst, blueprint, harbor, oci, registry, container]
maintainers:

View File

@ -75,7 +75,10 @@ spec:
# - bitnami/kubectl:1.31.4 — bitnami moved to sha256-only tags
# - rancher/kubectl:v1.34.6 — distroless, no /bin/sh; container
# can't run our inline shell script.
image: curlimages/curl:8.10.1
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1
imagePullPolicy: IfNotPresent
env:
- name: SOURCE_SECRET

View File

@ -39,7 +39,11 @@ name: bp-k8s-ws-proxy
# proxy.yaml's promote job will auto-bump to 0.1.9 with the new image
# SHA on merge; bootstrap-kit slot pins should be lifted to 0.1.9 once
# that promote runs.
version: 0.1.9
# 0.1.10 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): hmac-bootstrap-job
# hook image switched from curlimages/curl:8.10.1 to
# harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1 per CLAUDE.md
# inviolable rule.
version: 0.1.10
appVersion: "0.1.0"
description: |
Catalyst-authored Blueprint chart for the k8s-ws-proxy DaemonSet —

View File

@ -200,7 +200,10 @@ spec:
# curlimages/curl is the canonical Catalyst seam for in-chart
# k8s-API operations from a Job — alpine-based, has /bin/sh,
# has /dev/urandom, has base64. No kubectl dependency.
image: curlimages/curl:8.10.1
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1
imagePullPolicy: IfNotPresent
env:
- name: SECRET_NAME

View File

@ -122,7 +122,11 @@ name: bp-newapi
# Issue #915 (epic SME tenant integration DoD: alice → OpenClaw →
# NewAPI → Qwen3.6@BankDhofar end-to-end).
# 1.2.0: Traefik Middleware gated behind ingress.middleware.enabled.
version: 1.4.5
# 1.4.6 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): 000-external-secrets-
# webhook-readiness-job hook image switched from curlimages/curl:8.10.1
# to harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1 per
# CLAUDE.md inviolable rule.
version: 1.4.6
appVersion: "0.13.2"
description: |
Catalyst Blueprint scratch chart for NewAPI — multi-tenant LLM

View File

@ -140,7 +140,10 @@ spec:
type: RuntimeDefault
containers:
- name: probe
image: curlimages/curl:8.10.1
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1
imagePullPolicy: IfNotPresent
env:
- name: WEBHOOK_URL

View File

@ -5,7 +5,16 @@ name: bp-self-sovereign-cutover
# alpine for chroot-pivot). Comment text now reflects the platform-wide
# Fix #158 migration to bitnamilegacy/kubectl across other Blueprints.
# No functional change in this Blueprint.
version: 0.1.28
#
# 0.1.29 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): every default image
# reference (kubectl/git/curl/hostExec + the hardcoded alpine/k8s in
# step 06) now uses the explicit harbor.openova.io/proxy-dockerhub
# prefix per CLAUDE.md inviolable rule. The Sovereign cloudinit already
# routes containerd through this proxy at node-boot time, so the
# pre-cutover Jobs can reach the explicit URL just fine. Operator
# override via .Values.global.imageRegistry remains intact for true
# air-gap or alternate mirror deployments.
version: 0.1.29
description: |
Catalyst Self-Sovereignty Cutover Blueprint. Installs DORMANT — this
chart ships eight step ConfigMaps (PodSpec ConfigMaps, one per step),

View File

@ -46,9 +46,12 @@ data:
activeDeadlineSeconds: {{ .Values.stepTimeouts.helmRepositoryPatchesSeconds }}
containers:
- name: helmrepository-patches
image: alpine/k8s:1.31.4 # ships kubectl + git so we can both
# patch the live K8s object AND push
# the YAML edit to local Gitea (#970).
# alpine/k8s ships kubectl + git so we can both patch the live
# K8s object AND push the YAML edit to local Gitea (#970).
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/alpine/k8s:1.31.4
imagePullPolicy: IfNotPresent
env:
- name: HELMREPO_NAMESPACE

View File

@ -247,27 +247,33 @@ catalystAPI:
# BEFORE registries.yaml v2 takes effect on the node containerd.
# Post-pivot steps (≥ 05) MAY use the local Harbor copy via
# global.imageRegistry — defaulted off so smoke render is clean.
#
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): every default repository
# is now the explicit Harbor proxy-cache path per CLAUDE.md inviolable
# rule. The Sovereign's k3s cloudinit (infra/hetzner/cloudinit-control-
# plane.tftpl line 706) ALWAYS configures containerd with
# /etc/rancher/k3s/registries.yaml routing docker.io → harbor.openova.io
# BEFORE k3s starts, so the pre-cutover Jobs can reach the explicit
# Harbor URL just fine. Post-cutover overlay via global.imageRegistry
# remains the operator override for true air-gap mode.
images:
kubectl:
# Switched from bitnami/kubectl (Bitnami deprecated public Docker Hub
# in 2025; both :1.31 and :1.31.4 returned 404). alpine/k8s is the
# canonical alternative — alpine-based image with kubectl + helm +
# the standard k8s CLI surface, actively maintained on Docker Hub.
# Caught live on otech103 2026-05-04.
repository: "alpine/k8s"
# alpine/k8s is the canonical alpine-based image carrying kubectl +
# helm + the standard k8s CLI surface (replaced bitnami/kubectl in
# 2025 after Bitnami's deprecation on Docker Hub).
repository: "harbor.openova.io/proxy-dockerhub/alpine/k8s"
tag: "1.31.4"
git:
repository: "alpine/git"
repository: "harbor.openova.io/proxy-dockerhub/alpine/git"
tag: "v2.45.2"
curl:
repository: "curlimages/curl"
repository: "harbor.openova.io/proxy-dockerhub/curlimages/curl"
tag: "8.10.1"
# registry-pivot writes to /etc/rancher/k3s/registries.yaml on every
# node. Uses alpine + `chroot /host` invocation pattern (kubectl not
# required — direct file write via host mount; per Fix #158 platform
# fleet has migrated off bitnami/kubectl due to 2025-08 tag deletion).
# required — direct file write via host mount).
hostExec:
repository: "alpine"
repository: "harbor.openova.io/proxy-dockerhub/library/alpine"
tag: "3.20"
# registry-pivot DaemonSet — runs from chart install to converge

View File

@ -24,7 +24,11 @@ name: bp-wordpress-tenant
# sme_tenant_gitops.go `smeTenantBPWordPress`) bumped to emit both
# `oidc.*` and `keycloak.*` so chart 0.1.x and 0.2.0 reconciles work.
# 0.1.0 — initial release (#800).
version: 0.2.0
# 0.2.1 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): database-secret-sync-job
# hook image switched from curlimages/curl:8.10.1 to
# harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1 per CLAUDE.md
# inviolable rule.
version: 0.2.1
appVersion: "6"
description: |
Catalyst Blueprint scratch chart for in-vcluster WordPress, one

View File

@ -46,7 +46,10 @@ spec:
# curlimages/curl matches bp-gitea (no kubectl image
# required — we talk to the apiserver via the in-pod
# ServiceAccount token).
image: curlimages/curl:8.10.1
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/curlimages/curl:8.10.1
imagePullPolicy: IfNotPresent
env:
- name: SOURCE_SECRET

View File

@ -1015,7 +1015,14 @@ name: bp-catalyst-platform
# - values.yaml: new knobs `cnpgPairAliasName`,
# `cnpgPairPostSwitchoverPrimary`, `continuumPlatformNamespace` —
# all values-overridable per INVIOLABLE-PRINCIPLES #4.
version: 1.4.138
# 1.4.139 (Fix #163, 2026-05-11, MIRROR-EVERYTHING): every chart-hook
# image reference in this Blueprint (catalyst-gitea-token-secret +
# qa-fixtures Jobs) now uses the explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md inviolable
# rule. No functional change — node-level containerd mirror already
# routed these pulls correctly; this makes the routing auditable in
# SBOM scans and Kyverno harbor-proxy-pull ClusterPolicy.
version: 1.4.139
appVersion: 1.4.94
# 1.4.129 (qa-loop iter-16 Fix #65): ship the missing
# `openova-catalog` Flux v1 HelmRepository in flux-system. The

View File

@ -291,7 +291,10 @@ spec:
restartPolicy: OnFailure
containers:
- name: mint
image: docker.io/alpine/k8s:1.31.4
# Fix #163 (2026-05-11, MIRROR-EVERYTHING): explicit
# harbor.openova.io/proxy-dockerhub prefix per CLAUDE.md
# inviolable rule.
image: harbor.openova.io/proxy-dockerhub/alpine/k8s:1.31.4
command: ["sh","-c"]
args:
- |

View File

@ -133,7 +133,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
command: ["sh", "-c"]
args:
- |
@ -419,7 +419,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
env:
- name: NS
value: {{ .Values.qaFixtures.namespace | default "qa-omantel" | quote }}

View File

@ -103,7 +103,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
command: ["sh", "-c"]
args:
- |

View File

@ -126,7 +126,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
command: ["sh", "-c"]
args:
- |

View File

@ -95,7 +95,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
command: ["sh", "-c"]
args:
- |

View File

@ -94,7 +94,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
env:
- name: PDNS_ZONE
value: {{ .Values.qaFixtures.pdmZone | default "openova.io" | quote }}

View File

@ -153,7 +153,7 @@ spec:
type: RuntimeDefault
containers:
- name: strip
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false

View File

@ -95,7 +95,7 @@ spec:
restartPolicy: OnFailure
containers:
- name: seed
image: docker.io/bitnamilegacy/kubectl:1.29.3
image: harbor.openova.io/proxy-dockerhub/bitnamilegacy/kubectl:1.29.3
command: ["sh", "-c"]
args:
- |