我在 Helm 图表(例如)中经常看到的一种模式是将布尔值设置为默认值true
,除非提供了一些覆盖值:
feature_enabled_in_k8s_resource: {{ default true .Values.foo_feature_enabled }}
Run Code Online (Sandbox Code Playgroud)
也就是说 - “如果foo_feature_enabled
设置为 Helm 输入中的任何值(通过--set
、values.yaml
等),则设置feature_enabled_in_k8s_resource
为该值 - else(如果未设置),则设置feature_enabled_in_k8s_resource
为true
”
但是,我无法按照预期覆盖该值 -false
在 中设置值values.yaml
和/或--set foo_feature_enabled=false
作为参数传递,仍然会导致模板保存值为true
。
我怀疑这是因为这false
是一个“虚假”值,因此default
将其解析为“需要替换”。
传递一个字符串值("false"
in values.yaml
、 或--set-string foo_feature_enabled=false
)确实出现(从helm template [...]
输出中)设置为feature_enabled_in_k8s_resource
-"false"
但不清楚 Kubernetes 产生的实际应用程序是否会正确解释它(也就是说 - 它可能会解释一个非空字符串作为“真实”,让我们回到原来的默认行为)。即使这有效,它在某种程度上感觉很糟糕,表明我错过了“正确的”解决方案。
(据推测,实际的解决方案是 Helm 图表永远不会default
-true
但在使用我无法控制的图表时,这对我没有帮助!)
小智 7
使用ne(不等于)的干净(尽管有点不清楚)解决方案
feature_enabled_in_k8s_resource: {{ ne .Values.foo_feature_enabled false }}
Run Code Online (Sandbox Code Playgroud)
.Values.foo_feature_enabled |
真的 | 错误的 | 空或空 | 未指定 |
---|---|---|---|---|
feature_enabled_in_k8s_resource |
真的 | 错误的 | 真的 | 真的 |
归档时间: |
|
查看次数: |
5928 次 |
最近记录: |