掌控if条件及其对值集的范围

时间:2018-09-08 15:55:36

标签: kubernetes kubernetes-helm

我想用.Values.userTemplate覆盖用户模板(如果存在)。但是当$user存在时,我总是以undefined的身分得到.Vaues.userTemplate。如果我删除了if条件并使用了{{- $user := tpl .Values.userTemplate . -}},它会给出正确的值。但是在if编码中,它没有设置$user的值。

有什么地方做错了吗? $user的范围是否仅保留在if条件内?如果存在$user,有没有办法覆盖.Values.userTemplate

    # values
    user: "default"
       # somewhere in other chart we define the  template
    userTemplate: '{{ include "username" . }}'

    # template
    {{- define "user" -}}
    {{- if .Values.userTemplate -}}
    {{- $user := tpl .Values.userTemplate . -}}
    {{- else -}}
    {{- $user := .Values.user -}}
    {{- end -}}
    {{- $user -}}

    # output of `{{ template "user" . }}` should be the value set in `{{ template "username" . }} in different chart. 

Tom

1 个答案:

答案 0 :(得分:0)

我使用头盔2.10。 我做了一个小测试。如果我理解正确,那就是您想要的:

values.yml:

user: "default"
userTemplate: '{{ include "userName" . }}'
otherName: "john"

_helpers.tpl:

{{- define "userName" -}}
{{- .Values.otherName -}}
{{- end -}}

{{- define "user" -}}
{{- if .Values.userTemplate -}}
{{- tpl .Values.userTemplate . -}}
{{- else -}}
{{- .Values.user -}}
{{- end -}}
{{- end -}}

test.yml:

name: {{ template "user" . }}

有了userTemplate,我得到了john,没有userTemplate了,我得到了default