首页 > 解决方案 > Helm JSON 被转换为 configmap 中的映射

问题描述

我的 values.yaml 中有一个这样的 json 对象数组:

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

当它被移动到我的配置映射时,它变成:

key: [map[A:a 1:2] map[B:b 3:4] map[C:c 5:6]]

我没有对模板做任何花哨的事情:

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

那么,如何防止 helm 使用我的 JSON 数组进行转换?

标签: kubernetes-helm

解决方案


在您现在拥有的形式中, 的值key是一个对象数组,然后您将获得默认的 Go 序列化。

如果您希望它完全按照特定的 JSON 字符串传递,您可以在 Helm 值中引用它:

key: '[{A:a, 1:2}, {B:b, 3:4}, {C:c, 5:6}]'
#    ^  surround the string with quotes   ^

或者,如果您想使用该语法(或更复杂的 YAML 结构)保留值,Helm 包含一个toJson模板函数,可以将结构写为 JSON 字符串:

{{ $key }}: {{ $val | toJson | quote }}
{{/*                  ^^^^^^       */}}

推荐阅读