如何在不修改Helm子chart的前提下向其传递父chart的值?
解决方案
要实现将父chart的rename值传递给子chart并得到期望输出,可通过以下方式完成,完全符合你的约束条件:
修改父chart的
values.yaml
将子chart的greeting值直接覆盖为引用父chart的rename字段,内容如下:rename: "Wilson" child: greeting: "Hello {{ .Values.rename }}"原理说明
- 子chart的模板使用
{{ tpl .Values.greeting $ }},其中$代表Helm的根上下文(包含所有层级的values)。 - 当父chart覆盖子chart的
greeting值后,tpl函数会在根上下文下解析{{ .Values.rename }},直接获取父chart中定义的Wilson值。 - 此方法无需修改子chart、不使用globals或锚点,且保留了
rename字段供父chart其他模板使用。
- 子chart的模板使用
验证结果
在父chart目录执行helm template .,输出将符合预期:--- # Source: parent/charts/child/templates/test.yaml result: Hello Wilson
内容的提问来源于stack exchange,提问作者Mika Katua
相关产品推荐
相关产品推荐

