【发布时间】:2020-12-07 21:27:28
【问题描述】:
我正在尝试使用 VPC 和对等网络从 Google Cloud Run 连接到 MongoDB,但我似乎无法建立连接。目标是能够从 Cloud Run 连接到 Atlas,同时只允许特定的 IP 范围。
我的设置是:
- 在 Google Cloud 上运行的 MongoDB Atlas。
- Google Cloud Run 容器在与 MongoDB 地图集相同的区域上运行 NodeJS 服务器(尽管据我所知,这并不重要)。
我已采取以下步骤:
-
按照https://cloud.google.com/vpc/docs/using-vpc 的说明在 Google Cloud 端创建 VPC。
-
在我的 VPC 和 MongoDB Atlas VPC 之间设置网络对等互连:https://docs.atlas.mongodb.com/security-vpc-peering/
-
使用连接器设置无服务器 VPC 访问:https://cloud.google.com/vpc/docs/configure-serverless-vpc-access
-
使用上面的连接器重新部署云运行容器:https://cloud.google.com/run/docs/configuring/connecting-vpc
-
将步骤 3 中的 CIDR 范围添加到 MongoDB 图集的白名单中,并删除了之前的开放范围 0.0.0.0/0。
所有步骤都成功(绿点等),但是当我在第 5 步之后尝试连接时,连接失败。我错过了什么?
【问题讨论】:
-
您介意解释一下 GCD 是什么吗? Cloud Run 很快将允许为出站连接定义静态 IP 地址,这样您就可以将某些 IP 列入白名单,并且它们将来自您的 Cloud Run 应用。
-
什么是 GCD 并在问题中添加完整的失败消息,还可以尝试使用 --verbose 从 mongo shell 连接。
-
VPC 对等互连不可传递。这意味着您无法到达一个网络并被路由到另一个网络。您有网络 A(云运行)-> 网络 B(您的 VPC)-> 网络 C(MongoDB)。网络 A 不会被路由到网络 C。
-
@AhmetB-Google 抱歉,我拼错了。我的意思是 GCP,MongoDB 在 Google Cloud 上运行。那么这是否意味着目前还没有办法通过网络对等在 cloud run 和 mongodb atlas 之间建立连接?
-
@JohnHanley 感谢您的回复。所以: 1. 云运行的“连接器”只允许我连接到网络 B 上的主机(如果我在那里运行其他服务)。 2. 如果我实际上在网络 B(我的 VPC)上运行某些东西,例如App Engine,我可以通过 VPC 对等连接从它连接到网络 C,但现在对等连接对我没有任何作用。我理解正确吗?
标签: mongodb google-cloud-platform google-cloud-run mongodb-atlas