Comment vous connectez-vous à MongoDB Atlas à partir de Google Cloud Run lorsque vous utilisez un VPC et un réseau de pairs?
J'essaie de me connecter de Google Cloud Run à MongoDB à l'aide d'un VPC et d'un réseau de pairs, mais je n'arrive pas à établir de connexion. L'objectif est de pouvoir se connecter de Cloud Run à Atlas tout en n'autorisant qu'une certaine plage d'adresses IP.
Ma configuration est:
- MongoDB Atlas fonctionnant sur Google Cloud.
- Un conteneur Google Cloud Run exécutant un serveur NodeJS sur la même région que l'atlas MongoDB (bien que cela ne devrait pas avoir d'importance pour autant que je sache).
J'ai suivi les étapes suivantes:
Créez un VPC côté Google Cloud en suivant les instructions de https://cloud.google.com/vpc/docs/using-vpc.
Configurez un appairage de réseau entre mon VPC et le VPC MongoDB Atlas: https://docs.atlas.mongodb.com/security-vpc-peering/
Configurez l'accès au VPC sans serveur à l'aide d'un connecteur: https://cloud.google.com/vpc/docs/configure-serverless-vpc-access
Conteneur d'exécution cloud redéployé à l'aide du connecteur ci-dessus: https://cloud.google.com/run/docs/configuring/connecting-vpc
Ajout de la plage CIDR de l'étape 3 à la liste blanche dans l'atlas MongoDB et suppression de la plage ouverte précédente 0.0.0.0/0.
Toutes les étapes réussissent (points verts, etc.) mais lorsque j'essaye de me connecter après l'étape 5, la connexion échoue. Qu'est-ce que je rate?
Réponses
Résolu cela en répondant à ma propre question. Il s'avère que l'approche décrite dans la question fonctionne. Il me manquait deux choses:
Vous devez remplacer la chaîne de connexion MongoDB par la chaîne de connexion privée. Vous pouvez le récupérer en cliquant sur "Connecter" sous "Clusters" dans le tableau de bord MongoDB. C'est ce que j'ai pu voir, qui n'est documenté nulle part dans le guide de mise en réseau des pairs MongoDB.
Mettez en liste blanche la plage CIDR du VPC lui-même (étape 1) et la plage CIDR du connecteur sans serveur (étape 3) dans les paramètres réseau de MongoDB Atlas.