Во-первых, для моего вопроса мне нужно немного рассказать о моей среде:
Базовая настройка Google: 1x f1-micro экземпляр с 3 узлами
Настройка Kubernetes: nginx-ingress-controller, cert-manager, 1 -обэкэнд-сервис с развертыванием, 1 -фронтэнд-сервис с развертыванием.
Настройка Монго-Атласа: 3 -replicaSet
Установка не должна быть продолжительной, но она может вызвать некоторые сценарии.
ОК, пусть возникает проблема, мой бэкэнд Nodejs использует следующий URL для подключения к базе данных MonglAtlas :
MONGODB_URI=mongodb+srv://username:pwd@mongotoken-66gqa.gcp.mongodb.net/test?retryWrites=true
IP Белый список - это мой статический публичный IPкоторые используют nginx-ingress для маршрутизации.Позвольте мне определить my.domain
для моей веб-страницы и my.domain/api/
для API-интерфейса сервера.
Все нормально, когда белый список IP-адресов разрешен доступ из любого места , а бэкэнд может без сомнения подключаться к базе данных MongoAtlas.
Но когда я удаляю эту опцию и добавляюIP-адрес, который соответствует my.domain
(двойная проверка, я пинг my.domain
- это абсолютно тот же IP-адрес), а затем бэкэнд не смог найти базу данных со следующей ошибкой:
MongoNetworkError: connection 4 to closed https....
Если что-то не хватает, пожалуйста, дай мне знать.Любой совет приветствуется!
Еще одним подозрением является то, что я получил 1 статический IP и 3 эфемерный IP в сети VPC.Я предполагаю, что это означает 3 узла с IP loadbalancer.Если бэкэнд использует эфемерный IP для подключения к бэкенду MongoAtlas, я должен проверить модуль, в котором узлы, и сделать этот узел статичным, но это не имеет смысла для Kubernetes.Я надеюсь, что есть другое решение: (