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

Helm template执行报错,values.yaml条件语句如何正确配置?

问题原因

values.yaml 是 Helm Chart 的配置值文件,Helm 不会对 values.yaml 本身执行模板语法解析。你写的 %{ if } 和 ${} 属于 Go 模板语法,直接放在 values.yaml 里会被 YAML 解析器当成无效指令,导致报错。

正确解决步骤

1. 调整 values.yaml,只保留变量定义

把原来的模板逻辑从 values.yaml 中移除,只留变量的默认值:

# values.yaml
department_tag: ""

2. 将模板逻辑移到 templates 目录的资源文件中

比如在需要添加 podAnnotations 的 templates/deployment.yaml(或其他资源文件)里,用 Helm 模板语法实现条件判断:

# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-app
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      annotations:
        # 这里添加条件判断逻辑
        {{- if ne .Values.department_tag "" }}
        dept_id: {{ .Values.department_tag }}
        {{- end }}
      labels:
        app: {{ .Release.Name }}-app
    spec:
      containers:
        - name: app-container
          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}

3. 传入变量的两种方式

方式一:用 mock values 文件

创建一个自定义的 values 文件(比如 test-values.yaml):

# test-values.yaml
department_tag: "engineering"

执行模板渲染命令:

helm template . -f test-values.yaml

方式二:命令行直接传入变量

不需要额外文件,直接用 --set 参数指定变量值:

helm template . --set department_tag="engineering"

这样就能正常渲染出带有 dept_id 注解的 Pod 模板了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:16:58