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

未關閉
#4,861 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
48/100
Issue 類型
功能
描述清晰度
基本清楚
活躍度
活躍
技術堆疊
docker, kubernetes, typescript

研究方向

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.

由索引模型根據 Issue 內容生成。

描述

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.

主要語言
TypeScript
星號
16.5k
分支
1.5k
平均合併
1 天 15 小時
30 天內合併 PR
17

環境準備

這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

triggerdotdev/trigger.dev 的其他 Issue

查看 triggerdotdev/trigger.dev 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。