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"
$ oc new-project rails-app --description="My Rails application" --display-name="Rails Application"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.1. Création du service de base de données Copier lienLien copié sur presse-papiers!
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
$ oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Observez les progrès :
oc get pods --watch
$ oc get pods --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.2. Création du service frontal Copier lienLien copié sur presse-papiers!
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
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ oc get dc rails-app -o json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La section suivante devrait s'afficher :
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier le processus de construction :
oc logs -f build/rails-app-1
$ oc logs -f build/rails-app-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Une fois la construction terminée, regardez les pods en cours d'exécution dans OpenShift Container Platform :
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
oc rsh <frontend_pod_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécuter la migration depuis l'intérieur du conteneur :
RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake db:migrate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 Copier lienLien copié sur presse-papiers!
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
$ oc expose service rails-app --hostname=www.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Assurez-vous que le nom d'hôte que vous spécifiez se résout dans l'adresse IP du routeur.