YAML 异常:流集合条目之间缺少逗号

问题描述 投票:0回答:1

我遇到 YAML 解析错误,并且 YAML 来自 Helm 图表。

YAML 输入

   - name: es-cm-update
     {{- with .Values.kubelet.extraEnvFrom }}
     envFrom: {{ toYaml . | nindent 12 }}
     {{- end }}
     image: "{{ .Values.images.k8sawscli.repository }}"
     imagePullPolicy: "Always"        
     command: ["/bin/sh", "-c"]
     args: ["echo ${es_password}"]

JSON 输出错误

错误:YAMLException:第 2 行第 12 列的流集合条目之间缺少逗号: {{- 与 .Values.kubelet.extraEnvF ... ^

对于可能导致错误的原因有什么想法吗?谢谢

yaml kubernetes-helm
1个回答
0
投票

您遇到的错误似乎与 YAML 语法有关,并且似乎特定于在 YAML 中使用 Helm 模板语法。当 YAML 解析器不属于 Helm 渲染上下文时,它们可能难以理解 Helm 模板结构。

在您的情况下,像 {{- with .Values.kubelet.extraEnvFrom }} 这样的 Helm 模板结构在 YAML 解析期间会导致问题。

这里有一些建议:

确保正确的 Helm 渲染:在应用图表之前,请确保您正在使用 Helm 来渲染图表。 Helm 会将模板表达式替换为实际值。

YAML Linting:使用 YAML linter 检查 Helm 图表模板中的任何语法错误。缩进或语法可能存在问题,在您提供的代码片段中并不明显。

检查 Helm Chart 版本兼容性:确保您使用的 Helm Chart 与您安装的 Helm 版本兼容。 Helm 图表语法和功能可能因版本而异。

谨慎使用 YAML 和 toYaml 函数:在 Helm 图表中,YAML 和 toYaml 函数经常用于将数据结构转换为 YAML 格式。确保这些函数被正确使用并且不会干扰周围的 YAML 语法。

基于 Helm 模板语法的可能更正示例:

- name: es-cm-update


{{- with .Values.kubelet.extraEnvFrom }}
  envFrom:
    {{ toYaml . | nindent 6 | trim | indent 4 }}
  {{- end }}
  image: "{{ .Values.images.k8sawscli.repository }}"
  imagePullPolicy: "Always"        
  command: ["/bin/sh", "-c"]
  args: ["echo ${es_password}"]

关键是确保 Helm 模板结构在 Helm 图表中正确使用,并且生成的 YAML 有效。如果问题仍然存在,请考虑分享更多 Helm 图表上下文,或在进行 Helm 相关讨论的论坛或社区中寻求 Helm 和 YAML 专家的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.