You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨GCP项目从Project A、B连接Project C中Cloud SQL数据库的方案咨询

跨GCP项目从Project A、B连接Project C中Cloud SQL数据库的方案咨询

你好呀,结合你描述的场景——同一组织下的三个GCP项目,Project C作为中心托管着Cloud SQL(MySQL)实例,需要让Project A、B内的VM都能接入这个数据库——还有你已经尝试过的两种方案遇到的问题,我来帮你梳理下问题点和可行的解决办法:

一、先排查你Shared VPC方案的失败原因

你提到在Project C启用Shared VPC并共享给Project B后,B的VM虽然用了C的VPC网卡,但还是连不上数据库,大概率是这几个关键环节没配置到位:

  • Cloud SQL的私有IP访问范围:确认你的Cloud SQL实例的私有IP所属的VPC网络,是否已经把Shared VPC下所有需要访问数据库的子网(包括给Project B分配的消费者子网)加入到SQL实例的私有服务访问连接中?如果只加了Project C本地的子网,B的VM所在子网不在允许列表里,自然无法建立连接。
  • IAM权限配置:作为Shared VPC的消费者项目(Project B),要确保VM的服务账号(或是整个Project B的项目级别账号)拥有访问Cloud SQL实例的权限,比如给对应的账号添加roles/cloudsql.client角色,这个角色是发起Cloud SQL连接的必要权限。
  • 防火墙规则限制:检查Shared VPC的防火墙规则,是否允许Project B子网的IP段访问Cloud SQL实例的默认端口3306(MySQL)。很多时候防火墙规则只对Project C本地的IP段开放,漏掉了消费者项目的子网范围。

二、可行的解决方案

方案1:修复并完善Shared VPC配置(推荐,适合同一组织内的场景)

如果想继续用Shared VPC方案,按照以下步骤补全配置即可:

  1. 确认Cloud SQL的私有服务访问连接:
    • 进入Project C的Cloud SQL实例页面,找到连接标签下的私有IP模块,检查对应的VPC网络是否为你的Shared VPC。
    • 若尚未创建私有服务访问连接,直接创建一个关联到Shared VPC的连接;若已创建,确保Shared VPC下所有需要访问数据库的子网(包括Project A、B的消费者子网)都被纳入访问范围。
  2. 配置IAM权限:
    • 给Project B的VM服务账号(或整个Project B项目)添加roles/cloudsql.client角色,确保拥有发起连接的权限。后续对Project A重复此操作即可。
  3. 调整防火墙规则:
    • 在Shared VPC的防火墙规则中,新增一条允许规则:源地址设为Project A、B的消费者子网IP段,目标端口设为3306,协议选择TCP,方向为入站到Cloud SQL实例的IP段(或直接指定SQL实例的私有IP)。
  4. 接入Project A:
    • 将Project A也设置为Shared VPC的消费者项目,分配专属子网,重复上述权限和防火墙配置,即可实现A的VM连接数据库。

方案2:使用VPC peering结合Cloud SQL私有IP(适合不想用Shared VPC的场景)

虽然VPC peering是非传递的,但我们可以分别建立Project A<->C、Project B<->C的双向peering连接,再做以下配置:

  1. 分别在Project A与C、Project B与C之间建立双向VPC peering连接,确保连接状态为ACTIVE。
  2. 配置Cloud SQL实例的私有服务访问连接,关联到Project C的VPC网络。
  3. 配置路由规则:
    • 在Project C的VPC中添加路由,将Project A、B的子网IP段指向对应的peering连接;
    • 在Project A、B的VPC中添加路由,将Cloud SQL实例的私有IP段指向与C的peering连接。
  4. 配置权限与防火墙:
    • 给Project A、B的VM服务账号添加roles/cloudsql.client角色;
    • 各自VPC的防火墙规则中,允许本地子网访问Cloud SQL的3306端口。

方案3:使用Private Service Connect(适合跨组织或灵活访问场景)

如果后续可能有跨组织访问需求,或是不想依赖VPC peering/Shared VPC的强网络绑定,可以选择Private Service Connect方案:

  1. 在Project C的Cloud SQL实例上创建Private Service Connect端点,指定允许访问的项目(A、B)。
  2. 在Project A、B的VPC中创建Private Service Connect端点,指向Project C中Cloud SQL实例的端点。
  3. 配置IAM权限允许A、B的项目访问该端点,同时配置防火墙规则允许VM访问端点IP和3306端口。

备注:内容来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:14:37