我想遍历在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
答案 0 :(得分:4)
--set-file
将变量的内容设置为文件的文本内容;它根本不尝试解释它。 (在this section of the Helm docs中进行了一些描述;请注意,该示例在ConfigMap中嵌入了一个JavaScript脚本。)这意味着您需要告诉Helm来解析文件。 Helm包含一个记录最少的fromYaml
函数,可以做到这一点。
遍历值的内容时,请尝试首先明确地解析它:
{{- range $key, $val := fromYaml .Values.secretmap }}
...
{{ end }}