Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

790
Views
Cómo exponer la conexión remota del conjunto de réplicas de MongoDB dentro de Kubernetes Cluster

Implementé un conjunto de réplicas de MongoDB en mi clúster de Kubernetes. El conjunto de réplicas de MongoDB se puede conectar fácilmente con la ayuda de ClusterIP interno dentro del clúster. Incluso lo conecto a mi cliente mongo-express.

 //Successfull and working fine internally mongodb://db-mongodb-0.mycompany-mongodb-headless:27017/db

Pero tengo que establecer una conexión remota para pruebas locales y otros servicios. Estoy usando el gráfico de timón de MongoDB proporcionado por Bitnami. Abrí un NodePort para mis dos conjuntos de réplicas en 30001 y 30002.

Mi primer intento de establecer una conexión remota fue:

Intenté conectarme con mi NodePort previamente abierto . Actualmente estoy usando Mongoose Client. Los puertos de nodo disponibles de mis dos conjuntos de réplicas son: 30001, 30002.

 //Unsuccessful mongoose .connect( `mongodb://username:password@<EXTERNAL_IP>:30001,<EXTERNAL_IP>:30002/mydb`, { useNewUrlParser: true, useUnifiedTopology: true, } )

Entonces mi segundo intento fue...

Intenté el reenvío de puertos e intenté conectarme con mi host local de esta manera:

 kubectl port-forward svc/database-mongodb-0-external 27017:27017

Luego traté de establecer una conexión como esta y fallé también

 //Unsuccessful //MongoError: Authentication failed. mongodb://username:password@localhost:27017/database

También probé los parámetros de consulta ?replicaSet=rs0 en ambos casos. Pero sin suerte.

No intenté abrir un LoadBalancer. ¿Hay alguna forma de establecer una conexión remota con mi controlador Ingress-Nginx a mis servicios MongoDB ? No sé si es posible, pero traté de reenviar mis servicios sin cabeza a un subdominio. Pero ese subdominio dice eso: parece que está intentando acceder a MongoDB a través de HTTP en el puerto del controlador nativo. ¡No estoy seguro de si es posible!

Pero finalmente, mi única pregunta es, ¿cómo puedo establecer o exponer una conexión remota con mi conjunto de réplicas de MongoDB que está configurado en un clúster de Kubernetes?

Mis últimos valores de Bitnami/Mongodb son

 architecture: replicaset auth: rootPassword: 12341234 username: abcd password: 1234234 database: abcd replicaSetKey: abcd persistence: enabled: true size: 3Gi externalAccess: enabled: true autoDiscovery: enabled: true service: type: NodePort nodePorts: ['30001', '30002'] rbac: create: true
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si entendí correctamente, desea exponer su conjunto de réplicas MongoDB a una conexión remota .

Estoy trabajando activamente con el gráfico de timón de Bitnami MongoDB y puedo conectarme fácilmente localmente al gráfico de timón usando su primer intento:

  1. Reenvío el servicio sin cabeza mapeando los puertos 27017:27017
  2. Simplemente me conecto al localhost usando el nombre de usuario y la contraseña, la única diferencia con mi cadena de conexión es que no especifico la base de datos: mongodb://<user>:<password>@localhost:27017

Para responder a su pregunta final, debe buscar en la página de documentación oficial , hay algunos valores para que el gráfico de timón exponga su mongodb:

  • service.type=LoadBalancer
  • externalAccess.enabled=true
  • externalAccess.autoDiscovery.enabled

Puede jugar con esas variables para encontrar la forma más adecuada de exponer su MongoDB de forma remota.

Tenga en cuenta que si configura LoadBalancer y autoDiscovery habilitados, debe asegurarse de que su clúster k8s tenga un LoadBalancer delante ( ELB en el caso de Amazon EKS ). No se preocupe por este último punto si está utilizando un servicio de kubernetes administrado en la nube, ya que tendrá esta función lista para usar.

over 4 years ago · Santiago Trujillo Report

0

Para acceder a MongoDB implementado como conjunto de réplicas desde fuera del clúster de K8, es necesario implementar un servicio por pod. Le recomiendo que lea esta sección de los documentos para comprender la topología: https://github.com/bitnami/charts/tree/master/bitnami/mongodb#architecture

Para implementarlo, puede seguir esto: https://github.com/bitnami/charts/tree/master/bitnami/mongodb#replicaset-accessing-mongodb-nodes-from-outside-the-cluster

No intenté abrir un LoadBalancer. ¿Hay alguna forma de establecer una conexión remota con mi controlador Ingress-Nginx a mis servicios MongoDB? No sé si es posible, pero traté de reenviar mis servicios sin cabeza a un subdominio. Pero ese subdominio dice eso: parece que está intentando acceder a MongoDB a través de HTTP en el puerto del controlador nativo. ¡No estoy seguro de si es posible!

Acerca de esto, no es posible porque Ingress sirve solo tráfico HTTP mientras que MongoDB no opera sobre HTTP

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!