我使用的是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,它是空的,我想将其设置为特定日期。
你知道这里出了什么问题吗?
text/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 }}