You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm构建时传入的数组丢失分隔符问题排查

问题:Helm模板渲染后数组列表的逗号丢失原因

ConfigMap模板

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.configmap.name }}
data:
  config.yaml: |-
{{ tpl .Values.configmap.template . | indent 4 }}

Chart中的Values配置

values.config.yaml

configmap:
  name: "some-name"
  template: |-
    list: {{ .Values.config.list }}

values.yaml

config:
  list: [7, 8]

执行的Helm命令

helm template -f values.yaml -f values.config.yaml app .

实际生成的结果

apiVersion: v1
kind: ConfigMap
metadata:
  name: "some-name"
data:
  config.yaml: |-
    list: [7 8]

问题原因

这是Go模板的YAML序列化机制导致的:

  • 当模板直接输出.Values.config.list这种数组类型的值时,Go模板会按照YAML语法规则进行序列化,而YAML允许在数组元素之间省略逗号(只要元素间有空格分隔),模板序列化器会自动选择这种更紧凑的格式输出,于是逗号就被省略了。
  • 你通过tpl函数渲染嵌套模板时,{{ .Values.config.list }}的输出是Go模板序列化后的YAML数组,而非原始定义里带逗号的格式。

可选解决方法

如果需要强制保留逗号,可以用以下两种方式:

  • 方式一:将数组定义为字符串
    修改values.yaml里的配置,把数组写成字符串形式:

    config:
      list: "[7, 8]"
    

    这样模板输出时会直接保留字符串中的逗号。

  • 方式二:用toJson函数转换
    修改values.config.yaml中的模板:

    configmap:
      template: |-
        list: {{ toJson .Values.config.list }}
    

    JSON数组强制保留逗号,渲染后会输出list: [7,8](逗号保留,仅无空格),如果需要空格可以手动调整。

内容的提问来源于stack exchange,提问作者Mojtaba Arezoomand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:15:04