我正在为具有二进制文件的项目创建图表,该二进制文件在执行时会生成YAML格式的配置文件,如下所示:
---
PARAM_1: value1
PARAM_2: value2
我的图表需要读取此文件并将其所有值加载到容器中的环境变量中,因此我在
config
文件中创建了一个变量values.yaml
,并且在安装该图表时,我使用--set-file
传递了文件内容:helm install <CHART> --set-file config=/path/to/yaml/config/file
接下来,我创建一个
ConfigMap
,其值为.Values.config
:apiVersion: v1
kind: ConfigMap
metadata:
...
data:
{{ .Values.config }}
我遇到的问题是我需要对
config
的值做两件事:MY_APP_PARAM_1
作为键)ConfigMap
将失败如何将模板中
.Values.config
的值解析为dict
,以便可以使用range
循环进行这些更改? 最佳答案
最后,我能够执行以下操作:
{{ $lines := splitList "\n" .Values.config -}}
{{- range $lines }}
{{- if not (. | trim | empty) -}}
{{- $kv := . | splitn ":" 2 -}}
{{ printf "MY_APP_%s: %s" $kv._0 ($kv._1 | trim | quote) | indent 2 }}
{{ end -}}
{{- end -}}
我很难正确设置
{{-
和{{
,而helm install --debug --dry-run .
在这部分中有很大帮助。这有点杂乱无章,所以我很想看看是否有人有更好的解决方案。
关于go - 将YAML字符串转换为Helm模板中的dict,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55345358/