问题描述
我试图声明,如果变量为真或不存在(即,var 的默认值为真),则应存在 helm 模板中的代码块。以下工作:
{{- if or .Values.livenessProbe (not (hasKey .Values "livenessProbe")) }}
...
{{- end }}
这看起来比较复杂,有没有更简单的?我以几种方式尝试使用 default
函数,但它们都导致忽略值(存在与否,真或假,块总是被渲染):
{{- if (default true .Values.livenessProbe) }}
...
{{- end }}
解决方法
请参阅 https://helm.sh/docs/chart_template_guide/function_list/#default 以了解为什么 default
无法按预期工作:布尔值 false 被视为“空”,因此当值为 false 时,默认值返回默认值,即忽略实际值!
我还发现了 https://github.com/helm/helm/issues/3308,这表明很多人都被这个绊倒了。看了那个问题的其他解决方案,我觉得我的其实是最简单的,比较可惜。