Error al conectarse a MongoDB Atlas a través de VPC Peering desde GCP Kubernetes Cluster

Error al conectarse a MongoDB Atlas a través de VPC Peering desde GCP Kubernetes Cluster

Estoy conectando una aplicación Nodejs que se ejecuta en el clúster de GCP Kubernetes. Antes, funcionaba bien, cuando habilitaba VPC Peering y estaba usando la cadena de conexión (Privada). Se recomienda en el panel de Atlas:

mongodb+srv://(nombre de usuario):(contraseña)@<nombre_clúster>-pri.m6tkv.gcp.mongodb.net/<nombre_base_datos>?retryWrites=true&w=majority

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

No puedo entenderlo ya que mi aplicación ha estado ejecutándose durante bastante tiempo con esta configuración. Pero un buen día, la aplicación que se ejecuta en un módulo de mi clúster de GCP no puede conectarse.

Ese es el mensaje de error:

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)    

Volví a la conexión anterior (Estándar), mi aplicación vuelve a funcionar. La cadena de conexión:

mongodb+srv://(nombre de usuario):(contraseña)@<nombre_clúster>.m6tkv.gcp.mongodb.net/<nombre_base_datos>?retryWrites=true&w=majority

Entonces, la conexión a través de VPC Peering está teniendo algún problema, no pude encontrar ninguna pista.

Respuesta1

Publicar esta respuesta como wiki comunitaria para una mejor visibilidad.

Resolví este problema agregando el rango de direcciones del pod en mi clúster a la lista blanca de IP en Atlas.

La solución a este problema fue agregar el rango de direcciones del pod a la lista blanca de IP del servidor Atlas.

También se menciona en la documentación oficial:

Debe agregar su dirección de bloque CIDR de VPC (o subconjunto) asociada con la VPC par a lalista blancaantes de que su nuevo par de VPC pueda conectarse a su clúster Atlas. Para obtener más información sobre los rangos de IP del modo automático que utiliza GCP, consulteRangos de IP en modo automático.

Docs.atlas.mongodb.com: Emparejamiento de VPC de seguridad

Deberá seguir el siguiente enlace con una guía en su interior:

información relacionada