【问题标题】:data from values file lost when I pass parameter in template file in hele当我在 hele 的模板文件中传递参数时,值文件中的数据丢失
【发布时间】:2020-09-25 11:31:31
【问题描述】:

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

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

【问题讨论】:

    标签: kubernetes-helm helmfile


    【解决方案1】:

    在 Go text/template 模板中,特殊变量 . 是模板的参数。还要记住语法.foo 表示在对象. 中查找字段foo。所以在这个上下文中,模板参数替换了 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) }}
    

    【讨论】:

    • 虽然很完美。即使它是正确的答案,我也需要修复一些更改。 ` {{- $top := 索引 . -}}` 和 {{- $params := index . "replica" -}}。无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多