从另一个GCP项目访问Cloud SQL

16

我想从不同的GCP项目连接到Cloud SQL。

Cloud SQL位于ProjectSQL中,该项目中有一个名为sql_vpc的VPC网络。

另外还有一个名为ProjectDataflow的项目,该项目有一个名为dataflow_vpc的VPC。我想使用在ProjectDataflow项目中启动的VM连接到ProjectSQL中的Cloud SQL。

我尝试过一些方法,有成功也有失败:

私有访问:

VPC对等连接:

Enable Private IP access in Cloud with the vpc sql_vpc
Creating VPC peering between dataflow_vpc and sql_vpc
This solution does not work because you can not access the Peered Network.
https://cloud.google.com/sql/docs/mysql/private-ip
Status: FAILED
共享网络
As per doc I can create the CloudSQL in shared VPC network, that says I 
have to create the CloudSQL in host project, and to access the Cloud 
SQL from  VM instance, it has be in the same network as of authorized 
private ip network of Cloud SQL
Status: NOT TRIED but looks to be Negative

公共访问:

Create a Cloud NAT in ProjectDataflow with dataflow_vpc with manual IP
Use the Cloud NAT public ip to whitelist in CloudSQL instance
Now I can access the CloudSQL from project ProjectDataflow using CloudSQL Public IP
STATUS: Success

请分享您从另一个项目访问Cloud SQL的经验。是否有连接另一个GCP项目中的Cloud SQL的最佳实践?

1个回答

13

编辑:

新的实例似乎默认启用了此选项,不再需要联系支持。然而,如果在整个过程之后,设置仍然无法工作,则可能需要联系支持。

重要提示:根据文档,在注意事项主题中更精确地说明,VPC对等选项将不再起作用。那么唯一可用的选择是使用共享VPC

按照文档连接一个Cloud SQL与另一个GCP项目的过程非常简单。您需要考虑的唯一一件事就是,您必须请求Google Cloud Support为您的Cloud SQL speckle umbrella实例启用自定义路由,否则您将无法在GCP项目中访问Cloud SQL。

以下步骤适用于您:

-为Cloud SQL实例配置VPC

在您的Cloud SQL实例所在的项目中创建一个VPC网络,其IP地址范围与您想要的相同。选择与实例位于同一区域的VPC。
- 配置GCP项目的VPC
现在切换到您的CloudDataflow实例所在的项目并按照相同的过程操作。创建VPC网络时要注意IP地址范围不会相互冲突。您可以使用以下工具检查IP地址范围是否冲突。还要考虑到两个VPC网络必须在同一区域。
- 通过对等连接两个项目的VPC
创建两个VPC网络后,需要从两个项目中配置VPC网络对等连接。从Cloud SQL实例的一侧配置对等连接,指定要连接的项目和VPC网络名称,并选择导出自定义路由选项。这样,在此情况下,您的GCP项目的另一部分将能够看到您的Cloud SQL实例。现在,从GCP项目侧配置对等连接,指定Cloud SQL项目名称和要连接的VPC网络名称。与Cloud SQL对等连接相同的方式,我们必须设置对等连接以导入自定义路由,因为它将接收来自连接另一侧(在我们的案例中是您的Cloud SQL实例)的导出路由。
此处,您可以查看有关在任何VPC网络对等连接之间导入和导出路由的更多信息。
- 请求Google Cloud支持为您启用交换Cloud SQL的自定义路由。

联系Google Cloud支持并要求他们启用与您的speckle-umbrella VPC网络相关联的实例自动创建的Cloud SQL实例的自定义路由交换。

请注意,这是非常重要的最后一步,所有SQL项目都在umbrella项目下运行,因此如果不请求Google Cloud支持为您的实例启用交换自定义路由,则此操作将永远无法正常工作。

共享VPC

至于共享VPC,您需要考虑的唯一事情是在创建Cloud SQL实例时启用该选项,因为您不能在之后添加它。

您可以在以下link中找到共享VPC的配置指南。


感谢您提供详细的答案。
  1. 对于对等连接方面,我理解对等网络无法与兄弟对等网络通信。正如您所解释的关键点,我们可以通过导出和导入路由,并向Google Cloud支持团队提出请求来与云SQL VPC网络通信。
  2. 共享VPC可能不是我这种情况的好解决方案,因为我有正在运行的生产数据库。
  3. 我使用的是在客户端项目中创建了一个Cloud NAT,并使用Cloud NAT公共IP在Cloud SQL中进行白名单处理。
- Deepak Verma
1
你的解决方案看起来不错,但我觉得这个功能应该无需支持团队的干预就能使用。 - Deepak Verma
目前,由于该功能仍处于测试版阶段,因此需要Google Cloud平台支持干预。一旦VPC对等连接的导入和导出自定义路由功能在几个月内推出到正式版本,程序将会改变,不再需要干预。 这也是因为Cloud SQL已经进入正式版本,以免在产品中出现混乱和问题。您可以在我之前分享的链接中看到[beta标签]。 如果我的回答或其他回答解决了您的问题,请考虑将其标记为已接受。 - bhito
如果您想向Google Cloud SQL产品团队开启私有问题,请求他们为Cloud SQL启用您的自定义路由,您可以使用以下链接:https://issuetracker.google.com/issues/new?component=491274。由于这是私有的,您可以安全地输入所需的信息。请注意,需要项目编号,而不是ID或名称。另外,请提及我的stackoverflow用户名,以便我跟踪该问题。 - bhito
1
您需要在外部项目中为该服务账户授予权限,这样该SA就可以在与其创建位置不同的另一个项目中执行操作。 - bhito
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接