Helm传参模板无法识别.Values问题求助
问题原因
当你通过(dict "subdomain" "domain")给模板传参时,模板内部的上下文.被替换成了这个新创建的字典,原来包含全局配置的.Values并不在这个字典里,所以访问.Values.domain会触发空指针错误。
解决方案
提供两种可行的修复方式:
方式一:将全局Values传入参数字典
修改configmap.yaml中的模板调用,把全局的.Values也加入到传入的字典中:
apiVersion: v1 kind: ConfigMap metadata: name: nginx-virtual-servers data: default.conf: | {{- include "mychart.virtualserver" (dict "subdomain" "domain" "Values" .Values) | nindent 6 }}
这样模板里的.Values.domain就能正常读取到配置值,无需修改_helpers.tpl。
方式二:用merge合并参数与全局上下文
使用Helm的merge函数,将自定义参数字典和全局上下文合并,这样模板内部的.既包含传入的subdomain,也保留了原有的.Values等全局变量:
apiVersion: v1 kind: ConfigMap metadata: name: nginx-virtual-servers data: default.conf: | {{- include "mychart.virtualserver" (merge (dict "subdomain" "domain") .) | nindent 6 }}
这种方式无需修改_helpers.tpl,同时模板可以访问所有全局上下文内容,适用性更广。
内容的提问来源于stack exchange,提问作者DDave
相关产品推荐
相关产品推荐

