跳转到主要内容
这个 chart 渲染出的对象和 kustomize 清单一样: ServiceAccount、ConfigMap、PVC、Role、RoleBinding、Service、Deployment, 以及可选的 Ingress 和 Secret。 跑多套环境、或者想用 values 驱动部署时选 chart;想一眼看清到底会 apply 什么时选清单。

一份可以直接改的 values

values.yaml

三个决定成败的值

ReadWriteMany
必填
RWO 的 claim 不会失败。Kubernetes 会给每个 Pod 各自一个卷, 于是多节点作业的 checkpoint 分片散落在不同 Pod 上,这次 run 再也续不了—— 而日志里没有任何东西说明原因。chart 默认 RWX;StorageClass 必须真的支持它。
url
必填
训练 Pod 往它 POST 指标。用集群内服务名。 外部 ingress 地址会先出集群再绕回来;127.0.0.1 是 worker 自己的回环。
string
必填
没有 TUNEPLANE_WEB_JWT_SECRET,每个进程各用一把自己的密钥签名: 重启即全员掉线,多副本根本不可用。chart 的安装提示会在两项都没设时给出警告。

密钥

secrets.create: true 会从 secrets.data 渲染一个 Secret—— 测试集群上很方便,生产上不对,因为那些值会落进你的 release 历史。 把 secrets.existingSecret 指向由 kubectl create secret、Sealed Secrets 或 External Secrets Operator 产生的 Secret:

chart 替你做的一件事

TUNEPLANE_K8S_STORAGE_PVC 是从 chart 实际创建的那个 claim 填进去的, 所以执行器被告知的永远是真实存在的那个 claim。这一对关系手写时很容易错开—— 执行器去检查一个并非被挂载的 claim、报告健康,而这个错位只有在某次多节点 run 续不上时才暴露。 只有复用一个不归 chart 所有的 claim 时才需要覆盖它:

挂载 Volume

它把这个 claim 以只读方式挂进控制台和 worker,让它们能列出并预览一个 Volume 的文件,同时用 mountPath 填上 TUNEPLANE_VOLUME_ROOT。 后半件是值得知道的那件。光挂上 claim 什么用也没有:没有 TUNEPLANE_VOLUME_ROOT,平台交付一个 Volume 的方式是每次运行都把它的内容复制进工作层,而你挂的那个 claim 从不会被读。不会有任何 东西报错,所以这种配置能放几个月都没人发现。 挂载路径不能位于 storage.mountPath 之下。真这么配控制台会拒绝启动,因为存储根是以可写方式 bind mount 进作业的,位于它下面的 Volume 会有第二条可写路径。
作业又是另外一半,chart 不负责配它。这个后端上引用了 Volume 的作业需要 config.TUNEPLANE_K8S_VOLUME_PVC 指向一个只读 claim;没有它,作业会在准入时被拒绝,而不是 拿到一个空挂载。
corpus.* 是同一个块的废弃写法,保留它是为了让改名之前写的 values 文件继续可用。它照旧挂载那个 claim,并且有意不填 TUNEPLANE_VOLUME_ROOT,这样升级 chart 不会改变现有部署交付 Volume 的 方式。两个块同时设置会被拒绝,而不是替你选一个。

apply 之前先验

确认成功

最后那一条最值得读:它把 TUNEPLANE_K8S_STORAGE_SHARED 的声明和 claim 的真实访问模式做核对, 这正是能在作业之前抓到 RWO claim 的那道检查。
这个 chart 的每次改动都会跑 helm lint 和 helm template 验证。 对着真实集群安装不是这里的 CI 能做的事——没有哪个 runner 有集群—— 所以在你的集群上第一次安装就是第一次真实测试。先跑上面那条 dry-run。

原生采集器网关

设置 gateway.enabled=true。同一个网关在 8443 端口提供 Node 控制、在 8444 端口接收采集器遥测。 必须启用工作存储。 按原生训练指标采集配置设置 config.TUNEPLANE_TELEMETRY_GATEWAY_TARGET、config.TUNEPLANE_TELEMETRY_COLLECTOR_ARTIFACT 和 config.TUNEPLANE_TELEMETRY_SPOOL_ROOT。 将固定版本的采集器产物放在控制台与 worker 可读的工作 PVC 中。 自动 TLS 会提供公开 CA,无需手动填写信任包路径。 使用外部管理的 TLS 时,将 gateway.tlsSecret 指向现有 Secret(含 tls.crt、tls.key), 并将 config.TUNEPLANE_TELEMETRY_TRUST_BUNDLE 设置为控制台与 worker 可读取的公开 CA 文件。 任务不会收到网关私钥。 训练 Pod 只挂载本次启动的只读授权目录 PVC 子路径,以及独立的本地主机缓冲目录。 缓冲使用 hostPath,集群策略必须明确允许配置的路径,并采用持久化本地磁盘和兼容的工作负载 UID。 训练输出继续使用原来的 PVC,不能把共享输出目录作为 SQLite 缓冲。 缓冲属于原主机;调度到另一台主机不会恢复原来的待确认记录。 保留原主机目录供恢复使用,不能把新建的空目录当作已经重放完成。 该部署配置不承诺主机永久丢失后的数据恢复。 初始化容器会把本次启动的目录设为 0700,并交给平台授权文件所属的 UID, 使使用相同 UID 的非 root 训练镜像能够写入。该容器只挂载本次缓冲目录, 以 UID 0 运行,仅保留 CHOWN 和 FOWNER 能力,不挂载授权 PVC 或网关凭据。 集群策略也需允许这一步初始化。root 训练镜像仍可使用。