在 Gotext/template
模板中,特殊变量.
是模板的参数。还要记住,语法.foo
意味着查找foo
对象中的字段.
。所以在这个上下文中,模板参数替换了 Helm 全局对象;.Values
尝试在您作为参数传递的字典中查找它。
对此的一种解决方案是.Values
在调用站点也传递(如果您需要任何其他顶级 Helm 对象,您还需要手动传递这些对象):
{{ template "fluentd-config" (dict "replica" "bbcc" "pattern" "aabb" "Values" .Values) }}
我使用的一个更复杂的模式是传递一个列表作为模板参数,然后从中提取字段。您可以使用Sprig 列表函数来构造和解构列表。(你可以做类似的事情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) }}