从另一个 GCP 项目访问 Cloud SQL

Posted

技术标签:

【中文标题】从另一个 GCP 项目访问 Cloud SQL【英文标题】:Accessing Cloud SQL from another GCP project 【发布时间】:2019-11-06 14:01:33 【问题描述】:

我想从其他 GCP 项目连接到 Cloud SQL。

Cloud SQL 是 ProjectSQL 中的位置,并且 VPC 网络位于 ProjectSQL 项目中,名称为 sql_vpc

还有另一个项目 ProjectDataflow,它有一个 vpc dataflow_vpc。我想使用 ProjectDataflow 项目中启动的 VM 从 ProjectSQL 连接到 cloudSQL

我尝试过的成功和失败的事情。

私人访问:

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 项目连接云 SQL 是否有任何最佳实践?

【问题讨论】:

【参考方案1】:

编辑:

较新的实例似乎默认启用此选项,无需再联系支持人员。但是,如果在所有过程之后,设置仍然无法正常工作,则可能需要联系支持人员。

重要提示:VPC 对等选项将不再起作用,如文档中所述,更准确地说是在 Considerations topic 中。那么实现它的唯一可用选项是使用共享 VPC

按照documentation 将 Cloud SQL 与另一个 GCP 项目互连的过程非常简单。为了使其正常工作,您需要考虑的唯一一件事是,您必须请求 Google Cloud Support 为您的 Cloud SQL 散斑伞实例启用自定义路由,您的 Cloud SQL 在其中运行,否则您将不会能够在您的 GCP 项目中访问您的 Cloud SQL。

以下步骤对您有用:

-为 Cloud SQL 实例配置 VPC

在您拥有 Cloud SQL 实例的项目中,创建一个 具有您想要的 IP 地址范围的 VPC 网络。选择一样的 您的实例所在的 VPC 区域。

-为 GCP 项目配置 VPC

现在切换到您的 CloudDataflow 实例所在的项目 并遵循相同的过程。创建 VPC 网络时要小心 IP 范围不会相互冲突。您可以使用following tool 检查 IP 地址范围是否冲突。也考虑到 两个 VPC 网络必须位于同一地区。

-通过对等连接两个项目的 VPC

创建两个 VPC 网络后,需要配置 VPC 来自两个项目的网络对等互连。从 Cloud SQL 实例端, 将指定项目和 VPC 网络名称的对等互连配置为 连接并选择导出自定义路线的选项。这 对等的另一部分,在这种情况下是您的 GCP 项目,将 了解您的 Cloud SQL 实例。现在,来自 GCP 项目 侧,配置对等互连,指定 Cloud SQL 项目名称和 要连接的 VPC 网络名称。就像我们对 Cloud SQL 对等互连,我们必须设置对等互连才能导入自定义 路线,因为它将接收来自另一侧的导出路线 连接,在我们的例子中是您的 Cloud SQL 实例。

Here您可以查看有关在任何 VPC 网络对等互连之间导入和导出路由的更多信息。

-请求 Google Cloud 支持为您启用 Cloud SQL 的交换自定义路由

联系 Google Cloud 支持并要求他们启用交换 与相关的斑点伞 VPC 网络的自定义路由 您在 Cloud SQL 上自动创建的实例 实例已创建。

考虑到最后一步非常重要,所有 SQL 项目都在伞形项目下运行,因此如果不请求 Google Cloud Support 为您的实例启用交换自定义路由,这将永远无法工作。

共享 VPC

对于共享 VPC,您唯一需要考虑的是,您需要在创建 Cloud SQL 实例后启用该选项,因为之后您无法添加它。

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

【讨论】:

感谢您的详细解答。 1. 对于对等方,我了解对等网络无法与同级对等网络通信。正如您所解释的那样,我注意到的关键点是我们可以通过导出和导入路由并向谷歌云支持团队提出请求以启用它来与云 sql VPC 网络对话。 2. 共享 VPC,对于我的情况可能不是一个好的解决方案,因为我正在运行生产数据库 3. 我使用的是,我在客户端项目中创建了一个 Cloud NAT,并使用 Cloud NAT 公共 IP 在 Cloud SQL 内列入白名单。 您的解决方案看起来不错,但我觉得此功能应该无需支持团队干预即可使用。 目前,由于该功能仍处于测试阶段,因此需要 Google Cloud Platform 支持干预。一旦 VPC 对等功能的导入和导出自定义路由在几个月内达到一般可用性,程序就会发生变化,并且不需要干预。这也是因为 Cloud SQL 它是通用的,所以事情不会搞砸,并且产品中开始出现问题。您可以在我与您分享的先前链接之一中看到 [beta 标签]。很乐意提供帮助,如果此答案或任何其他答案解决了您的问题,请考虑将其标记为已接受。 谢谢,期待在 GA 中看到此功能 如果您想向 Google Cloud SQL 产品团队提出私人问题,要求他们为 Cloud SQL 启用您的自定义路由,您可以使用以下链接:issuetracker.google.com/issues/new?component=491274。由于这是私人信息,您可以安全地输入所需的信息。请注意,需要的是项目编号,而不是 ID 和名称。另外请提及我的 *** 用户名,以便我跟踪问题。

以上是关于从另一个 GCP 项目访问 Cloud SQL的主要内容,如果未能解决你的问题,请参考以下文章

在一个 GCP 项目中来自 Cloud Run 应用的 HTTP 503 错误,但在另一个项目中没有

同一个 GCP 项目中的 Kubeflow 管道存储访问错误?

有没有办法让 cloudbuild 步骤访问 GCP 中的 Cloud SQL

如何使用私有IP在两个项目之间共享Google Cloud SQL实例?

Spring boot 和 GCP - 使用 spring-cloud-gcp-starter-sql-postgresql 连接 Cloud SQL 实例尝试 SSL 并且延迟启动

使用 Firebase 对 GCP Cloud 函数进行双重定价