如何解决当我在模板中的模板文件中传递参数时,值文件中的数据丢失
这就是我将变量传递给模板文件的方式
{{ template "fluentd-config" (dict "replica" "bbcc" "pattern" "aabb" ) }}
这是模板文件
{{- define "fluentd-config" -}}
image: {{ .Values.fluentd.kinesis_image }}
myname: {{ .replica }}
pattern: {{ .pattern }}
{{- end -}}
,当我运行它时,.Values.fluentd.kinesis_image
为空。请让我知道如何解决。谢谢。
解决方法
在Go text/template
模板中,特殊变量.
是模板的参数。还请记住,语法.foo
意味着在对象foo
中查找字段.
。因此,在这种情况下,template参数将替换Helm全局对象; .Values
尝试在您作为参数传递的字典中查找它。
对此的一种解决方案是也将.Values
传入呼叫站点(如果您需要其他任何顶级Helm对象,则还需要手动将其传入):
{{ template "fluentd-config" (dict "replica" "bbcc" "pattern" "aabb" "Values" .Values) }}
我使用的更复杂的模式是将列表作为模板参数传递,然后从中提取字段。您可以使用Sprig list functions来构造和解构列表。 (您可以使用dict
进行类似的操作来命名参数,并且在语法上可能更简单。)
{{- define "fluentd-config" -}}
{{- $top := index . 0 -}}
{{- $params := index . 1 -}}
image: {{ $top.Values.fluentd.kinesis_image }}
myname: {{ $params.replica }}
pattern: {{ $params.pattern }}
{{- end -}}
{{- $params := dict "replica" "bbcc" "pattern" "aabb" -}}
{{ template "fluentd-config" (list . $params) }}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。