You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Helm Chart通过Terraform部署时Values未读取问题求助

问题排查与解决

核心问题1:目录结构不匹配Helm规范

你的Terraform配置中指定chart = "./helm",意味着Helm会去当前目录下的helm文件夹寻找标准Chart结构(包含chart.yaml、values.yaml、templates目录),但你当前的目录是把这些文件和main.tf放在同一层级,Helm无法识别到正确的Chart,导致默认的values.yaml没被加载,模板渲染时找不到.Values里的字段,抛出YAML转JSON错误。

修正后的目录结构

├── main.tf
└── helm/
    ├── chart.yaml
    ├── values.yaml
    └── templates/
        ├── rolebinding.yaml
        └── role.yaml

核心问题2:Terraform配置的两处错误

  1. 冗余的values配置:Helm会自动加载指定Chart目录下的values.yaml,不需要手动用file()读取并传入。手动传入反而可能因为格式解析问题导致值无法正确注入,直接移除该配置即可。
  2. set参数键名错误:第三个set的name写的是clusterRole.roleName,但你的模板和values.yaml里用的是clusterRole.clusterRoleName,键名不匹配导致覆盖失效。

修正后的Terraform代码

resource "helm_release" "cluster_role_one" {
  name       = "rbac"
  chart      = "./helm"

  set {
    name  = "clusterRoleBinding.clusterRoleBindingName"
    value = "cluster_role_binding_one"
  }

  set {
    name  = "clusterRoleBinding.groupName"
    value = "cluster_group_one"
  }

  set {
    name  = "clusterRole.clusterRoleName" # 修正键名
    value = "cluster_role_binding_one"
  }
}

额外调试建议

在Terraform部署前,先进入helm目录,用Helm命令本地验证模板渲染是否正常:

helm template .

如果渲染后的YAML能正确显示你配置的名称,说明Chart本身没问题,再运行Terraform部署即可。

内容的提问来源于stack exchange,提问作者Cythrex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:58:03