11.4. Déployer votre application sur OpenShift Container Platform
Vous pouvez déployer votre application sur OpenShift Container Platform.
Après avoir créé le projet rails-app
, vous êtes automatiquement transféré dans le nouvel espace de noms du projet.
Le déploiement de votre application dans OpenShift Container Platform se fait en trois étapes :
- Création d'un service de base de données à partir de l'image PostgreSQL d'OpenShift Container Platform.
- Création d'un service frontal à partir de l'image de construction Ruby 2.0 d'OpenShift Container Platform et de votre code source Ruby on Rails, qui sont reliés au service de base de données.
- Création d'un itinéraire pour votre application.
Procédure
Pour déployer votre application Ruby on Rails, créez un nouveau projet pour l'application :
$ oc new-project rails-app --description="My Rails application" --display-name="Rails Application"
11.4.1. Création du service de base de données
Votre application Rails s'attend à ce qu'un service de base de données soit en cours d'exécution. Pour ce service, utilisez l'image de la base de données PostgreSQL.
Pour créer le service de base de données, utilisez la commande oc new-app
. À cette commande, vous devez transmettre certaines variables d'environnement nécessaires qui sont utilisées dans le conteneur de la base de données. Ces variables d'environnement sont nécessaires pour définir le nom d'utilisateur, le mot de passe et le nom de la base de données. Vous pouvez modifier les valeurs de ces variables d'environnement comme bon vous semble. Les variables sont les suivantes :
- BASE DE DONNÉES POSTGRESQL_
- POSTGRESQL_USER
- MOT DE PASSE POSTGRESQL_
La définition de ces variables garantit :
- Il existe une base de données portant le nom spécifié.
- Il existe un utilisateur portant le nom spécifié.
- L'utilisateur peut accéder à la base de données spécifiée avec le mot de passe spécifié.
Procédure
Créer le service de base de données :
$ oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
Pour définir également le mot de passe de l'administrateur de la base de données, ajoutez à la commande précédente le texte suivant :
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
Observez les progrès :
$ oc get pods --watch
11.4.2. Création du service frontal
Pour apporter votre application à OpenShift Container Platform, vous devez spécifier un dépôt dans lequel votre application vit.
Procédure
Créez le service frontal et spécifiez les variables d'environnement liées à la base de données qui ont été définies lors de la création du service de base de données :
$ oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql
Avec cette commande, OpenShift Container Platform récupère le code source, configure le constructeur, construit l'image de votre application et déploie l'image nouvellement créée avec les variables d'environnement spécifiées. L'application s'appelle
rails-app
.Vérifiez que les variables d'environnement ont été ajoutées en consultant le document JSON de la configuration du déploiement de
rails-app
:$ oc get dc rails-app -o json
La section suivante devrait s'afficher :
Exemple de sortie
env": [ { "name": "POSTGRESQL_USER", "value": "username" }, { "name": "POSTGRESQL_PASSWORD", "value": "password" }, { "name": "POSTGRESQL_DATABASE", "value": "db_name" }, { "name": "DATABASE_SERVICE_NAME", "value": "postgresql" } ],
Vérifier le processus de construction :
$ oc logs -f build/rails-app-1
Une fois la construction terminée, regardez les pods en cours d'exécution dans OpenShift Container Platform :
$ oc get pods
Vous devriez voir une ligne commençant par
myapp-<number>-<hash>
, et c'est votre application qui s'exécute dans OpenShift Container Platform.Avant que votre application ne soit fonctionnelle, vous devez initialiser la base de données en exécutant le script de migration de la base de données. Il y a deux façons de procéder :
Manuellement à partir du conteneur frontal en cours d'exécution :
Exécuter dans le conteneur frontal avec la commande
rsh
:oc rsh <frontend_pod_id>
Exécuter la migration depuis l'intérieur du conteneur :
$ RAILS_ENV=production bundle exec rake db:migrate
Si vous exécutez votre application Rails dans un environnement
development
outest
, vous ne devez pas spécifier la variable d'environnementRAILS_ENV
.
- En ajoutant des crochets de cycle de vie de pré-déploiement dans votre modèle.
11.4.3. Créer un itinéraire pour votre application
Vous pouvez exposer un service pour créer une route pour votre application.
Procédure
Pour exposer un service en lui donnant un nom d'hôte accessible de l'extérieur comme
www.example.com
, utilisez OpenShift Container Platform route. Dans votre cas, vous devez exposer le service frontal en tapant :$ oc expose service rails-app --hostname=www.example.com
Assurez-vous que le nom d'hôte que vous spécifiez se résout dans l'adresse IP du routeur.