如何让Cloud Build连接私有IP的Cloud SQL实例?
解决Cloud Build访问私有IP Cloud SQL实例的连通性问题
问题1解答:Cloud SQL与Cloud Build的托管VPC及对等配置
- Cloud SQL和Cloud Build不共享同一个Google托管服务VPC。Cloud SQL使用Google专为其服务托管的独立专用VPC,Cloud Build私有构建池则使用另一套Google托管的专用VPC网络,二者相互独立。
- 不需要为两个服务配置独立的对等空间,但仅靠Cloud Build与你的VPC建立对等连接,无法直接访问Cloud SQL的私有IP——因为VPC对等连接不具备传递性,Cloud Build的托管网络不能通过你的VPC间接访问Cloud SQL的托管网络。
问题2解答:实现连通性的可行方案
方案1:使用Cloud SQL Auth Proxy(推荐)
这是最简洁且无需修改网络配置的方式,通过IAM权限而非VPC连通性实现访问:
- 在Cloud Build的构建步骤中,添加下载并启动Cloud SQL Auth Proxy的命令:
# 下载适配当前系统的proxy wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy chmod +x cloud_sql_proxy # 启动proxy,后台运行 ./cloud_sql_proxy -instances=<你的实例连接名>=tcp:5432 & - 确保Cloud Build的服务账号拥有
Cloud SQL Client角色,之后构建任务就可以通过localhost:5432访问Cloud SQL实例(端口根据数据库类型调整,比如MySQL用3306)。
方案2:通过Private Service Connect建立直接连接
如果必须通过私有IP访问,可以用Private Service Connect绕过对等传递性限制:
- 在你的VPC中创建一个Private Service Connect端点,目标选择你的Cloud SQL实例。
- 配置Cloud Build私有构建池的网络设置,允许其访问该端点所在的VPC子网。
- 构建任务即可通过Private Service Connect端点的私有IP访问Cloud SQL实例。
不推荐的方案(对应你提到的选项)
- 直接将Cloud SQL与Cloud Build网络对等:Google不支持用户直接配置Cloud SQL托管网络与Cloud Build托管网络的对等连接,该操作无法通过控制台或API完成。
- HA VPN:成本过高,仅适用于复杂跨区域场景,完全没必要用于Cloud Build访问Cloud SQL的需求。
- GCE堡垒机:需要额外维护实例,且会增加构建流程的复杂度和延迟,不够高效。
内容的提问来源于stack exchange,提问作者Gabriele B
相关产品推荐
相关产品推荐

