feat: move remaining bundled images off bitnamilegacy (postgresql, redis, kubectl sidecar)

Offen
#4,861 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
48/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
docker, kubernetes, typescript

Rechercherichtung

Start with the chart's values.yaml and the PostgreSQL, Redis, and MinIO subchart dependencies; compare the ClickHouse migration in #4249 for the established approach. The issue prioritizes the token-syncer image as a standalone first step, then Redis and PostgreSQL migrations. Done means the bundled images no longer use bitnamilegacy and the affected services work with the replacement images, including data migration where needed.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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:

  1. webapp.tokenSyncer.image — no subchart, no state, no migration. A values change.
  2. redis — stateful but largely reconstructible.
  3. 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:

  • #4249 — deploy ClickHouse from the official image instead of Bitnami (the precedent this asks to extend)
  • #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.

Vorherrschende Sprache
TypeScript
Sterne
16.5k
Forks
1.5k
Ø Merge
1 T. 15 Std.
Gemergte PRs (30 T.)
17

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus triggerdotdev/trigger.dev

Alle Issues in triggerdotdev/trigger.dev

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.