将 Google Cloud Run 服务连接到 Google Cloud SQL 数据库

Giu*_*ioG 1 google-cloud-sql google-cloud-platform google-cloud-run

我有 2 个谷歌云服务:

  1. 谷歌云运行服务(Node Js / Strapi)
  2. 谷歌云 SQL 服务 (Mysql)

我已将 Cloud SQL 连接从 UI 添加到 Google Cloud Run 服务,并拥有 Google Cloud SQL 服务的公共 IP。最重要的是,我已将运行服务 IP 添加到 SQL 服务的授权网络中。

如果我尝试从另一台服务器(谷歌云外部)连接,我可以轻松连接到谷歌云 SQL 服务并执行查询。但是,如果我尝试从 GCloud Run Service 内部使用完全相同的设置(Ip、database_name 等)进行连接,我的连接就会挂起,并且日志中会出现超时错误...

如何正确允许 Gcloud SQL 接受来自 GCloud RUN 的连接?

我在这里寻找其他答案,但它们看起来都很旧(大约 2015 年)

gui*_*ere 6

您可以使用 3 种模式访问您的数据库

  • 使用内置功能。在这种情况下,您不需要指定 IP 地址,它是一个开放的 linux 套接字以与文档中所述的数据库进行通信
  • 使用 Cloud SQL 专用 IP。这一次,不需要在 Cloud Run 服务中配置连接,您不会使用它,因为您将使用 IP,而不是 linux socket。这个解决方案需要两件事
    • 首先将您的数据库附加到您的 VPC 并为其提供私有 IP
    • 然后,您需要通过您的 VPC 路由 Cloud Run 的私有 IP 流量。为此,您必须创建一个无服务器 VPC 连接器,然后将其附加到 Cloud Run 服务
  • 使用云 SQL 公共 IP。这一次,无需在 Cloud Run 服务中配置连接,您不会使用它,因为您将使用 IP,而不是 linux 套接字。要实现这一点,您需要更多步骤(而且安全性较低)

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