如何让Cloud Deploy访问私有GKE集群?
实现Cloud Deploy访问私有GKE集群的可行方案
方案1:VPC网络对等连接打通网络
- 建立Cloud Deploy所属谷歌管理VPC与私有GKE集群所在VPC的VPC网络对等连接,实现双方网络互通。
- 配置GKE集群主节点和节点池的防火墙规则,允许来自Cloud Deploy服务IP范围的443端口流量(用于Kubernetes API访问)。可通过
gcloud命令或控制台获取Cloud Deploy的服务CIDR,或使用标签cloud.googleapis.com/service-name=clouddeploy来精准配置防火墙规则。
方案2:启用Cloud Deploy私有端点
- 为Cloud Deploy开启私有端点,让部署操作通过VPC内部私有IP与GKE集群通信,避免公网传输。
- 更新GKE集群配置,将Cloud Deploy私有端点的CIDR加入主节点授权网络列表,限制控制平面仅接受来自该范围的访问请求。同时为Cloud Deploy服务账号(格式为
service-${PROJECT_NUMBER}@gcp-sa-clouddeploy.iam.gserviceaccount.com)分配roles/container.developer权限,确保集群访问授权。
方案3:复用现有Cloud Build私有工作池(中间层方式)
- 利用已配置好的Cloud Build私有工作池,将Cloud Deploy的部署任务转交给Cloud Build执行:
- 在Cloud Deploy交付流水线中自定义部署步骤,调用Cloud Build触发部署作业。
- Cloud Build通过私有工作池的现有连通性访问私有GKE集群,执行
kubectl apply、Helm安装等部署命令。
- 此方案无需额外网络配置,直接复用已有连通性,适合快速实现需求。
通用权限配置要点
- 确保Cloud Deploy服务账号拥有GKE集群的访问权限:可通过IAM分配
roles/container.developer,或通过Kubernetes的ClusterRoleBinding配置更细粒度的权限。 - 若采用方案3,需为Cloud Deploy服务账号分配
roles/cloudbuild.builds.editor权限,允许其触发Cloud Build任务。
内容的提问来源于stack exchange,提问作者Gary Turner
相关产品推荐
相关产品推荐

