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

如何在Helm Chart中引用Azure DevOps Pipeline变量?

解决Azure DevOps Pipeline变量在Helm Chart中的引用问题

核心思路

Azure DevOps的变量与Helm模板变量分属两套独立解析体系,不能直接在Helm的deployment.yaml中使用Azure DevOps的$(变量名)或${{ variables.变量名 }}语法,必须通过Helm参数传递或动态注入配置文件的方式,将Azure DevOps变量值传入Helm部署流程。

具体实现方法

方法1:通过Helm命令行直接传参

这是最直接的方式,在Pipeline的Helm部署步骤中用--set参数传递构建ID:

  1. 先在Helm的deployment.yaml中定义Helm模板变量:
    spec:
      containers:
      - name: your-container
        image: docker/image:{{ .Values.image.tag }}
    
  2. 在Azure DevOps的Helm部署任务中执行命令:
    helm upgrade --install your-release ./your-chart --set image.tag=$(Build.BuildId)
    
    此处$(Build.BuildId)会被Azure DevOps解析为实际构建ID,再传递给Helm的image.tag变量,最终渲染出正确的镜像标签。

方法2:动态生成Helm values文件

若需传递多个变量,可动态生成values文件:

  1. 在Pipeline中添加步骤生成配置文件:
    echo "image:" > values.deploy.yaml
    echo "  tag: $(Build.BuildId)" >> values.deploy.yaml
    
  2. 部署Helm时指定该动态文件:
    helm upgrade --install your-release ./your-chart -f values.deploy.yaml
    
  3. deployment.yaml中仍使用Helm模板语法引用变量:
    image: docker/image:{{ .Values.image.tag }}
    

方法3:用Azure DevOps文件替换任务处理静态values文件

如果已有现成的values.yaml,可先替换占位符再部署:

  1. 静态values.yaml中预留占位符:
    image:
      tag: __BUILD_ID__
    
  2. 在Pipeline中添加「文件替换」任务,设置:
    • 目标文件:./your-chart/values.yaml
    • 替换令牌:__BUILD_ID__
    • 替换值:$(Build.BuildId)
  3. 完成替换后正常执行Helm部署命令即可。

注意事项

  • 严格区分两套变量语法:Helm模板仅识别{{ .Values.xxx }}这类自身语法,Azure DevOps变量语法仅在Pipeline的任务、脚本中生效。
  • 若用--set传递含特殊字符的变量值,需用引号包裹,例如--set "image.tag=$(Build.BuildId)"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:32:43