Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

791
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda