使用Helm命名模板时为何出现解析错误?
问题原因及解决方法
你的Helm模板报错是因为语法错误:(include "anotherchart.bar" $.)里的$.写法不合法。
Go模板中$是预定义的根上下文变量,直接用$就可以代表根上下文,不需要额外加.,写成$.属于无效语法,Helm解析器无法识别,所以抛出了"unexpected <.> in operand"的错误。
修正后的模板代码
如果要给anotherchart.bar传递根上下文,改成这样:
{{- define "mychart.foo" -}} {{- printf "%s-%s" (include "anotherchart.bar" $) .roleSuffix }} {{- end -}}
如果需要传递当前模板的上下文(也就是调用mychart.foo时的当前.对象),则写成:
{{- define "mychart.foo" -}} {{- printf "%s-%s" (include "anotherchart.bar" .) .roleSuffix }} {{- end -}}
你之前关于.roleSuffix在range循环内可用的判断是对的,只是这个基础语法错误导致解析失败,和括号组合无关,修正后就能正常执行helm template命令了。
内容的提问来源于stack exchange,提问作者Shannon
相关产品推荐
相关产品推荐

