繁体   English   中英

启用私有 IP 并关闭公共 IP 后无法从 Cloud Run 连接到 Cloud SQL

[英]Cannot connect to Cloud SQL from Cloud Run after enabling private IP and turning off public iP

我有一个 postgreSQL CLoud SQL 实例,我通过 UNIX 套接字连接到它,并且根据文档从 Cloud Run 容器中获取实例名称。 使用公共 IP,此连接工作正常。 我想关闭公共 IP 并且只有一个私有 IP,所以我不会为以后的公共 IP 付费。

当我第一次创建 Cloud SQL 实例时,我只启用了公共 IP。 几天后,我启用了私有 IP。 对于私有 IP 的关联网络,我接受了默认值,因为 Cloud Run 实例在同一个项目中。

当我关闭公共 IP 时,我的应用程序无法再连接到 Cloud SQL 实例。 我收到连接拒绝错误:

sqlalchemy.exc.InterfaceError: (pg8000.core.InterfaceError) ('communication error', ConnectionRefusedError(111, 'Connection refused'))

如上所述,我确实遵循了从 Cloud Run 连接到 Cloud SQL 页面上的说明:

https://cloud.google.com/sql/docs/postgres/connect-run

在关闭公共 IP 并且只有私有 IP 可用后,我什至运行 gcloud 命令来更新现有部署的修订版,但没有任何区别。

从 Cloud Run 连接到 Cloud SQL 是否需要公共 IP? 我在连接文档页面中没有看到。 或者在尝试切换到仅拥有私有 IP 时我还错过了什么? 或者我是否需要创建一个没有公共 IP 的新 Cloud 实例,然后再次按照通过实例名称连接 Cloud Run 的说明进行操作?

从 Cloud Run 连接到 Cloud SQL 是否需要公共 IP? 我在连接文档页面中没有看到。

从 Cloud Run 连接到 Cloud SQL 页面上,它显示“注意:这些说明要求您的 Cloud SQL 实例配置公共 IP 地址。”

私有 IP 访问是从虚拟私有云 (VPC) 访问 为了通过 VPC 访问您的实例,您要连接的资源需要是 VPC 的一部分。 Cloud Run 目前不支持 VPC 访问,因此您现在需要使用公共 IP。

TL;DR : 向 Google 支持开立案例

您的案例很有趣,因为根据设计,我认为它还不受支持。

事实上,当您使用私有 IP 创建 Cloud SQL 数据库时,您的 VPC 和 Cloud SQL VPC(或类似的东西)之间会建立网络对等互连

此外,今天无法将您的 Cloud Run 实例插入到您的 VPC。 有了函数和 App Engine,您就有了无服务器 VPC 连接器,而 Cloud Run 还没有(即将推出!)。

无服务器 VPC 连接器执行与 Cloud SQL 私有 IP 相同的功能,我的意思是您的 VPC 和 Cloud Functions(或 App Engine)VPC(或等效的东西)之间的对等互连。

即使 Cloud Run 上提供无服务器 VPC 连接器,由于网络对等传输性,也不确定它是否有效。 简而言之,如果您在 VPC A -> VPC B 和 VPC B -> VPC C 之间有对等互连,则无法通过在 VPC B 中执行跳跃从 VPC A 到达 VPC C。将 A 替换为 VPC Cloud Run, B由您项目的 VPC 和 C 由 VPC Cloud SQL。

只有直接对等互连的网络才能进行通信。 不支持传递对等互连。 换句话说,如果VPC网络N1与N2和N3对等,但N2和N3没有直接连接,则VPC网络N2无法通过VPC网络对等连接与VPC网络N3通信。

我没有检查 AppEngine 或 Cloud Function,但这种设计应该不起作用。

但我不确定,这就是为什么给 Google 支持的案例可以让您有明确的答案,并且可能会在路线图上提供输入。 欢迎在此处提供来自 Google 支持的任何有价值的信息!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM