MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

OpenShift Access Mongodb Pod de outro Pod


Ok, foi uma longa pesquisa e finalmente consegui resolver. Meu primeiro erro foi que as rotas não são adequadas para fazer uma conexão com um banco de dados, pois usam apenas o protocolo http.

Agora havia 2 casos de uso restantes para mim
  1. Você está trabalhando em sua máquina local e deseja testar o código que será enviado posteriormente para o OpenShift
  2. Você implanta esse código no OpenShift (precisa estar no mesmo projeto, mas é um aplicativo diferente do banco de dados)

1. Máquina local

Como a rota não funciona, o encaminhamento de porta é usado. Eu li isso antes, mas realmente não entendi o que significava (pensei que o próprio serviço já está encaminhando portas).

Quando você estiver em sua máquina local, você fará o seguinte com o oc
oc port-forward <pod-name> <local-port>:<remote-port>

Você obterá a informação de que a porta foi encaminhada. Agora, o problema é que, em seu aplicativo, você agora se conectará ao localhost (mesmo em sua máquina local)

2. Aplicativo rodando no OpenShift

Depois de fazer o upload do seu código para o OpenShift (no meu caso, apenas Add to project --> Node.js --> Add your repo), localhost não funcionará mais. desde que você esteja no mesmo projeto você terá muitas informações em suas variáveis ​​de ambiente. Então, basta verificar o nome do serviço do seu banco de dados (no meu caso mongodb) e você encontrará o host e a porta para usar

Resumo

Aqui está um pequeno exemplo de código que funciona agora, tanto na máquina local quanto no OpenShift. Já configurei um persistente e MongoDB no OpenShift chamado mongodb.

O código não faz muito, mas fará uma conexão e lhe dirá que fez, então você sabe 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);
});