问题描述
我正在尝试使用VPC和对等网络从Google Cloud Run连接到MongoDB,但似乎无法建立连接。目标是能够仅允许特定IP范围从Cloud Run连接到Atlas。
我的设置是:
- 在Google Cloud上运行的MongoDB Atlas。
- 在与MongoDB地图集相同的区域中运行NodeJS服务器的Google Cloud Run容器(尽管据我所知这无关紧要)。
我已采取以下步骤:
-
按照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之后尝试连接时,连接失败。我想念什么?
解决方法
解决了这个问题,所以回答我自己的问题。事实证明问题中概述的方法确实有效。我错过了两件事:
-
您需要将MongoDB连接字符串更改为私有连接字符串。您可以通过单击MongoDB仪表板中“集群”下的“连接”来检索它。据我所知,MongoDB对等网络指南中的任何地方都没有记录。
-
在MongoDB Atlas网络设置中将来自VPC本身的CIDR范围(步骤1)和来自无服务器连接器的CIDR范围(步骤3)列入白名单。