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

  1. 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
  2. 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

  1. 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.

  2. 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"
        }
    
    ],

  3. Vérifier le processus de construction :

    $ oc logs -f build/rails-app-1
  4. 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.

  5. 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 ou test, vous ne devez pas spécifier la variable d'environnement RAILS_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
Avertissement

Assurez-vous que le nom d'hôte que vous spécifiez se résout dans l'adresse IP du routeur.