helm with if condition及其值的范围

问题描述 投票:0回答:1

我想用.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
kubernetes kubernetes-helm
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.