YAML 中的二维数组
2D array in YAML
我有一个属性为 2darrayIPs 的舵图。此属性从 values.yaml 文件中获取值,该文件又通过 helm 安装命令
给出
helm-chart/templates/main.yaml
2darrayIPs: {{ .Values.2darrayIPs }}
helm-chart/values.yaml
2darrayIPs: [[]] -- empty array, this value is given via installation command
我在安装 helm chart 时通过 helm 命令传递二维数组。
helm install ..... -f val.yaml
val.yaml
2darrayIPs:
- - 1.1.1.1
- 2.2.2.2
- - 3.3.3.3
- 4.4.4.4
我在安装 helm chart 时遇到此错误:
Error: YAML parse error on templates/main.yaml: error converting YAML to JSON: yaml: did not find expected ',' or ']'
如果我给出一个如下所示的数组,则安装成功,但在我的日志中我得到一个只有一个值而不是两个值的数组:
[[1.1.1.1 2.2.2.2]]
val.yaml
2darrayIPs:
- - 1.1.1.1
- 2.2.2.2
我哪里错了?
这是有效的 yaml。如果可能,您应该针对此处使用的 yaml 解析器的存储库提出问题。同时,Yaml 是 JSON 的超集,因此您可以使用普通 JSON 二维数组:
2darrayIPs: [["1.1.1.1","2.2.2.2"]]
如果你的模板试图写出比简单字符串更复杂的东西,默认的 {{ .Values.name }}
序列化是 Go-native 的东西,并不是特别有用。 Helm 包含一个 toJson
模板函数,还有一个未记录的 toYaml
,可以将这些写成更有用的格式。
# as an array of arrays, in JSON syntax
2darrayIPs: {{ .Values.2darrayIPs | toJson }}
# as an array of arrays, in expanded YAML syntax
# (identical to the previous, but `helm template` output will be
# easier to read)
2darrayIPs: {{- .Values.2darrayIPs | toYaml | nindent 2 }}
# as a YAML-encoded string; for example in a ConfigMap
2darrayIPs: |-
{{ .Values.2darrayIPs | toYaml | indent 2 }}
我有一个属性为 2darrayIPs 的舵图。此属性从 values.yaml 文件中获取值,该文件又通过 helm 安装命令
给出helm-chart/templates/main.yaml
2darrayIPs: {{ .Values.2darrayIPs }}
helm-chart/values.yaml
2darrayIPs: [[]] -- empty array, this value is given via installation command
我在安装 helm chart 时通过 helm 命令传递二维数组。
helm install ..... -f val.yaml
val.yaml
2darrayIPs:
- - 1.1.1.1
- 2.2.2.2
- - 3.3.3.3
- 4.4.4.4
我在安装 helm chart 时遇到此错误:
Error: YAML parse error on templates/main.yaml: error converting YAML to JSON: yaml: did not find expected ',' or ']'
如果我给出一个如下所示的数组,则安装成功,但在我的日志中我得到一个只有一个值而不是两个值的数组:
[[1.1.1.1 2.2.2.2]]
val.yaml
2darrayIPs:
- - 1.1.1.1
- 2.2.2.2
我哪里错了?
这是有效的 yaml。如果可能,您应该针对此处使用的 yaml 解析器的存储库提出问题。同时,Yaml 是 JSON 的超集,因此您可以使用普通 JSON 二维数组:
2darrayIPs: [["1.1.1.1","2.2.2.2"]]
如果你的模板试图写出比简单字符串更复杂的东西,默认的 {{ .Values.name }}
序列化是 Go-native 的东西,并不是特别有用。 Helm 包含一个 toJson
模板函数,还有一个未记录的 toYaml
,可以将这些写成更有用的格式。
# as an array of arrays, in JSON syntax
2darrayIPs: {{ .Values.2darrayIPs | toJson }}
# as an array of arrays, in expanded YAML syntax
# (identical to the previous, but `helm template` output will be
# easier to read)
2darrayIPs: {{- .Values.2darrayIPs | toYaml | nindent 2 }}
# as a YAML-encoded string; for example in a ConfigMap
2darrayIPs: |-
{{ .Values.2darrayIPs | toYaml | indent 2 }}