如何从含短横线的Helm子Chart中访问父Chart的值?
解决Helm子Chart名称含短横线时访问模板的语法错误问题
问题原因
Go模板语法里,用.访问对象属性时,属性名必须是合法标识符(不能包含短横线-),所以.Subcharts.foo-bar会被错误解析成.Subcharts.foo减去bar,触发bad character U+002D '-'错误。
两种可行的规避方案
方案1:用index函数直接访问
借助Go模板的index函数,通过字符串键获取子Chart上下文,避开短横线的语法冲突:
{{ template "foo-bar.fullname" (index .Subcharts "foo-bar") }}-rest-of-string
方案2:先赋值变量再调用模板
如果需要多次访问该子Chart,先把上下文赋值给变量,代码可读性更强:
{{- $fooBarSubchart := index .Subcharts "foo-bar" -}} {{ template "foo-bar.fullname" $fooBarSubchart }}-rest-of-string
两种方案在Helm v3.13.0中都能正常生效,不需要修改上游子Chart的名称。
内容的提问来源于stack exchange,提问作者rasebo
相关产品推荐
相关产品推荐

