【问题标题】:Using a yaml array with helm template使用带有 helm 模板的 yaml 数组
【发布时间】:2022-01-31 21:56:13
【问题描述】:

我有一个代表 Helm 图表的目录结构如下:

Chart.yaml
values.yaml
templates/
  template.tpl

values.yaml:

foo: ["bar", "baz"]

FOO:
 - BAR
 - BAZ

模板/模板.tpl:

thing1: {{ .Values.foo }}
thing2: {{ .Values.FOO }}

在此目录中运行helm template . 的输出。 (Helm 版本 v3.6.3)

---
# Source: test/templates/template.tpl
thing1: [bar baz]
thing2: [BAR BAZ]

您可以在这里看到 thing1 和 thing2 都映射到 YAML 数组,每个数组包含一个字符串,即字符串 "bar baz""BAR BAZ"

我希望数组中的项目在模板化后仍然是单独的字符串。但是我在 helm 模板语言文档(如 {{ list .Values.foo }})中找到的内置函数并没有起到任何作用。

有人可以指点我如何正确模板化 YAML 字符串数组吗?

【问题讨论】:

    标签: templates yaml kubernetes-helm


    【解决方案1】:

    Helm 使用 Go 模板,而 Go 模板不知道 YAML。因此它只会以 Go 的默认格式发出 sequence(YAML 没有数组),恰好是 [<item> ...]

    您需要告诉 Helm 将值转换为 YAML 格式:

    thing1: {{ .Values.foo | toYaml | nindent 2 }}
    thing2: {{ .Values.FOO | toYaml | nindent 2 }}
    

    toYaml 进行实际转换(它是kind-a undocumented),nindent 2 添加一个换行符,然后每行缩进 2 个空格。当toYaml 选择将您的输入呈现为多行时,这一点很重要,您无法控制。

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2020-01-26
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多