【问题标题】:How do I connect to Google Cloud SQL from Google Cloud Run via TCP?如何通过 TCP 从 Google Cloud Run 连接到 Google Cloud SQL?
【发布时间】:2021-07-18 16:54:50
【问题描述】:

根据我目前的理解,当我在其中一个修订版中启用与 Cloud SQL 实例的服务连接时,路径 /cloudsql/[instance name]/.s.PGSQL.5432 将被填充。这是一个 UNIX 套接字连接。

很遗憾,我使用的第 3 方应用程序不支持 UNIX 套接字连接,因此我需要通过 TCP 连接。

Google Cloud SQL 代理是否还配置了我可以通过 localhost:5432 或其他等效方式连接到 Cloud SQL 的任何方式?我正在阅读的一些文档表明,我必须使用私有 IP 进行详细的网络配置,以便为我的 Cloud Run 修订版启用基于 TCP 的 Cloud SQL,but I feel like the Cloud Proxy is already capable of giving me a TCP connection 而不是 UNIX 套接字。

什么是正确和最小的前进方式,显然假设我没有能力修改我正在运行的代码。

I've also cross posted this question to the Google Cloud SQL Proxy repo.

【问题讨论】:

  • AFAIK 您的 PostgreSQL 客户端软件可以直接与 Cloud SQL 公共 IP 白名单地址通信并绕过 Cloud SQL Auth 代理。安全风险是 SQL 实例将向 Internet 开放。 Cloud Run 没有静态 IP 地址。您可以使用 Cloud NAT 配置通过您的 VPC 网络的 Cloud Run VPC 出口,以提供用于白名单的固定 IP 地址。另一种方法是使用无服务器 VPC 访问连接器连接到 Cloud SQL 私有 IP。 cloud.google.com/sql/docs/postgres/connect-run#private-ip
  • 是的,所以我知道这些说明,但我发现它们在究竟什么是必要的和正在做什么方面非常混乱。有很多部分似乎需要设置,但没有真正解释每个部分在做什么或整体拓扑是什么。有没有比他们的文档解释得更好的地方?
  • 最简单也可能是最好的解决方案是改进客户端以支持 Cloud Run。否则,您将需要花时间学习 Google Cloud 更高级的配置功能。有时,没有捷径可走。

标签: google-cloud-platform google-cloud-sql google-cloud-run


【解决方案1】:

最安全和最简单的方法是使用私有 IP。没那么长,那么难,你有3个步骤

  1. 创建一个serverless VPC connector。在与您的 Cloud Run 服务相同的区域中创建它。记下您使用的 VPC 网络(默认为“默认”)
  2. 添加serverless VPC Connector to Cloud Run service。仅通过此连接器路由私有 IP
  3. 添加private connection to your Cloud SQL database。将其附加到与您的无服务器 VPC 连接器相同的 VPC 网络中。

云配置结束。现在您必须获取实例的 Cloud SQL 私有 IP 并将其添加到 Cloud Run 服务的参数中以打开与该 IP 的连接。

【讨论】:

  • 我如何知道使用哪个 IP 连接到 postgres?另外,我还需要在 Cloud Run 修订版中设置 CloudSQL 连接吗?
  • 设置私网IP后,您会在Cloud SQL的概览页面看到私网IP。不,您不需要在 Cloud Run 中添加 Cloud SQL 连接。没用,你将使用直接IP连接,而不是通过UNIX套接字
  • 嗯,我似乎无法连接到 Cloud SQL 向我显示的私有 IP。有没有更好的方法来检查我的环境或进行故障排除?很难了解我的 Cloud Run 环境周围的拓扑以及我的选择如何影响它。另外,我如何知道要配置哪些 CIDR 范围?它并不像文档看起来那么简单。
猜你喜欢
  • 1970-01-01
  • 2020-02-23
  • 2021-12-25
  • 2020-05-27
  • 2021-07-05
  • 2019-09-16
  • 2021-02-12
  • 2020-05-12
  • 2020-01-23
相关资源
最近更新 更多