在Helm模板中将YAML字符串转换为dict

问题描述 投票:0回答:1

我正在为具有二进制文件的项目创建一个图表,该二进制文件在执行时会生成YAML格式的配置文件,如下所示:

---
PARAM_1: value1
PARAM_2: value2

我的图表需要读取此文件并将其所有值加载到容器中的环境变量中,因此我在config文件中创建了一个变量values.yaml,当安装图表时,我使用--set-file传递文件内容:

helm install <CHART> --set-file config=/path/to/yaml/config/file

接下来我创建一个qazxsw poi,值为qazxsw poi:

ConfigMap

我遇到的问题是我需要用.Values.config的值做两件事:

  • 使用预定义值为所有键添加前缀(因此在上面的示例中,我将apiVersion: v1 kind: ConfigMap metadata: ... data: {{ .Values.config }} 作为键)
  • 确保值都是字符串,否则config将失败

如何在我的模板中将MY_APP_PARAM_1的值解析为ConfigMap,以便我可以使用.Values.config循环进行这些更改?

go kubernetes-helm
1个回答
2
投票

最后,我能够做到这样的事情:

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 -}} 对齐,{{-在这部分帮助很大。

这有点混乱,所以我很想知道是否有人有更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.