0

这就是我将变量传递给模板文件的方式

{{ 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了空值。请让我知道如何解决它。谢谢。

4

1 回答 1

1

在 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) }}
于 2020-09-25T11:56:54.030 回答