Stack de services sous Rancher 1.x, comment en créer une en dix minutes
Pour suivre au précédent article technique, j’ai décidé de vous expliquer comment créer une stack applicative sur votre orchestrateur Rancher en quelques minutes. Nous prendrons l’exemple d’une stack avec deux services :
- un wordpress
- une base de données MySQL
Si vous avez suivi l’article Déployer Rancher 1.x en cinq minutes, vous êtes alors en possession d’un cluster tout neuf avec au moins un nœud dans la partie Infrastructure. Il ne vous reste plus qu’à ajouter une stack et des services.
Ajouter une stack
1. Une stack est un groupe de services. Elles peuvent être utilisées pour regrouper les services qui, ensemble, définissent une application.
2. Dans le menu principal cliquer sur le bouton “STACKS”, cliquez ensuite sur le bouton “Add Stack” pour arriver sur l’image ci-dessous.
3. Vous devrez au minimum fournir un nom et cliquer sur le bouton “Create”.
4. Vous serez immédiatement amené dans le menu de gestion de la “stack” et pourrez commencer à ajouter des services, ajouter des répartiteurs de charge, ajouter des alias de service ou ajouter des services externes.
Rancher offre également la possibilité d’importer des fichiers de configuration. Les fichiers docker-compose.yml et rancher-compose.yml peuvent être importés directement dans la page de création d’une stack. Les fichiers peuvent être téléchargés dans Rancher ou collés directement dans la zone de texte. Une fois que vous cliquez sur le bouton Créer, la pile est formée avec les services associés. Les services du fichier docker-compose.yml seront seulement créés, mais pas démarrés. Vous devrez les démarrer individuellement.
Ajouter des services
Maintenant que la “stack” est prête, il va falloir installer les deux services mentionnés au début de l’article, pour cela je vais aller chercher les images dockers officielles :
Vous trouverez toutes les informations nécessaires au lancement des images dans leur dépôt docker hub respectif. Néanmoins, je vous montrerais les paramètres minimum à passer au démarrage des services pour que ces derniers fonctionnent correctement.
Quel service démarrer en premier ?
WordPress est un CMS qui a plusieurs pré-requis, il a notamment besoin d’une base de données MySQL pour fonctionner. Il faudra donc démarrer la base de données en premier.
Si vous regardez de plus prêt les recommandations des images WordPress et MySQL vous vous rendrez compte qu’il va vous falloir créer une database, un utilisateur et un mot de passe dédié à wordpress sur la base de données MySQL. Pour cela vous devrez passer des variables à Rancher comme vous le feriez avec Docker.
Démarrer MySQL
Vous aurez donc besoin de la commande docker suivante pour lancer votre base de données dans un conteneur nommé “mysql-wordpress” :
docker run -d -e MYSQL_DATABASE=db-wordpress -e MYSQL_USER=user-wordpress -e MYSQL_PASSWORD=myPassword01 -e MYSQL_ROOT_PASSWORD=myRootPassword01 --name mysql-wordpress mysql:5.7
Pour cela vous devez ajouter un premier service à votre nouvelle stack dans Rancher et remplir les champs correspondant tel qu’indiqué ci-dessous :
1. Cliquer sur le bouton “Add Servcie” (pas sur la flèche ∨ du menu déroulant)
2. Remplir le formulaire de création de service tel que mentionné ci-dessous, puis cliquer sur le bouton “Create”. Attention, il y a des problèmes de compatibilité avec mysql:8, je vous conseille de rester sur la version 5.7, plutôt que sur la version 8 ou latest pour le moment.
3. Votre service “mysql-worpdress” appariait dans votre stack “MonSiteVitrine”, il doit être en train de démarrer.
4. Pour obtenir plus de détails vous pouvez cliquer directement sur le nom du service “mysql-worpdress” afin d’arriver sur la page de statuts du service en question.
Félicitations, vous venez de créer votre premier service sous Rancher !
Démarrer WordPress
La commande ci-dessous quant à elle vous permettra de démarrer votre wordpress :
docker run -d -e WORDPRESS_DB_HOST=mysql-wordpress -e WORDPRESS_DB_NAME=db-wordpress -e WORDPRESS_DB_USER=user-wordpress -e WORDPRESS_DB_PASSWORD=myPassword01 --name mon-premier-wordpress wordpress:latest
Pour cela vous devez ajouter un deuxième service à votre stack dans Rancher et remplir les champs correspondant tel qu’indiqué ci-dessous :
1. Cliquer sur le bouton “Add Servcie” (pas sur la flèche ∨ du menu déroulant)
2. Remplir le formulaire de création de service tel que mentionné ci-dessous, puis cliquer sur le bouton “Create”
3. Vous avez désormais deux services “mon-premier-wordpress” et “mysql-worpdress” qui apparaissent dans votre stack “MonSiteVitrine”.
Accéder au wordpress depuis l’extérieur
Maintenant que vos deux services sont fonctionnels il va falloir exposer le service WordPress afin de pouvoir le “mettre en ligne”. Pour cela la meilleure approche est d’instancier un répartiteur de charge (load balancer en anglais). Pour cela vous allez utiliser un service spécifique de Rancher.
1. Cliquer sur la flèche “∨” afin d’afficher le menu déroulant puis cliquer sur le bouton “Add Load Balancer”.
2. Il faut ensuite remplir le formulaire en exposant le port 80 de notre conteneur vers le port 80 de la machine hôte où va fonctionner le load balancer.
3. Vous pouvez maintenant accéder au wordpress en cliquant sur le port “80/tcp” indiqué dans la description du service load balancer, à condition bien sûr que l’ip du de l’hôte Rancher sur lequel tourne le conteneur load balancer soit accessible depuis votre poste.
Et voilà ! Votre wordpress est disponible est accessible depuis l’extérieur le tout en quelques minutes.
Pour aller plus loin
Il ne vous reste plus qu’à ajouter de la persistance (via le système de conteneur en sidekick de Rancher) ou de créer un système en haute disponibilité pour tous vos services. Mais ça sera pour un prochain article.