将 Google 云 运行 服务连接到 Google 云 SQL 数据库

Connecting Google Cloud Run Service to Google Cloud SQL database

我有 2 个 google 云服务:

  1. Google 云 运行 服务(Node Js / Strapi)
  2. 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 套接字。为此,您需要更多步骤(而且安全性较低)

在你的情况下,你已经将 Cloud 运行 IP 列入白名单,但它是一个共享 IP(其他服务可以使用相同的!!小心)并且它并不总是相同的,有一个池Google 云使用的 IP 地址。