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

如何避免Helm将values.yaml中的JSON数组转换为map存入ConfigMap

问题根因

你遇到的格式转换是Helm的默认行为:Helm加载values.yaml时会先把其中的JSON/YAML结构解析为Go原生数据类型(你的配置会被解析为[]map[string]interface{}类型的切片),直接对该类型的值使用quote过滤器时,会触发Go的默认字符串序列化逻辑,最终输出map[xxx]格式的内容。

解决方案

有两种常用方案可以解决这个问题,按需选择即可:

  • 方案1:使用toJson过滤器序列化(推荐)
    直接用Helm内置的toJson函数,将解析后的Go对象重新序列化为标准JSON格式,修改你的模板逻辑如下:

    data:
      {{- range $key, $val := .Values.configs }}
      {{ $key }}: {{ $val | toJson }}
      {{- end }}
    

    如果需要强制将输出作为字符串包裹引号,也可以叠加quote过滤器:{{ $val | toJson | quote }},该方案的优势是保留了结构化数据的可操作性,你依然可以在模板中对数组内的元素做二次处理。

  • 方案2:values中直接定义为字符串
    如果你不需要在模板中操作该数组的内部元素,可以直接在values.yaml中将该数组定义为字符串类型,避免Helm将其解析为Go对象:

    key: '[{A:a, 1:2}, {B:b, 3:4}, {C:c, 5:6}]'
    

    这种场景下原有模板逻辑不需要做任何修改即可正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:57:00