MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

OpenShift Accéder au pod Mongodb à partir d'un autre pod

Ok c'était une longue recherche et finalement j'ai pu le résoudre. Ma première erreur a été que les routes ne sont pas adaptées pour établir une connexion à une base de données car elles n'utilisent que le protocole http.

Maintenant, il me restait 2 cas d'utilisation

  1. Vous travaillez sur votre ordinateur local et souhaitez tester le code que vous téléchargerez ultérieurement sur OpenShift
  2. Vous déployez ce code sur OpenShift (doit être dans le même projet mais est une application différente de la base de données)

1. Ordinateur local

Comme la route ne fonctionne pas, la redirection de port est utilisée. J'ai déjà lu cela, mais je n'ai pas vraiment compris ce que cela signifiait (je pensais que le service lui-même transférait déjà les ports).

Lorsque vous êtes sur votre machine locale, vous ferez ce qui suit avec l'oc

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

Vous obtiendrez les informations indiquant que le port est transféré. Maintenant, le fait est que dans votre application, vous allez maintenant vous connecter à localhost (même sur votre machine locale)

2. Application exécutée sur OpenShift

Une fois que vous aurez téléchargé votre code sur OpenShift (dans mon cas, ajoutez simplement au projet --> Node.js --> ajoutez votre dépôt), localhost ne fonctionnera plus. Ce qui m'a pris du temps à comprendre, c'est que tant que vous êtes dans le même projet vous aurez beaucoup d'informations dans vos variables d'environnement.Il suffit donc de vérifier le nom du service de votre base de données (dans mon cas mongodb) et vous trouverez l'hôte et le port à utiliser

Résumé

Voici un petit exemple de code qui fonctionne maintenant, aussi bien sur la machine locale que sur OpenShift. J'ai déjà configuré un MongoDB persistant sur OpenShift appelé mongodb.

Le code ne fait pas grand-chose, mais il établira une connexion et vous dira que c'est le cas, vous savez donc que cela fonctionne.

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);
});