Helm中变量的使用



我使用的是Helm图,我想知道如何在默认情况下定义值。在我的情况下,我想定义一个没有在values.yaml中定义的日期,我有以下代码:

{{- if ne .Value.persistence.home.restoreBackup.date "" }}
{{- $bkDate := .Value.persistence.home.restoreBackup.date }}
{{- else }}
{{- $bkDate := "2022-01-01" }}
{{- end }}

如果.Value.persistence.home.restoreBackup.date中未定义$bkDate,但当我尝试打印$bkDate,它是空的,我想将其设置为特定日期。

你知道这里出了什么问题吗?

Gotext/template文档注释(在"变量"下):

变量的作用域扩展到";结束";声明它的控制结构的动作("if"、"with"或"range")。。。。

这本质上意味着你不能在if块内定义变量,也不能让它在块外可见。

对于您想要执行的操作,Helmdefault函数提供了一个简单的解决方法。您可以无条件地定义变量,但它的值是Helm值,如果没有定义,则为默认值。

{{- $bkDate := .Value.persistence.home.restoreBackup.date | default "2022-01-01" -}}

(注意,对于default,除了空字符串之外,还有一些东西是"false",包括"unset"、nil和空列表,但实际上这对您来说无关紧要。)

如果您需要比这更复杂的逻辑,那么ternary函数可以满足您的需求{{- $var := $someCondition | ternary "trueValue" "falseValue" -}},但这会导致难以读取的表达式,因此最好进行重构以避免这种情况。

尝试

{{- 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-使用的范围

{{ with PIPELINE }}
# restricted scope
{{ end }}

相关内容

  • 没有找到相关文章

最新更新