我有一个头盔图,用来部署一个应用程序,该应用程序有YAML格式的配置文件。目前,我的头盔图使用以下代码。
values.yaml
databaseUser: "dbuser"
configFiles:
db_config_file.yaml: |-
databaseUser: {{ .Values.databaseUser }}
databasePort: 1234
[...]
[...]
templesconfigmap.yaml
data:
{{- range $name, $config := .Values.configFiles }}
{{ $name }}: |-
{{ tpl $config $ | indent 4 }}
{{- end }}
这段代码让我可以轻松地改变 databaseUser
的值,但问题是,如果我想更改 databasePort
我必须重写整个配置,这样。
configFiles:
db_config_file.yaml: |-
databaseUser: {{ .Values.databaseUser }}
databasePort: 9876
这很不方便 这样做是因为 db_config_file.yaml
内容被解释为字符串,因为我把它交给了 tpl
函数,它只接受字符串。
所以我的问题是,有没有办法在Helm模板中把YAML转换成字符串,并得到以下东西。
databaseUser: "dbuser"
configFiles:
db_config_file.yaml: # Content is not a string block
databaseUser: {{ .Values.databaseUser }}
databasePort: 1234
[...]
[...]
data:
{{- range $name, $config := .Values.configFiles }}
{{ $name }}: |-
{{ tpl (<a toString function> $config) $ | indent 4 }}
{{- end }}
由于你的问题帮助我解决了我的问题,也许我可以用我的一点知识帮助你。官方的舵机文档 描述了一种强制类型推理的方法。
coffee: "yes, please"
age: !!str 21
port: !!int "80"
HTH,Martin