首先要问的问题是,我要谈谈我的环境:
谷歌基本设置: 1X F1-微用3个节点
Kubernetes设定:nginx的-入口控制器,证书管理器, 1 -backend与部署服务, 1 与部署服务-frontend
蒙戈阿特拉斯设置: 3 -replicaSet
设置不应该成为问题,但是可能会给场景带来一些感觉。
好的,我们来解决这个问题,我的Nodejs后端使用以下网址连接到 MonglAtlas数据库:
MONGODB_URI=mongodb+srv://username:pwd@mongotoken-66gqa.gcp.mongodb.net/test?retryWrites=true
IP白名单是我的静态公共IP,使用nginx-ingress进行路由。让我为前端网页定义my.domain
,为后端api定义my.domain/api/
。
一切都很好当IP白名单是允许访问来自ANYWHERE 下,和后端可以连接到DB MongoAtlas为毫无疑问的。
但是当我删除该选项并添加与my.domain
匹配的IP时(仔细检查,我ping my.domain
绝对是相同的IP),然后后端找不到具有以下错误的数据库:
MongoNetworkError: connection 4 to closed https....
如果缺少任何信息,请告诉我。任何建议表示赞赏!
另一个怀疑是我 1 静态IP和 3 的临时IP在网络VPC。我猜这意味着3个具有负载均衡器IP的节点。如果后端使用临时IP连接到MongoAtlas后端,则我必须检查Pod中哪个节点并使该节点静态,但这对Kubernetes毫无意义。我希望有另一种解决方案:(
答案 0 :(得分:1)
我使用的解决方案是NAT。 其概念是将 1- Google Compute Engine实例建立为NAT网关,并将所有出口映射到静态ip。哦,最重要的是,上述所有步骤都不需要手动配置,只需按照文档进行操作,一切便可以按预期进行。
如果出现 STATIC_ADDRESS QUOTA 问题,您可以将ZONE和REGION更改为QUOTA保留的任何区域。就我而言,us-central作为NAT,而us-west作为Original Service。
答案 1 :(得分:0)
入口和出口流量都不同的方式。
当您连接到入口,流量会突破静态IP负载均衡器(我希望你用入口与服务型“负载均衡)。
当您从群集连接到任何外部资源,您可以直接从节点连接,当你的容器的作品,所以你需要在你的图集节点的白名单中的地址,以便从他们的连接。