如何在Helm Chart中使用GitHub提交SHA作为镜像标签?
实现方案
你直接在values.yaml文件中写GitHub Actions变量不会被解析,只有工作流配置文件内的变量才会被系统自动替换,可通过以下两种常用方法实现需求:
方法1:通过Helm部署命令动态传入标签
在GitHub Actions工作流的部署步骤中,使用helm upgrade --install的--set参数直接覆盖image.tag的值,无需修改静态的values.yaml文件,示例工作流配置如下:
# 前置步骤:构建镜像、推送到ECR(已完成镜像打标签推送逻辑) - name: 配置EKS访问权限 run: aws eks update-kubeconfig --name <替换为你的EKS集群名称> --region eu-west-1 - name: 部署Helm Chart run: | helm upgrade --install <替换为你的Release名称> <替换为你的Chart本地路径/仓库地址> \ --namespace <替换为部署命名空间> \ --create-namespace \ --set image.tag=develop-${{ github.sha }}
工作流触发运行时${{ github.sha }}会自动替换为当前提交的SHA值,完全满足标签拼接需求。
方法2:动态修改values.yaml文件
如果你不希望通过--set传参,可使用yq工具在工作流运行阶段直接修改values.yaml的标签字段,示例配置如下:
# 安装yq解析工具 - name: 安装yq run: sudo apt update && sudo apt install -y yq # 替换values.yaml中的镜像标签 - name: 更新镜像标签 run: yq -i '.image.tag = "develop-${{ github.sha }}"' <替换为你的values.yaml文件路径> # 配置EKS权限+部署 - name: 配置EKS访问权限 run: aws eks update-kubeconfig --name <替换为你的EKS集群名称> --region eu-west-1 - name: 部署Helm Chart run: helm upgrade --install <替换为你的Release名称> <替换为你的Chart路径> --namespace <替换为部署命名空间> --create-namespace
内容的提问来源于stack exchange,提问作者Akshay Awate
相关产品推荐
相关产品推荐

