Ошибка при подключении к MongoDB Atlas через VPC Peering из кластера GCP Kubernetes

Ошибка при подключении к MongoDB Atlas через VPC Peering из кластера GCP Kubernetes

Я подключаю приложение Nodejs, работающее на кластере GCP Kubernetes. Раньше все работало нормально, когда я включал VPC Peering и использовал строку подключения (Private). На панели управления Atlas рекомендуется:

mongodb+srv://(имя пользователя):(пароль)@<имя_кластера>-pri.m6tkv.gcp.mongodb.net/<имя_базы_данных>?retryWrites=true&w=majority

Для настройки я следовал этой инструкции:https://docs.atlas.mongodb.com/security-vpc-peering/

Я не могу понять, так как мое приложение работает уже довольно долго с этой конфигурацией. Но в один прекрасный день приложение, работающее на поде в моем кластере GCP, не может подключиться.

Вот сообщение об ошибке:

Connected mongodb failed MongoNetworkError: failed to connect to server [<cluster_name>-00-00-pri.m6tkv.gcp.mongodb.net:27017] on first connect [MongoNetworkError: connection timed out  
at connectionFailureError (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:406:14)                                                                  
at TLSSocket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:16)                                                                   
at Object.onceWrapper (events.js:299:28)                                                                                                                                           
at TLSSocket.emit (events.js:210:5)                                                                                                                                                
at TLSSocket.Socket._onTimeout (net.js:469:8)                                                                                                                                      
at listOnTimeout (internal/timers.js:531:17)                                                                                                                                       
at processTimers (internal/timers.js:475:7) {name: 'MongoNetworkError'                                                                                                                                                           }]                                                                                                                                                                                    at Pool.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/topologies/server.js:438:11)                                                                         
at Pool.emit (events.js:210:5)                                                                                                                                                     
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:562:14                                                                                              
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:1009:9                                                                                              
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:31:7                                                                                             
at callback (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:264:5)                                                                                 
at TLSSocket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:7)                                                                    
at Object.onceWrapper (events.js:299:28)                                                                                                                                           
at TLSSocket.emit (events.js:210:5)                                                                                                                                                
at TLSSocket.Socket._onTimeout (net.js:469:8)                                                                                                                                      
at listOnTimeout (internal/timers.js:531:17)                                                                                                                                       
at processTimers (internal/timers.js:475:7)    

Я переключился обратно на старое соединение (стандартное), мое приложение снова работает. Строка соединения:

mongodb+srv://(имя пользователя):(пароль)@<имя_кластера>.m6tkv.gcp.mongodb.net/<имя_базы_данных>?retryWrites=true&w=majority

Возникли какие-то проблемы с подключением через VPC Peering, никаких зацепок найти не удалось.

решение1

Публикую этот ответ в виде вики-статьи сообщества для лучшей видимости.

Я решил эту проблему, добавив диапазон адресов модулей в моем кластере в белый список IP-адресов на Atlas.

Решением этой проблемы стало добавление диапазона адресов модуля в белый список IP-адресов сервера Atlas.

Об этом также упоминается в официальной документации:

Вам необходимо добавить адрес блока VPC CIDR (или его подмножество), связанный с одноранговым VPC, вбелый списокпрежде чем ваш новый VPC peer сможет подключиться к вашему кластеру Atlas. Чтобы узнать о диапазонах IP-адресов в автоматическом режиме, которые использует GCP, см.Диапазоны IP-адресов в автоматическом режиме.

Docs.atlas.mongodb.com: Безопасность VPC Пиринг

Вам нужно будет перейти по ссылке ниже с руководством внутри:

Связанный контент