Helm 无法迭代设置文件的范围

nat*_*dev 3 kubernetes kubernetes-helm

我想循环遍历我在 ci 管道中生成的秘密文件。

helm template \
  ...
  --set-file secretmap="secretmap.yaml" \
  ...
Run Code Online (Sandbox Code Playgroud)

secretmap.yaml生成并包含以下内容:

SEC_1: 111
SEC_2: 222
...
Run Code Online (Sandbox Code Playgroud)

Secret.yaml 如下所示:

kind: Secret
...
data:
{{- range $key, $val := .Values.secretmap }}
  {{ $key }}: {{ $val | b64enc | quote }}
{{- end }}
...
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Error: render error in ".../secret.yaml": template: .../secret.yaml:4:31: ... range can't iterate over SEC_1: 111
SEC_1: 222
...
Run Code Online (Sandbox Code Playgroud)

不过,相同的配置确实适用于 configmap,
我在其中设置了 configmap-f chart/values/common.yaml

Dav*_*aze 7

--set-file将变量的内容设置为文件的文本内容;它根本不尝试解释它。( Helm 文档的本节中有一些描述;请注意示例中,ConfigMap 中嵌入了一个 JavaScript 脚本。)这意味着您需要告诉 Helm 解析该文件。Helm 包括一个最少文档的fromYamlHelm 包含一个可以执行此操作的

\n

当您迭代值的内容时,请首先尝试显式解析它:

\n
{{- range $key, $val := fromYaml .Values.secretmap }}\n...\n{{ end }}\n
Run Code Online (Sandbox Code Playgroud)\n