Repository navigation
feat: move remaining bundled images off bitnamilegacy (postgresql, redis, kubectl sidecar) #4861
Description
Is your feature request related to a problem? Please describe.
Chart 4.5.15 still pulls four images from the bitnamilegacy/* namespace. Broadcom froze that namespace when Bitnami moved to a paid catalogue — those tags no longer receive security patches, so the Debian base layers accumulate CVEs indefinitely with no upgrade path.
From values.yaml in chart 4.5.15:
| Values path | Image |
|---|---|
postgres.image.repository |
bitnamilegacy/postgresql:17.5.0-debian-12-r12 |
redis.image.repository |
bitnamilegacy/redis:8.0.2-debian-12-r4 |
s3.image.repository |
bitnamilegacy/minio:2025.6.13-debian-12-r0 |
s3.console.image.repository |
bitnamilegacy/minio-object-browser:2.0.2-debian-12-r0 |
webapp.tokenSyncer.image.repository |
bitnamilegacy/kubectl:1.28 |
The first four come from Bitnami subchart dependencies (postgresql 16.7.14, redis 21.2.6, minio 17.0.9 via the s3 alias). The fifth is a first-party chart value.
bitnamilegacy/kubectl:1.28 is worth calling out separately. kubectl supports roughly ±1 minor version of skew against the API server. Pinned at 1.28, the token-syncer sidecar is already outside that window on any cluster running 1.30+, and increasingly so over time. It is also the only one of the five that is not tied to a subchart, so it is a one-line values change.
This affects every self-hosted deployment that uses the bundled datastores, which is the chart's default (postgres.deploy, redis.deploy and s3.deploy are all true).
Describe the solution you'd like to see
The same treatment ClickHouse received in 4.5.15 — first-party templates using the upstream official image, with digest support for reproducible pinning:
clickhouse:
image:
registry: docker.io
repository: clickhouse/clickhouse-server
tag: "26.2"
digest: ""That change was handled well: persistence.existingClaim auto-detects the PVC the Bitnami subchart left behind, a data-paths.xml ConfigMap points the server at the directory the old layout used, and a chown init container relabels the volume for the new uid — including on storage classes where fsGroup cannot relabel. Migrating from the bundled Bitnami ClickHouse was genuinely seamless as a result.
Applying the same pattern to postgres and redis would remove the remaining exposure. Upstream official images exist for both (postgres, redis, or valkey), and for the sidecar registry.k8s.io/kubectl is the upstream-maintained option.
Order of value, in our view:
webapp.tokenSyncer.image— no subchart, no state, no migration. A values change.- redis — stateful but largely reconstructible.
- postgresql — highest value and highest care required, since it holds the secret store and run state.
Describe alternate solutions
Override the subchart images in values. Not viable in practice: the Bitnami charts assume Bitnami's filesystem layout, entrypoints and uid conventions, so substituting an official image breaks the probes and init scripts. We looked at this and discounted it.
Point the chart at external services (deploy: false). This works and is what we have done for object storage — s3.deploy: false with s3.external.* removed both MinIO images cleanly. But it is not a general answer: it pushes every self-hoster toward managed Postgres and Redis, which defeats much of the point of a self-hosted chart, and the bundled path stays unpatched for everyone who does not.
Stay on bitnamilegacy and accept the risk. Defensible only while these services are cluster-internal with no ingress, which is the common case. It still shows up in image scanning and in security questionnaires, and it degrades over time as CVEs accumulate against frozen base layers.
Additional information
Related prior work:
- fix(hosting): deploy ClickHouse from the official image instead of Bitnami #4249 — deploy ClickHouse from the official image instead of Bitnami (the precedent this asks to extend)
- v4.5.0 ClickHouse writers require CH ≥25.8, but the Helm chart still bundles ClickHouse 25.7.5 → every insert fails with UNKNOWN_SETTING #4197 — ClickHouse writers require CH ≥25.8 while the chart bundled ClickHouse 25
Verified against chart 4.5.15 (oci://ghcr.io/triggerdotdev/charts/trigger) and against a running self-hosted deployment on k3s, where kubectl get pods -o jsonpath over the namespace confirms the five images above are what actually run.
Happy to test a pre-release chart against a live single-node self-hosted install if that is useful — we have just completed the 4.4.6 → 4.5.15 upgrade including the ClickHouse volume adoption, so the migration path is fresh.
Activity
Jasowills commentedon Sep 14, 2026
Taking this on.
Scope — replace the four
bitnamilegacy/*image references in the Helm chartvalues.yamlwith maintained equivalents pinned to specific tags, so the Debian base layers stop accumulating CVEs.Plan
chart values.yaml(postgres, redis, kubectl sidecar, and any remaining)helm template+ a chart lint to verify the values render and pin correctlyHappy to adjust image choices to whatever the maintainers prefer (e.g. keep bitnami but new namespace, vs alternative distroless builds).
intikhab49 commentedon Oct 4, 2026
On "override the subchart images in values": that holds for the official
postgresimage, but it works with an image that keeps Bitnami's layout. I maintain lifeboat, a from-source rebuild of Bitnami's postgresql image. It runs Bitnami's own container scripts (Apache-2.0), so/bitnami/postgresql, UID 1001, the entrypoint and thePOSTGRESQL_*variables are unchanged, the chart's probes and init scripts keep working, and the existing PVC is reused.global.security.allowInsecureImagesis already set in your values, so the postgres part is just the image:17.5.0 to 17.11.0 is a minor release within PostgreSQL 17, so the data directory carries over without a dump and restore. The image is rebuilt weekly with Debian 12 security updates, and CI installs Bitnami's postgresql chart 16.7.27 (the same 16.7 line as your 16.7.14) in replication mode against it on every build.
Caveats: it's a community build, not Bitnami's or Broadcom's, and it only covers PostgreSQL, not redis or the kubectl sidecar. It could also be a stopgap until postgres gets the first-party treatment ClickHouse got.