如何通过Google Cloud Build使用Helm Charts完成K8s应用部署
Cloud Build Helm 步骤故障修复
你当前的helm步骤无法运行主要有两个问题:
- Cloud Build的默认服务账号没有操作GKE集群的权限,你需要先在GCP IAM控制台为
[项目ID]@cloudbuild.gserviceaccount.com账号授予Kubernetes Engine Developer角色 - helm upgrade命令格式错误,覆写Chart values需要加
--set参数,且运行helm前需要先获取GKE集群的访问凭证
修正后的cloudbuild.yaml示例
steps: # 原有镜像构建、推送步骤不变 - name: 'gcr.io/cloud-builders/docker' args: ["build", "-t", "gcr.io/kubernetes-amit-test/github.com/0xvoila/apache/phoenix:$SHORT_SHA", "."] - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/kubernetes-amit-test/github.com/0xvoila/apache/phoenix:$SHORT_SHA"] # 修复后的helm部署步骤 - name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | # 拉取GKE集群访问凭证 gcloud container clusters get-credentials 你的集群名称 --zone 集群所在可用区 --project kubernetes-amit-test # 执行helm升级,--install表示如果release不存在就先安装 helm upgrade --install phoenix ./你的Chart本地路径 --set image.repository=gcr.io/kubernetes-amit-test/github.com/0xvoila/apache/phoenix,image.tag=$SHORT_SHA
如果你的Chart存放在远程Helm仓库,需要先执行helm repo add添加仓库,再替换./你的Chart本地路径为仓库名/Chart名即可。
疑问解答
1. 如何使用helm升级到最新版本的Chart?
分两种场景处理:
- Chart和业务代码同仓库/本地存储:CI运行时拉取最新的仓库代码,直接执行上述
helm upgrade命令即可自动使用最新版本的Chart模板升级 - Chart存放在远程Helm仓库:执行升级前先运行
helm repo update拉取最新的仓库索引,helm upgrade时如果不指定--version参数默认会使用最新的稳定版本,也可以手动指定版本号升级。
2. 该方式是否是K8s部署的最佳实践?行业内是否普遍使用helm?
Helm是目前Kubernetes生态应用包管理的事实标准,几乎所有开源项目和企业都在使用Helm管理K8s资源模板,属于行业通用工具,新手可以放心学习使用。
你当前使用Cloud Build+Helm的推送式CI/CD方案,适合小团队、项目数量较少的场景,是合理可行的。如果后续团队规模扩大、项目增多,更推荐使用Argo CD、Flux CD这类GitOps工具实现拉取式部署,不需要给CI系统开放集群操作权限,安全性、可观测性和回滚能力都会更强,属于大规模场景下的最佳实践。
内容的提问来源于stack exchange,提问作者voila
相关产品推荐
相关产品推荐

