sql >> Base de Datos >  >> NoSQL >> MongoDB

OpenShift Acceda a Mongodb Pod desde otro Pod

Ok, esa fue una búsqueda larga y finalmente pude resolverlo. Mi primer error fue que las rutas no son adecuadas para hacer una conexión a una base de datos ya que solo usan el protocolo http.

Ahora me quedaban 2 casos de uso

  1. Está trabajando en su máquina local y desea probar el código que luego cargará en OpenShift
  2. Usted implementa ese código en OpenShift (tiene que estar en el mismo proyecto pero es una aplicación diferente a la base de datos)

1. Máquina local

Dado que la ruta no funciona, se utiliza el reenvío de puertos. Lo he leído antes, pero realmente no entendía lo que significaba (pensé que el servicio en sí ya estaba reenviando puertos).

Cuando esté en su máquina local, hará lo siguiente con el oc

oc port-forward <pod-name> <local-port>:<remote-port>

Obtendrá la información de que el puerto está reenviado. Ahora la cuestión es que en su aplicación ahora se conectará a localhost (incluso en su máquina local)

2. Aplicación que se ejecuta en OpenShift

Después de cargar su código en OpenShift (en mi caso, solo agregue al proyecto --> Node.js --> Agregue su repositorio), localhost ya no funcionará. Lo que me tomó un tiempo entender es que como siempre que esté en el mismo proyecto, tendrá mucha información en sus variables de entorno. Así que simplemente verifique el nombre del servicio de su base de datos (en mi caso, mongodb) y encontrará el host y el puerto para usar

Resumen

Aquí hay un pequeño ejemplo de código que funciona ahora, tanto en la máquina local como en OpenShift. Ya configuré un MongoDB persistente en OpenShift llamado mongodb.

El código no hace mucho, pero hará una conexión y le dirá que lo hizo, para que sepa que está funcionando.

var mongoose = require('mongoose');

// Connect to Mongodb
var username = process.env.MONGO_DB_USERNAME || 'someUserName';
var password = process.env.MONGO_DB_PASSWORD || 'somePassword';

var host = process.env.MONGODB_SERVICE_HOST || '127.0.0.1';
var port = process.env.MONGODB_SERVICE_PORT || '27017';

var database = process.env.MONGO_DB_DATABASE || 'sampledb';
console.log('---DATABASE PARAMETERS---');
console.log('Host: ' + host);
console.log('Port: ' + port);
console.log('Username: ' + username);
console.log('Password: ' + password); 
console.log('Database: ' + database);



var connectionString = 'mongodb://' + username + ':' + password +'@' + host + ':' + port + '/' + database;
console.log('---CONNECTING TO---');
console.log(connectionString);
mongoose.connect(connectionString);

mongoose.connection.once('open', (data) => {
    console.log('Connection has been made');
    console.log(data);
});