为什么“helm template”命令会忽略命令行上设置的值?

问题描述 投票:0回答:1

我正在编写一个 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文件的内容吗?

kubernetes kubernetes-helm
1个回答
0
投票

mything.enabled
条件下无需将
if
转换为字符串。

代替:

{{- if (eq (toString .Values.mything.enabled) "true") }}

尝试:

{{- if .Values.mything.enabled }}

PS:我已经使用 Helm v3.14.3 测试了上述内容。

© www.soinside.com 2019 - 2024. All rights reserved.