使用Helm函数时遇错误:'invalid value; expected string'排查
问题原因及解决方案
核心问题
你的ConfigMap模板中取值路径错误,同时Azure环境加载的Values配置与本地测试逻辑不匹配:
- 你提供的
values.yaml里,testOne和testTwo是嵌套在test节点下的子属性,但模板中直接使用{{ .Values.testOne }},而非正确的{{ .Values.test.testOne }}。 - 本地执行
helm template能成功渲染,大概率是你本地使用的values.yaml中testOne/testTwo是根级属性(而非嵌套在test下),所以取值有效;但Azure环境中加载的values.yaml是符合你提供的嵌套结构,导致模板取值返回nil,而nindent过滤器要求输入必须是字符串,因此触发invalid value; expected string错误。
修复步骤
修改ConfigMap模板的取值路径,补全嵌套属性的路径:
apiVersion: v1 kind: ConfigMap metadata: name: test-application-yaml data: application.yaml: |- testOne: {{ .Values.test.testOne | nindent 6 }} testTwo: {{ .Values.test.testTwo | nindent 6 }}
额外验证
确认Azure环境中$v变量指向的values.yaml路径正确,且内容与你提供的一致(testOne/testTwo确实在test节点下,且为多行字符串格式)。
内容的提问来源于stack exchange,提问作者z07103
相关产品推荐
相关产品推荐

