开始之前

真实发布命令经常包含多个 -f 参数,只比较 values.yaml 和 values-production.yaml 并不够。Helm 会从左到右应用覆盖文件,因此环境对比必须保留真实顺序,并最终检查渲染资源而不是只看原始 YAML。

边看边操作在 Helm 调试 中打开实际工作区
01

导入完整 Chart

选择 Chart 压缩包或目录,让 helpers、子目录、Schema 和模板一起参与计算。只有单个模板而缺少上下文,可能得到误导性错误。

示例
Chart.yaml
values.yaml
values-region.yaml
values-production.yaml
templates/
02

复现两个环境的覆盖栈

分别在基准环境和目标环境中按发布命令的从左到右顺序加入覆盖文件;两侧都会自动继承 Chart 自带的 values.yaml。

示例
基准:values-staging.yaml
目标:values-region.yaml → values-production.yaml
03

检查字段来源

打开“生效 Values”,查看最终值、来源文件以及它覆盖过的文件。点击来源标签可以直接回到对应文件继续检查。

示例
service.type = LoadBalancer
来源:values-production.yaml
04

对比渲染后的资源

渲染两个环境后,分别查看变更、新增、删除和未变化资源。模板条件和计算出来的名称,只有在渲染结果中才能准确体现。

示例
Deployment/acme-web:replicas 2 → 3
Service/acme-web:ClusterIP → LoadBalancer

等价的 Helm 命令

下面两个 -f 的顺序不能随意交换:同一路径被重复赋值时,后面的兼容值优先。

bash
helm template demo ./chart \
  -f values-region.yaml \
  -f values-production.yaml \
  --namespace default

通过检查仍然不能证明什么

本地渲染成功不代表 Admission Webhook 会放行,也不能确认目标集群已经安装 CRD、当前集群状态正确或发布一定成功。生产前仍应使用相同 Helm 主版本,并在目标集群执行服务端 Dry Run。

要点总结
  • values 文件顺序必须与真实 Helm 命令一致。
  • 字段来源可以解释最终值由哪个文件提供。
  • 渲染资源 Diff 能发现模板引起的变化。
  • 目标集群仍然是最终权威校验环境。