helm chart 模板:如果值不存在,默认为 true

问题描述

我试图声明,如果变量为真或不存在(即,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,这表明很多人都被这个绊倒了。看了那个问题的其他解决方案,我觉得我的其实是最简单的,比较可惜。