我正在编写一个 Helm 图表,其 Values.yaml 文件中布尔标志的默认值为 true,并且我想在该标志设置为 false 时测试结果。
需要明确的是,项目的目录结构如下所示:
.
├── Chart.yaml
├── README.md
└── charts
└── a
├── Chart.yaml
├── templates
│ ├── _helpers.tpl
│ ├── b
│ │ └── deployment.yaml
│ └── namespace.yaml
└── values.yaml
模板 yaml 或多或少看起来像这样:
{{- if (eq (toString .Values.mything.enabled) "true") }}
image: "foo/trueimage"
{{- else }}
image: "foo/fakeimage"
{{- end }}
我的 Values.yaml 文件实际上包含这样的内容:
mything:
enabled: true
但是以下命令不会生成预期的 YAML:
helm template . --set mything.enabled=false --debug > output.yaml
我尝试过使用 0、"false" 和 "" 来代替命令行中的 false。没有运气。
template命令似乎忽略了--set之后的所有内容。
我在这里缺少什么?是目录结构惹的祸吗?默认情况下,命令行--set值不会覆盖values.yaml文件的内容吗?
在
mything.enabled
条件下无需将 if
转换为字符串。
代替:
{{- if (eq (toString .Values.mything.enabled) "true") }}
尝试:
{{- if .Values.mything.enabled }}
PS:我已经使用 Helm v3.14.3 测试了上述内容。