Déployer une image docker sur Rancher avec Gitlab CI

Ces derniers temps, nous travaillons souvent avec des images Docker que nous construisons à travers notre pipe d’intégration continue. Gitlab CI est un outil accessible et simple d’utilisation et nous allons voir comment l’utiliser pour déployer des images docker sur Rancher.

Pour commencer, il faut mettre en place un fichier docker-compose.yml qui décrit le/les services que nous voulons déployer.  Cela peut par exemple contenir une application web, une base de données et tout autre service que dont nous pourrons avoir besoin (stockage, messagerie, cache, proxy, etc…)

Sur l’exemple ci-dessous, nous allons avoir 3 services :

  1. notre application web
  2. un service de base de données (postgres)
  3. une instance de stockage pour la base de données

Nous pouvons aussi noter que nous exposons l’application sur le port 4034 et la base de données sur le port 5436.

Maintenant que nous avons ce fichier dans notre projet, nous pouvons ajouter une étape de déploiement dans le fichier .gitlab-ci.yml.  Pour cela, nous allons utiliser l’image tagip/rancher-cli qui contient Rancher CLI, l’application de ligne de commande pour Rancher.

La première commande dans script  permet de s’assurer qu’un stack de l’application existe sur rancher ou de créer celle-ci sinon. La seconde commande télécharge (l’option --pull ) l’image associée au service app  et confirme la mise à jour ( --confirm-upgrade ).

Enfin, pour que les lignes de commande de Rancher CLI fonctionnent, il faut qu’ils puissent se connecter à Rancher. Il faut donc donner l’URL de l’instance Rancher ainsi que les paramètres de connections. Il faut donc générer une clé d’accès pour l’API dans Rancher dans Rancher > API > Keys

Une fois que cela est fait, il faut ajouter ces informations dans Gitlab pour que celui-ci les passe à la pipe d’intégration continue en tant que variables d’environnements. Il faut se rendre dans les paramètres du projet Gitlab et ajouter les variables suivantes dans Settings > Pipelines > Secret variables 

  1. RANCHER_ACCESS_KEY: la clé d’accès générée précédemment
  2. RANCHER_SECRET_KEY: la clé secrète associée à la clé ci-dessus
  3. RANCHER_URL: l’URL de l’instance Rancher

Et voila, à chaque fois que la pipe d’intégration continue s’execute, le stack sur Rancher se met à jour.

Email this to someoneTweet about this on TwitterShare on Facebook16Share on Google+0Share on LinkedIn0Share on Reddit0