本地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配置的两处错误
- 冗余的
values配置:Helm会自动加载指定Chart目录下的values.yaml,不需要手动用file()读取并传入。手动传入反而可能因为格式解析问题导致值无法正确注入,直接移除该配置即可。 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
相关产品推荐
相关产品推荐

