在Helm中把YAML转换为字符串

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

我有一个头盔图,用来部署一个应用程序,该应用程序有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 }}
yaml kubernetes-helm go-templates
1个回答
0
投票

由于你的问题帮助我解决了我的问题,也许我可以用我的一点知识帮助你。官方的舵机文档 描述了一种强制类型推理的方法。

coffee: "yes, please"
age: !!str 21
port: !!int "80"

HTH,Martin

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