将 Google 云 运行 服务连接到 Google 云 SQL 数据库
Connecting Google Cloud Run Service to Google Cloud SQL database
我有 2 个 google 云服务:
- Google 云 运行 服务(Node Js / Strapi)
- Google 云 SQL 服务 (Mysql)
我已经从 UI 添加到 Google 云 运行 服务的云 SQL 连接,并为 Google 云 SQL 服务。最重要的是,我已将 运行 服务 IP 添加到 SQL 服务的授权网络中。
如果我尝试从另一台服务器(Google 云外部)连接,我可以轻松连接到 Google 云 SQL 服务并执行查询。
但是,如果我尝试使用完全相同的设置(Ip、database_name 等)从 GCloud 运行 服务内部进行连接,我的连接会挂起,并且我会在日志中收到超时错误...
如何正确地允许 Gcloud SQL 接受来自 GCloud 运行 的连接?
我在这里寻找其他答案,但它们看起来都很旧(2015 年左右)
您可以使用 3 种模式访问您的数据库
- 使用built-in功能。在这种情况下,您不需要指定 IP 地址,它是一个 linux 套接字,已打开以与数据库通信,如 the documentation
中所述
- 使用云 SQL 私有 IP。这一次,无需在 Cloud 运行 服务中配置连接,您不会使用它,因为您将使用 IP,而不是 linux 套接字。这个解决方案需要两件事
- 首先将您的数据库附加到您的 VPC,然后give it a private IP
- 然后,您需要通过您的 VPC 路由 Cloud 运行 的私有 IP 流量。为此,您必须创建一个 serverless VPC Connector
,然后附加到 Cloud 运行 服务
- 使用云 SQL public IP。这一次,无需在 Cloud 运行 服务中配置连接,您不会使用它,因为您将使用 IP,而不是 linux 套接字。为此,您需要更多步骤(而且安全性较低)
- 您需要通过您的 VPC 路由 Cloud 运行 的所有出口流量。为此,您必须创建一个 serverless VPC Connector
,然后附加到 Cloud 运行 服务
- 使用 the Serverless VPC Connector and the egress connectivity param to "all"
部署您的 Cloud 运行 服务
- 然后创建一个Cloud NAT to route all the VPC Connector ip range traffic to a single IP (or set of IPs)(link是Cloud Functions文档,但它的工作方式完全相同)
- 最终在 Cloud SQL 授权网络上授权 Cloud NAT IP。
在你的情况下,你已经将 Cloud 运行 IP 列入白名单,但它是一个共享 IP(其他服务可以使用相同的!!小心)并且它并不总是相同的,有一个池Google 云使用的 IP 地址。
我有 2 个 google 云服务:
- Google 云 运行 服务(Node Js / Strapi)
- Google 云 SQL 服务 (Mysql)
我已经从 UI 添加到 Google 云 运行 服务的云 SQL 连接,并为 Google 云 SQL 服务。最重要的是,我已将 运行 服务 IP 添加到 SQL 服务的授权网络中。
如果我尝试从另一台服务器(Google 云外部)连接,我可以轻松连接到 Google 云 SQL 服务并执行查询。 但是,如果我尝试使用完全相同的设置(Ip、database_name 等)从 GCloud 运行 服务内部进行连接,我的连接会挂起,并且我会在日志中收到超时错误...
如何正确地允许 Gcloud SQL 接受来自 GCloud 运行 的连接?
我在这里寻找其他答案,但它们看起来都很旧(2015 年左右)
您可以使用 3 种模式访问您的数据库
- 使用built-in功能。在这种情况下,您不需要指定 IP 地址,它是一个 linux 套接字,已打开以与数据库通信,如 the documentation 中所述
- 使用云 SQL 私有 IP。这一次,无需在 Cloud 运行 服务中配置连接,您不会使用它,因为您将使用 IP,而不是 linux 套接字。这个解决方案需要两件事
- 首先将您的数据库附加到您的 VPC,然后give it a private IP
- 然后,您需要通过您的 VPC 路由 Cloud 运行 的私有 IP 流量。为此,您必须创建一个 serverless VPC Connector ,然后附加到 Cloud 运行 服务
- 使用云 SQL public IP。这一次,无需在 Cloud 运行 服务中配置连接,您不会使用它,因为您将使用 IP,而不是 linux 套接字。为此,您需要更多步骤(而且安全性较低)
- 您需要通过您的 VPC 路由 Cloud 运行 的所有出口流量。为此,您必须创建一个 serverless VPC Connector ,然后附加到 Cloud 运行 服务
- 使用 the Serverless VPC Connector and the egress connectivity param to "all" 部署您的 Cloud 运行 服务
- 然后创建一个Cloud NAT to route all the VPC Connector ip range traffic to a single IP (or set of IPs)(link是Cloud Functions文档,但它的工作方式完全相同)
- 最终在 Cloud SQL 授权网络上授权 Cloud NAT IP。
在你的情况下,你已经将 Cloud 运行 IP 列入白名单,但它是一个共享 IP(其他服务可以使用相同的!!小心)并且它并不总是相同的,有一个池Google 云使用的 IP 地址。