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

Helm模板createDbWithUserV2.yaml第48行YAML解析失败求助

排查Helm模板YAML解析失败问题

报错信息

Bake failed: Error: YAML parse error on ccgf-pipeline-jobs/templates/createDbWithUserV2.yaml
Line 48 is - name: VAULT_BASE_PATH

模板文件内容(createDbWithUserV2.yaml)

{{ if eq .Values.jobType "create-dbs-with-user-v2"}}
{{ $root := .Values }}
apiVersion: batch/v1
kind: Job
metadata:
  name: {{ printf "%s-%s-%s" .Values.jobType "custom-task" (.Values.uniqueId | default (randNumeric 25)) | trunc 60 }}{{randNumeric 2}}
  namespace: {{ .Values.namespace }}
  labels:
    customJobType: custom-pipeline-job
    customJobName: {{ printf "%s-%s" .Values.jobType "custom-task" }}
    customJobUniqueId: {{ .Values.uniqueId }}
    cloudtrust.rocks/servicename: {{ printf "%s-%s" .Values.jobType "custom-task" }}
    {{- if and (hasKey .Values "service") (hasKey .Values.service "standard") (hasKey .Values.service.standard "labels") }}
    {{- range $key, $val := .Values.service.standard.labels }}
    {{ $key }}: {{ $val }}
    {{- end }}
    {{- end }}
spec:
  ttlSecondsAfterFinished: {{ .Values.ttlSecondsAfterFinished }}
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: 'false'
      labels:
        cloudtrust.rocks/servicename: {{ printf "%s-%s" .Values.jobType "custom-task" }}
        {{- if and (hasKey .Values "service") (hasKey .Values.service "standard") (hasKey .Values.service.standard "labels") }}
        {{- range $key, $val := .Values.service.standard.labels }}
        {{ $key }}: {{ $val }}
        {{- end }}
        {{- end }}
      namespace: {{ .Values.namespace }}
    spec:
      {{- include "customNodeSelector" . | nindent 6 }}
      containers:
        - env:
            - name: DB_HOST
              value: {{ .Values.dbHost }}
            - name: DB_PORT
              value: "3306"
            - name: DB_LIST
              value: {{ .Values.dbList }}
            - name: DB_PREFIX
              value: {{ .Values.dbPrefix }}
            - name: VAULT_ADDR
              value: {{ .Values.vaultAddr }}
            - name: VAULT_ROLE
              value: {{ .Values.vaultRole }}
            - name: VAULT_BASE_PATH
              value: {{ .Values.vaultBasePath }}
            - name: MASTER_USER_VAULT_PATH
              value: {{ .Values.masterUserVaultPath }}
            - name: DS_CONFIGS
              value: {{ .Values.dsConfigs | quote }}
            - name: DB_CONFIG
              value: {{ .Values.dbConfig | quote }}
            - name: CMD
              value: "create-dbs,create-dbs-user"
          image: {{ (eq .Values.overrideDockerImage "" ) | ternary ( printf "%s/%s" .Values.dockerRepo .Values.pipelineJobsDockerImage )  .Values.overrideDockerImage }}
          imagePullPolicy: IfNotPresent
          name: {{ printf "%s-%s" .Values.jobType "custom-task" }}
          resources:
            limits: {}
            requests: {}
          tty: true
      imagePullSecrets:
        - name: {{ .Values.imageSecrets }}

      restartPolicy: Never
      securityContext: {}
      serviceAccount: {{ .Values.serviceAccount }}
{{ end }}

可能的原因及解决方法

原因1:customNodeSelector模板输出非法YAML

报错指向第48行,但问题可能出在前面的{{- include "customNodeSelector" . | nindent 6 }}部分。如果这个模板输出的内容存在语法错误(比如缺少空格、冒号使用不当、缩进错误),会破坏整个YAML结构,导致解析器在后续行报错。

解决方法:

  • 运行helm template <release-name> . --set jobType=create-dbs-with-user-v2 --debug命令,查看渲染后的完整YAML,重点检查customNodeSelector对应的输出部分是否合法。
  • 修正customNodeSelector模板的语法错误,确保输出符合YAML规范。

原因2:引用的Values变量未定义或包含特殊字符

如果.Values.vaultBasePath、.Values.dbHost等变量未定义,或变量值包含未转义的引号、换行符等特殊字符,会导致渲染后的YAML格式无效。

解决方法:

  • 检查values.yaml文件,确保所有模板中引用的变量(如vaultBasePath、dbHost、dbList等)都已正确定义。
  • 若变量值包含特殊字符,使用quote函数包裹(如value: {{ .Values.dbList | quote }}),避免破坏YAML结构。

原因3:缩进混合空格与制表符

YAML对缩进严格要求,不能同时使用空格和制表符,否则会触发解析错误。

解决方法:

  • 检查模板文件,将所有制表符替换为空格,确保整个文件使用统一的空格缩进(推荐2或4个空格)。

原因4:复杂类型变量渲染异常

比如.Values.dsConfigs或.Values.dbConfig是对象、数组等复杂类型,直接使用quote函数可能生成不符合预期的字符串,破坏YAML结构。

解决方法:

  • 若dsConfigs、dbConfig是复杂类型,改用toJson或toYaml函数处理,比如value: {{ .Values.dsConfigs | toJson | quote }},确保渲染后的内容是合法的字符串。

内容的提问来源于stack exchange,提问作者naman jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:39:54