Helm JSON 正在转换为 configmap 中的映射
Helm JSON being converted to map in 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 数组进行转换?
在您现在的表单中,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
template function 可以将结构写为 JSON 字符串:
{{ $key }}: {{ $val | toJson | quote }}
{{/* ^^^^^^ */}}
我的 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 数组进行转换?
在您现在的表单中,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
template function 可以将结构写为 JSON 字符串:
{{ $key }}: {{ $val | toJson | quote }}
{{/* ^^^^^^ */}}