我在config_map.yaml和helm值文件中有以下模板。
在cm模板中,我有以下内容:
"VARKEY": {{.Values.VARKEY}}
字符串
在values文件中,我有以下内容:
"VARKEY": ["var1", "var2"]
型
当我创建ConfigMap或使用Helm模板来测试它时,我收到以下信息。
"VARKEY": [var1 var2]
型
我的应用程序期望cm值如下。期望输出:
"VARKEY": ["var1", "var2"]
型
如何实现预期产出
我如何才能实现预期的输出,为什么Helm要更改values文件中的数据?
实际上,该Map是使用JSON格式设置这样,因为应用程序是预期conf.json文件.和问题出现在最初描述的后格式的值是由 Helm 改变.这是最好的方法来修复?squote函数?
templates/templates map.yaml
data:
conf.json: |+
{
{{ .Values.VARKEY }},
"{{ .Values.OTHERKEY_STRING }}",
{{ .Values.ANOTHERKEY_INT }}"
}
型
2条答案
按热度按时间vwoqyblh1#
你的值是一个YAML列表,你在模板代码中看到了这个结构。ConfigMap的值总是字符串,你还需要确保输出是一个YAML字符串,而不是其他类型的结构。
一种解决方法是显式引用
values.yaml
中的值,然后您将获得预期的输出(需要注意)。个字符
另一种选择是继续接受列表语法中的值,但随后在输出中显式地将其呈现为JSON。仅仅写出
{{ $someList }}
将从Go模板引擎获得默认格式,这并不是特别有用;您需要使用toJson
模板函数来获取JSON语法。的字符串
在最后一个例子中,我显式地使用了YAML块标量语法。在YAML中的各种引号和转义机制中,它是唯一一种对字符串内容不敏感的机制,前提是您在每行的开头放置一致数量的空格使用
squote
将字符串放在单引号中对字符串本身包含单引号是敏感的,quote
和双引号也是如此。bnlyeluc2#
考虑直接将'values'中的VARKEY定义为字符串,而不是字符串数组的形式。
values.yaml
字符串
模板/cm.yaml
型
输出
型