Lui*_*qui 1 go kubernetes-helm
我正在为一个项目创建一个图表,该项目具有一个二进制文件,该二进制文件在执行时会生成一个 YAML 格式的配置文件,如下所示:
---
PARAM_1: value1
PARAM_2: value2
Run Code Online (Sandbox Code Playgroud)
我的图表需要读取此文件并将其所有值加载到容器中的环境变量中,因此我config在values.yaml文件中创建了一个变量,当安装图表时,我使用以下方式传递文件内容--set-file:
---
PARAM_1: value1
PARAM_2: value2
Run Code Online (Sandbox Code Playgroud)
接下来我创建一个ConfigMap值为.Values.config:
apiVersion: v1
kind: ConfigMap
metadata:
...
data:
{{ .Values.config }}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我需要用 的值做两件事config:
MY_APP_PARAM_1作为键)ConfigMap将失败.Values.config如何将模板中的值解析为 adict以便我可以使用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 -}}
Run Code Online (Sandbox Code Playgroud)
我很难正确地进行{{-对比{{,但helm install --debug --dry-run .在这部分提供了很多帮助。
这有点混乱,所以我很想看看是否有人有更好的解决方案。