我想用.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
答案 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
。