Helm模板中如何正确引用名称含英文句号的键?
Helm模板中如何正确引用名称含英文句号的键?
这个问题我之前踩过一模一样的坑!Helm用的Go模板引擎,会把键名里的英文句号默认解析成层级分隔符,所以你写.Values.configFiles.file.yaml的时候,它会误以为你要找configFiles下file子对象里的yaml键,自然就报空指针错误了。
给你说个最稳妥的解决办法——用Go模板的index函数,它可以直接通过完整的键名来取值,不会拆分里面的特殊字符。
修改你的ConfigMap模板部分,把原来的取值代码换成下面这样:
data: file.yaml: |- {{- index .Values.configFiles "file.yaml" | toYaml | nindent 4 }}
简单解释下:index函数的第一个参数是要查找的对象(这里就是.Values.configFiles),第二个参数是完整的带点键名(用双引号括起来,确保它被当成一个整体),这样就能精准拿到你在values.yaml里定义的file.yaml对应的配置内容了。
你之前试的转义点号和直接加引号的写法,在Go模板里是不被支持的,模板引擎会把这些当成语法错误,所以肯定行不通。
另外给你个小技巧,修改完模板后,可以先用helm template ./your-chart命令本地渲染测试一下,确认ConfigMap里的内容是不是正确加载了,避免部署的时候踩坑。
内容来源于stack exchange
相关产品推荐
相关产品推荐

