【问题标题】:Nested arrays in Helm YamlHelm Yaml 中的嵌套数组
【发布时间】:2021-12-18 11:35:14
【问题描述】:

我正在使用 Helm。

我有一个包含以下配置的 settings.json 文件:

"CustomSetting": {
  "ArrayOfArrays": {{ .Values.customSetting.arrayOfArrays | toJson }}
}

而我的 values.yaml 文件包含以下值:

customSetting:
  arrayOfArrays: [
      [ "someValue1", "someValue2" ],
      [ "anotherValue3", "anotherValue4" ]
  ]

我的问题是我无法使用此设置运行我的图表,因为我收到以下错误:

无法解析 YAML:将 YAML 转换为 JSON 时出错:yaml:第 X 行:未找到预期的密钥

如何在我的 settings.json 文件中获取这个嵌套数组?

【问题讨论】:

  • settings.json 文件在哪里使用? (注入到 ConfigMap 中?)更具体地说,您是否使用the tpl function 来扩展 JSON 文件中的模板?编辑问题以显示您如何访问 settings.json 文件会很有帮助。
  • (如果您遇到“无法解析 YAML”错误,运行 helm template --debug . 将显示正在生成的原始文本,有时很明显某些内容缩进或换行不正确不见了。)

标签: json yaml kubernetes-helm


【解决方案1】:

我也遇到了同样的问题,找到了以下适合我的方法:

  ArrayExample: |
    [
      [
        "asdf1",
        "asdf2"
      ],
      [
        "asdf3",
        "asdf4"
      ]
    ]

然后通过 helm 调用 var:"foo": {{ .Values.custom.ArrayExample | toPrettyJson }}

祝你好运

【讨论】:

  • 我们的设置出现执行错误:无法解析 YAML:将 YAML 转换为 JSON 时出错:yaml:第 X 行:未找到预期的密钥
【解决方案2】:

通过在 yaml 中使用 | 将设置转换为 multiline string。这样你的 json 配置就不会被 helm 处理。

customSetting:  
  arrayOfArrays: |
    [
      [ "someValue1", "someValue2" ],
      [ "anotherValue3", "anotherValue4" ]
    ]

现在你的变量是一个字符串,可以在没有任何修饰符的情况下使用

"CustomSetting": {
  "ArrayOfArrays": {{ .Values.customSetting.arrayOfArrays }}
}

【讨论】:

  • 在您的设置中遇到执行错误:在 <.values.customsetting.arrayofarrays>: can't evaluate field arrayOfArrays in type interface {}
  • @Hristo 我调整了 sn-p。你能再试一次吗?
  • 现在得到与我在帖子中提到的相同的错误:无法解析 YAML:将 YAML 转换为 JSON 时出错:yaml:第 X 行:未找到预期的密钥
  • 如果有任何帮助,我正在使用 vscode-helm v0.4.0 对文件和 helm 进行 lint:version.BuildInfo{Version:"v3.7.1 ", GitCommit:"1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4", GitTreeState:"clean", GoVersion:"go1.16.9"}
猜你喜欢
  • 2017-04-03
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多