Helm 将单个字符串传递给模板
Helm pass single string to a template
有多个关于使用字典将多个变量传递给 Helm 中的模板的 Whosebug 答案。
但是,我想将单个变量传递给模板。例如,我想定义如下模板,接收输入(准确地说是一个字符串)。
{{- define "blahblah" $var }}
{{- if .Values.nameOverride }}
name: {{ .Values.nameOverride }}-$var
{{- else }}
name: $var
{{- end }}
{{- end }}
因此,像下面这样写,我希望结果是 name: myname-whatever
或 name:whatever
(假设 .Values.nameOverride
被定义为 'myname')
{{- include "blahblah" "whatever" }}
如何让 helm 知道哪个是模板的输入变量?谢谢!
一个Gotext/template
模板只接受一个参数,它在模板内部的值是特殊变量.
。所以你可以,例如:
{{- define "name" -}}
name: {{ . }}
{{ end -}}
{{- template "name" "foo" -}}
name: foo
或者,你可以传入 Helm top-level 对象
{{- define "name-override" -}}
name: {{ .Values.nameOverride }}
{{ end -}}
{{- template "name-override" . -}}
请注意,在这种情况下,在 define
d 模板中,我们指的是 .
的 Values
字段,当我们通过 [=19= 调用它时],我们明确传递 .
作为参数。不过,同样,您只能获得一个参数。
这里你需要两个参数:Helm根值加上你要传入的附加值。我倾向于用一个list
来打包两个参数合并为一个值:
{{- define "blahblah" -}}
{{- $top := index . 0 -}}
{{- $var := index . 1 -}}
{{- if $top.Values.nameOverride -}}
name: {{- $top.Values.nameOverride -}}-{{ $var }}
{{ else -}}
name: {{ $var }}
{{ end -}}
{{- end -}}
{{ include "blahblah" (list . "whatever") | indent 2 }}
所以模板的参数,当你调用它的时候,是一个列表; index . 0
是 .
中的第一项,或 top-level Helm 值,index . 1
是第二项。相反,由于 .
是一个列表,您需要使用保存该值的变量名称 $top
来限定实际上属于 top-level Helm 值一部分的值。
有多个关于使用字典将多个变量传递给 Helm 中的模板的 Whosebug 答案。
但是,我想将单个变量传递给模板。例如,我想定义如下模板,接收输入(准确地说是一个字符串)。
{{- define "blahblah" $var }}
{{- if .Values.nameOverride }}
name: {{ .Values.nameOverride }}-$var
{{- else }}
name: $var
{{- end }}
{{- end }}
因此,像下面这样写,我希望结果是 name: myname-whatever
或 name:whatever
(假设 .Values.nameOverride
被定义为 'myname')
{{- include "blahblah" "whatever" }}
如何让 helm 知道哪个是模板的输入变量?谢谢!
一个Gotext/template
模板只接受一个参数,它在模板内部的值是特殊变量.
。所以你可以,例如:
{{- define "name" -}}
name: {{ . }}
{{ end -}}
{{- template "name" "foo" -}}
name: foo
或者,你可以传入 Helm top-level 对象
{{- define "name-override" -}}
name: {{ .Values.nameOverride }}
{{ end -}}
{{- template "name-override" . -}}
请注意,在这种情况下,在 define
d 模板中,我们指的是 .
的 Values
字段,当我们通过 [=19= 调用它时],我们明确传递 .
作为参数。不过,同样,您只能获得一个参数。
这里你需要两个参数:Helm根值加上你要传入的附加值。我倾向于用一个list
来打包两个参数合并为一个值:
{{- define "blahblah" -}}
{{- $top := index . 0 -}}
{{- $var := index . 1 -}}
{{- if $top.Values.nameOverride -}}
name: {{- $top.Values.nameOverride -}}-{{ $var }}
{{ else -}}
name: {{ $var }}
{{ end -}}
{{- end -}}
{{ include "blahblah" (list . "whatever") | indent 2 }}
所以模板的参数,当你调用它的时候,是一个列表; index . 0
是 .
中的第一项,或 top-level Helm 值,index . 1
是第二项。相反,由于 .
是一个列表,您需要使用保存该值的变量名称 $top
来限定实际上属于 top-level Helm 值一部分的值。