如何用Cloud Build私有池访问多个私有GKE集群?
解决Cloud Build访问多私有GKE集群的问题
不需要为每个GKE集群单独创建Cloud Build私有池,你可以复用同一个私有池,通过调整配置让它同时访问staging和production集群。下面是具体的操作步骤:
1. 确保网络连通性
- 确认Cloud Build私有池所在的VPC,与staging、production集群的VPC处于同一网络,或已完成VPC对等连接配置,让私有池的子网能访问两个集群的控制平面和节点网络。
- 如果两个集群分属不同VPC,需要分别建立私有池VPC与每个集群VPC的对等连接。
2. 调整防火墙规则
- 为私有池子网添加出站防火墙规则,允许访问production集群控制平面的443端口,以及集群节点的部署相关端口。
- 同时在production集群的VPC中添加入站规则,允许来自私有池子网IP范围的流量访问控制平面和节点的必要端口。
3. 配置GKE权限
- 确保Cloud Build私有池使用的服务账号,拥有production集群的必要权限,比如
roles/container.developer(或按需使用更精细的权限)。 - 执行命令绑定权限:
gcloud projects add-iam-policy-binding YOUR_PROD_PROJECT_ID \ --member=serviceAccount:YOUR_CLOUD_BUILD_SERVICE_ACCOUNT \ --role=roles/container.developer
- 也可以直接在GKE集群的IAM页面中添加该服务账号并赋予对应角色。
4. 更新Cloud Deploy流水线配置
- 在
clouddeploy.yaml中,确保production环境的部署任务指向同一个私有池,同时正确配置production集群的信息。示例片段:
targets: - name: staging gke: cluster: projects/YOUR_PROJECT/locations/YOUR_REGION/clusters/staging-cluster - name: production gke: cluster: projects/YOUR_PROJECT/locations/YOUR_REGION/clusters/production-cluster build: cloudBuild: pool: name: projects/YOUR_PROJECT/locations/YOUR_REGION/workerPools/your-shared-pool
5. 验证连接
- 启动一个使用该私有池的Cloud Build任务,测试访问production集群:
gcloud container clusters get-credentials production-cluster --region YOUR_REGION --project YOUR_PROD_PROJECT_ID kubectl get nodes
- 如果能成功返回节点列表,说明配置生效。
排查要点
如果配置后仍无法访问,检查以下内容:
- production集群的私有端点是否允许来自私有池子网的访问
- 服务账号的权限是否正确应用到production集群
- VPC对等连接的路由配置是否正确,无冲突
内容的提问来源于stack exchange,提问作者Maiku Nakajima
相关产品推荐
相关产品推荐

