6 septembre 2018

Créer une stack de services sous Rancher 1.x

Suite du tutoriel Rancher 1.x : comment créer une stack applicative avec un service WordPress et une base de données MySQL en quelques minutes.

Dans un précédent article, nous avons vu comment déployer un serveur Rancher 1.x avec Docker en quelques minutes. Aujourd’hui, nous allons voir comment créer une stack de services sous Rancher, avec :

  • un service WordPress
  • une base de données MySQL

Ajouter une stack

  1. Cliquez sur le menu « Stacks », puis sur « Add Stack ».

    Page des stacks Rancher

  2. Donnez un nom à votre stack, par exemple wordpress.

    Ajout d'une stack Rancher

  3. Vous pouvez laisser les champs docker-compose.yml et rancher-compose.yml vides pour le moment, nous allons ajouter les services manuellement.

    Édition d'une stack Rancher

  4. Cliquez sur « Create » pour valider la création de la stack.

Sachez qu’il est également possible d’importer directement un fichier docker-compose.yml existant pour créer tous les services de la stack en une seule fois. Mais pour bien comprendre le fonctionnement de Rancher, nous allons procéder service par service.

Ajouter des services

Notre stack wordpress est maintenant créée, mais elle est vide. Nous allons y ajouter deux services :

  • wordpress, l’image officielle WordPress
  • mysql, l’image officielle MySQL

Quel service démarrer en premier ?

WordPress a besoin d’une base de données pour fonctionner. Il faut donc démarrer le service MySQL avant le service WordPress, pour que ce dernier puisse s’y connecter dès son démarrage.

Démarrer MySQL

L’image mysql accepte plusieurs variables d’environnement pour sa configuration, notamment :

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=monsupermotdepasse -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=monsupermotdepasse mysql:5.7

Pour ajouter ce service depuis l’interface de Rancher :

  1. Cliquez sur « Add Service » depuis votre stack wordpress.

    Menu d'ajout de service Rancher

  2. Renseignez le nom du service (mysql), l’image (mysql:5.7) et les variables d’environnement vues ci-dessus.

    Configuration du service MySQL

  3. Cliquez sur « Create ». Le service va démarrer, ce qui peut prendre quelques instants la première fois (initialisation de la base de données).

    Démarrage du service MySQL

  4. Une fois démarré, le service apparaît en vert.

    Statut du service MySQL

Félicitations, votre base de données MySQL est prête à accueillir WordPress !

Démarrer WordPress

De la même façon, voici la commande Docker équivalente pour le service WordPress :

docker run -d --name wordpress -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=monsupermotdepasse -e WORDPRESS_DB_NAME=wordpress -p 8080:80 wordpress:latest

Notez la variable WORDPRESS_DB_HOST=mysql : sous Rancher, chaque service d’une stack peut joindre les autres services par leur nom, grâce à la résolution DNS interne (cattle-dns).

  1. Ajoutez un nouveau service wordpress avec l’image wordpress:latest et les variables d’environnement ci-dessus.

    Configuration du service WordPress

  2. Une fois créé, vous devriez voir vos deux services (mysql et wordpress) actifs dans la stack.

    Stack avec deux services actifs

Accéder à WordPress depuis l’extérieur

Il ne reste plus qu’à exposer le service WordPress sur le port 80, via le load balancer intégré de Rancher.

  1. Depuis le menu « Load Balancing », créez un nouveau load balancer pointant vers le port 80 de votre hôte, redirigé vers le port 80 du conteneur wordpress.

    Configuration du load balancer Rancher

  2. Votre stack est maintenant complète : MySQL, WordPress et le load balancer fonctionnent ensemble.

    Stack complète sous Rancher

Vous pouvez désormais accéder à votre site via l’IP publique de votre hôte, et terminer l’installation de WordPress.

Page d'installation de WordPress

Pour aller plus loin

Il ne vous reste plus qu’à ajouter de la persistance pour vos données MySQL et vos fichiers WordPress, ou à passer à une configuration en haute disponibilité avec plusieurs hôtes. Mais ce sera pour un prochain article.