You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Helm Template部署akv2k8s Secrets失败,YAML转JSON报错

解决Helm Template部署akv2k8s Secrets时的YAML格式错误

问题描述

使用Helm Template部署akv2k8s Secrets时执行失败,报错信息:

error converting YAML to JSON: yaml: mapping values are not allowed in this context

已尝试在线YAML校验工具排查但未发现问题,使用--debug参数能够渲染出预期的清单文件。相关配置文件如下:

values.yaml

akv2k8s:
  enabled: true
  vaults:
    vaultcmms:
      secretkey: secretvalue
      secretkey1: secretvalue1
    vaulttenant:
      secretkey: secretvalue
      secretkey1: secretvalue2

akv2k8s.yaml(原模板文件)

{{- if .Values.akv2k8s.enabled -}}
{{- range $vault, $content := .Values.akv2k8s.vaults }}
  {{- range $key, $value := $content }}
    apiVersion: spv.no/v2beta1
    kind: AzureKeyVaultSecret
    spec:
      vault: {{ $vault }}
        name: {{ $key}}
        object:
          name: {{ $value}}
          type: secret
    {{- end }}
    {{- end }}
{{- end }}

错误原因

模板文件的YAML结构存在缩进错误:spec.vault被赋值为字符串{{ $vault }},但后续的name字段缩进级别与vault同级,导致YAML解析器认为vault的值是一个映射结构,与前面的字符串赋值冲突,触发格式错误。

修复方案

调整模板中spec的结构,将vault定义为包含name字段的映射,同时修正整体缩进:

修复后的akv2k8s.yaml

{{- if .Values.akv2k8s.enabled -}}
{{- range $vault, $content := .Values.akv2k8s.vaults }}
{{- range $key, $value := $content }}
apiVersion: spv.no/v2beta1
kind: AzureKeyVaultSecret
spec:
  vault:
    name: {{ $vault }}
  name: {{ $key }}
  object:
    name: {{ $value }}
    type: secret
---
{{- end }}
{{- end }}
{{- end }}

说明:

  • 将vault: {{ $vault }}修改为vault:下嵌套name: {{ $vault }},符合AzureKeyVaultSecret资源的规范结构
  • 调整name字段的缩进,使其与vault同级,作为spec的直接子字段
  • 添加---分隔符,确保多个生成的资源能被YAML正确识别为独立文档

验证步骤

执行以下命令测试模板渲染是否正常:

helm template .

确认输出的YAML格式正确后,再进行部署操作。

内容的提问来源于stack exchange,提问作者Usman Khawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:35:42