arrays - YAML 中的二维数组

标签 arrays yaml kubernetes-helm helm3

我有一个带有属性 2darrayIPs 的 Helm chart 。该属性从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 图表时通过 helm 命令传递 2d 数组。

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

我哪里出错了?

最佳答案

如果您的模板尝试写出比简单字符串更复杂的内容,则默认的 {{ .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 }}

关于arrays - YAML 中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70093553/

相关文章:

javascript - Lodash:使用最新项目创建新数组

c - 对函数内的结构数组进行排序

JavaScript .sort() 到 Python 排序() : How to Convert Callback in JS to key in Python

php - Mysql子查询多结果

ansible - 一个正确的 YAML 文件是否足以用于正确的 ansible 剧本,除了语法错误吗?

docker - 运行撰写yml文件docker-compose.yml的Docker堆栈部署命令错误

kubernetes - 如何通过 id 从 grafana.com 导入仪表板?没有 json 文件和 configMap

docker - Kubernetes生成动态配置文件

python - 按操作系统限制 Environment.yml 依赖项

docker - 当我将 gitlab 链接到 Kubernetes 时,为什么 api url 被阻止并且没有安装 helm?