Helm 中变量的使用
Usage of variables in Helm
我正在使用 Helm 图表,我想知道如何默认定义一个值。就我而言,我想定义一个未在 values.yaml 中定义的日期,并且我有以下代码:
{{- if ne .Value.persistence.home.restoreBackup.date "" }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}
我想将 $bkDate 设置为一个特定的日期,如果它没有在 .Value.persistence.home.restoreBackup.date
中定义但是当我尝试打印 $bkDate 它是空的。
你知道这里出了什么问题吗?
尝试
{{- if ((.Value.persistence.home.restoreBackup).date) }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}
您可以检查选项:https://helm.sh/docs/chart_template_guide/control_structures/#modifying-scope-using-with
{{ with PIPELINE }}
# restricted scope
{{ end }}
Go text/template
documentation 注释(在“变量”下):
A variable's scope extends to the "end" action of the control structure ("if", "with", or "range") in which it is declared....
这实际上意味着您不能在 if
块内定义变量并使其在块外可见。
对于您想做的事情,Helm default
function 提供了一个简单的解决方法。您可以无条件地定义变量,但它的值是 Helm 值,或者如果未定义则为一些默认值。
{{- $bkDate := .Value.persistence.home.restoreBackup.date | default "2022-01-01" -}}
(请注意,对于 default
,除了 empty-string 之外,还有一些内容是“错误的”,包括“未设置”、nil
和 empty-list,但实际上这对你来说无关紧要。)
如果您需要比这更复杂的逻辑,那么 ternary
函数可以满足您的需求 {{- $var := $someCondition | ternary "trueValue" "falseValue" -}}
但这会导致 hard-to-read 表达式,最好重构以避免这个。
我正在使用 Helm 图表,我想知道如何默认定义一个值。就我而言,我想定义一个未在 values.yaml 中定义的日期,并且我有以下代码:
{{- if ne .Value.persistence.home.restoreBackup.date "" }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}
我想将 $bkDate 设置为一个特定的日期,如果它没有在 .Value.persistence.home.restoreBackup.date
中定义但是当我尝试打印 $bkDate 它是空的。
你知道这里出了什么问题吗?
尝试
{{- if ((.Value.persistence.home.restoreBackup).date) }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}
您可以检查选项:https://helm.sh/docs/chart_template_guide/control_structures/#modifying-scope-using-with
{{ with PIPELINE }}
# restricted scope
{{ end }}
Go text/template
documentation 注释(在“变量”下):
A variable's scope extends to the "end" action of the control structure ("if", "with", or "range") in which it is declared....
这实际上意味着您不能在 if
块内定义变量并使其在块外可见。
对于您想做的事情,Helm default
function 提供了一个简单的解决方法。您可以无条件地定义变量,但它的值是 Helm 值,或者如果未定义则为一些默认值。
{{- $bkDate := .Value.persistence.home.restoreBackup.date | default "2022-01-01" -}}
(请注意,对于 default
,除了 empty-string 之外,还有一些内容是“错误的”,包括“未设置”、nil
和 empty-list,但实际上这对你来说无关紧要。)
如果您需要比这更复杂的逻辑,那么 ternary
函数可以满足您的需求 {{- $var := $someCondition | ternary "trueValue" "falseValue" -}}
但这会导致 hard-to-read 表达式,最好重构以避免这个。