GKE与远程数据库

时间:2019-02-02 11:16:20

标签: mongoose kubernetes google-cloud-platform google-kubernetes-engine

首先要问的问题是,我要谈谈我的环境:

  1. 谷歌基本设置: 1X F1-微用3个节点

  2. 实例
  3. Kubernetes设定:nginx的-入口控制器,证书管理器, 1 -backend与部署服务, 1 与部署服务-frontend

  4. 蒙戈阿特拉斯设置: 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毫无意义。我希望有另一种解决方案:(

2 个答案:

答案 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负载均衡器(我希望你用入口与服务型“负载均衡)。

当您从群集连接到任何外部资源,您可以直接从节点连接,当你的容器的作品,所以你需要在你的图集节点的白名单中的地址,以便从他们的连接。