【发布时间】:2020-05-21 01:59:12
【问题描述】:
我正在为一个项目创建一个图表,该项目有一个二进制文件,执行时会生成一个 YAML 格式的配置文件,如下所示:
---
PARAM_1: value1
PARAM_2: value2
我的图表需要读取此文件并将其所有值加载到容器中的环境变量中,因此我在我的 values.yaml 文件中创建了一个变量 config 并在安装图表时传递文件内容使用--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 循环进行这些更改?
【问题讨论】:
-
Search GitHub 用于使用您的语言与您感兴趣的格式进行交互的包/库。
-
此外,Go 模板遵循与其他 Go 包相同的规则:它看不到不以 rune Unicode 定义为大写字母开头的结构字段。您需要将字段命名为
Config而不是config才能在模板中使用它。 -
感谢@JesseAmano 的提示。我阅读了一堆 Helm 图表,但没有看到任何与我正在寻找的相似的东西。关于
config与Config的情况,它可能是特定于helm 的,但该变量是称为Value的外部变量的一部分,所以那里没有问题。
标签: go kubernetes-helm