Erro ao conectar-se ao MongoDB Atlas por meio de peering de VPC do cluster GCP Kubernetes

Erro ao conectar-se ao MongoDB Atlas por meio de peering de VPC do cluster GCP Kubernetes

Estou conectando um aplicativo Nodejs em execução no cluster GCP Kubernetes. Antes funcionava bem, quando eu habilitava o peering de VPC e estava usando a string de conexão (Privada). É recomendado no painel do Atlas:

mongodb+srv://(nome de usuário):(senha)@<cluster_name>-pri.m6tkv.gcp.mongodb.net/<database_name>?retryWrites=true&w=majority

Eu segui este tutorial para configurar:https://docs.atlas.mongodb.com/security-vpc-peering/

Não consigo entender, pois meu aplicativo está em execução há um bom tempo com essa configuração. Mas, um belo dia, o aplicativo em execução em um pod em meu cluster do GCP não consegue se conectar.

Essa é a mensagem de erro:

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)    

Voltei para a conexão antiga (Padrão), meu aplicativo funciona novamente. A cadeia de conexão:

mongodb+srv://(nome de usuário):(senha)@<cluster_name>.m6tkv.gcp.mongodb.net/<database_name>?retryWrites=true&w=majority

Portanto, a conexão via VPC Peering está com algum problema, não consegui encontrar nenhuma pista.

Responder1

Publicar esta resposta como um wiki da comunidade para melhor visibilidade.

Resolvi esse problema adicionando o intervalo de endereços do pod em meu cluster à lista de permissões de IP no Atlas.

A solução para esse problema foi adicionar o intervalo de endereços do pod à lista de permissões de IP do servidor Atlas.

Também é mencionado na documentação oficial:

Você deve adicionar o endereço do bloco CIDR da VPC (ou subconjunto) associado à VPC peer aolista brancaantes que seu novo par de VPC possa se conectar ao cluster Atlas. Para saber mais sobre os intervalos de IP do modo automático que o GCP usa, consulteIntervalos de IP do modo automático.

Docs.atlas.mongodb.com: peering de VPC de segurança

Você precisará seguir o link abaixo com um guia dentro:

informação relacionada