Helm无法从设置文件

时间:2019-08-26 13:10:00

标签: kubernetes kubernetes-helm

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

helm template \
  ...
  --set-file secretmap="secretmap.yaml" \
  ...

生成secretmap.yaml,其中包含以下内容:

SEC_1: 111
SEC_2: 222
...

secret.yaml看起来像这样:

kind: Secret
...
data:
{{- range $key, $val := .Values.secretmap }}
  {{ $key }}: {{ $val | b64enc | quote }}
{{- end }}
...

我得到的错误是:

Error: render error in ".../secret.yaml": template: .../secret.yaml:4:31: ... range can't iterate over SEC_1: 111
SEC_1: 222
...

尽管相同的配置也可以与configmap一起使用,
我在-f chart/values/common.yaml

中设置配置映射的位置

1 个答案:

答案 0 :(得分:4)

--set-file将变量的内容设置为文件的文本内容;它根本不尝试解释它。 (在this section of the Helm docs中进行了一些描述;请注意,该示例在ConfigMap中嵌入了一个JavaScript脚本。)这意味着您需要告诉Helm来解析文件。 Helm包含一个记录最少的fromYaml函数,可以做到这一点。

遍历值的内容时,请尝试首先明确地解析它:

{{- range $key, $val := fromYaml .Values.secretmap }}
...
{{ end }}