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

如何将Cloud Build变量传入Helm values中?

把Cloud Build的COMMIT_SHA传给Helm的几种实用方法

直接给你几个在实际项目里验证过的可行方案:

方法一:用Helm的--set参数直接注入

这是最简单直接的方式,在Cloud Build的helm命令里通过--set把环境变量传进去就行。比如你的cloudbuild.yaml步骤可以这么写:

steps:
  # 打包Chart时传递COMMIT_SHA
  - name: 'gcr.io/cloud-builders/helm'
    args: ['package', './your-service-chart', '--set', 'commitSha=$COMMIT_SHA']
  # 如果是部署阶段(install/upgrade)传递
  - name: 'gcr.io/cloud-builders/helm'
    args: ['upgrade', '--install', 'your-release-name', './your-service-chart', '--set', 'commitSha=$COMMIT_SHA']

然后在K8s Deployment模板(templates/deployment.yaml)里引用这个值:

metadata:
  labels:
    app: {{ .Values.appName }}
    commit-sha: {{ .Values.commitSha }} # 这里就是传递过来的COMMIT_SHA

方法二:生成临时values文件传递

如果要传多个变量,或者不想在命令行里暴露参数,可以先在Cloud Build里生成一个临时values文件,再让Helm加载它:

steps:
  # 生成临时values文件,写入COMMIT_SHA
  - name: 'ubuntu'
    args: ['bash', '-c', 'echo "commitSha: $COMMIT_SHA" > ./tmp-values.yaml']
  # 打包时指定这个临时文件
  - name: 'gcr.io/cloud-builders/helm'
    args: ['package', './your-service-chart', '-f', './tmp-values.yaml']

Deployment模板里的引用和上面一致,用{{ .Values.commitSha }}即可。

方法三:绑定到Chart的应用版本(可选)

如果想把提交SHA和Chart的应用版本绑定,可以直接修改Chart.yaml里的appVersion字段:

steps:
  # 替换Chart.yaml里的appVersion为COMMIT_SHA
  - name: 'ubuntu'
    args: ['bash', '-c', 'sed -i "s/appVersion: .*/appVersion: $COMMIT_SHA/" ./your-service-chart/Chart.yaml']
  # 正常打包Chart
  - name: 'gcr.io/cloud-builders/helm'
    args: ['package', './your-service-chart']

然后在Deployment模板里直接引用Chart的应用版本:

metadata:
  labels:
    commit-sha: {{ .Chart.AppVersion }}

注意点

  • --set参数的优先级高于values.yaml里的配置;
  • 临时values文件如果和原values.yaml有重复键,会覆盖原values的值;
  • 方法三适合需要把提交SHA作为应用版本标识的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:10:36