Rancher - How to
Tags: rancher, devops, tutorial
Published: 2020-04-08 10:18:49

---
title: Rancher - How to
published: true
date: 2016-06-13 00:00:00 UTC
tags: rancher, devops, tutorial
canonical_url: https://slashgear.github.io/fr/rancher/
---

Mon expérience en tant que stagiaire chez Zenika m’a amené à utiliserRancher pour orchestrer mes conteneurs Docker. Je vous présente ici uncondensé de mon expérience avec cet outil, de son intérêt et de sespoints forts, par le biais d’un petit “How to“ sur comment déployer sonapplication ?

On constate que de plus en plus d’utilisateurs Docker cherchent àmanipuler plus facilement leurs conteneurs et à mettre en place dudéploiement continu. L’environnement technique autour de laproblématique d’orchestration des modèles CaaS (Container as a Service)est très large et il est parfois difficile de s’y retrouver.

## [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#quen-est-t-il-de-rancher-)Qu’en est-t-il de Rancher ?

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#k%C3%A9sako)Késako

Rancher, projet open-source créé par la société Rancher Labs est unoutil gratuit d’orchestration de conteneurs Docker. Il permet defacilement déployer des conteneurs Docker sur des machines possédantDocker. Grâce à une configuration simple et complète, il permet de lierses conteneurs afin de composer des architectures de services aisément.Il peut déployer des containeurs sur des services cloud comme AWS,Azure, DigitalOcean mais aussi sur des machines personnaliséespossédant Docker tout en s’appuyant sur docker-machine.

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#une-installation-assez-simple)Une installation assez simple

Pour installer Rancher, à ce jour il suffit de posséder une machinelinux 64-bit avec au moins 1GB de mémoire vive.

```
$ sudo docker run -d --restart=always -p 8080:8080 rancher/server
```

Après quelques minutes d’installation, le server Rancher est disponiblesur le port 8080 de votre machine (l’image contient une base MySQL, unZookeeper, Redis, et le serveur rancher). Vous pouvez vous y connectercar l’accès est par défaut ouvert à tous. Par la suite, vous pourrezactiver l’authentification,et ainsi facilement configurer des comptespour vos utilisateurs.

[<picture>
        <source srcset="/static/7044fcf8b2240abbf24b959028a4f610/cbe2e/environnement.webp 148w,
/static/7044fcf8b2240abbf24b959028a4f610/3084c/environnement.webp 295w,
/static/7044fcf8b2240abbf24b959028a4f610/5ca24/environnement.webp 590w,
/static/7044fcf8b2240abbf24b959028a4f610/dad35/environnement.webp 885w,
/static/7044fcf8b2240abbf24b959028a4f610/2baf0/environnement.webp 1180w,
/static/7044fcf8b2240abbf24b959028a4f610/87c73/environnement.webp 1353w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/7044fcf8b2240abbf24b959028a4f610/12f09/environnement.png 148w,
/static/7044fcf8b2240abbf24b959028a4f610/e4a3f/environnement.png 295w,
/static/7044fcf8b2240abbf24b959028a4f610/fcda8/environnement.png 590w,
/static/7044fcf8b2240abbf24b959028a4f610/efc66/environnement.png 885w,
/static/7044fcf8b2240abbf24b959028a4f610/c83ae/environnement.png 1180w,
/static/7044fcf8b2240abbf24b959028a4f610/77f8f/environnement.png 1353w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/7044fcf8b2240abbf24b959028a4f610/fcda8/environnement.png" alt="Interface graphique de Rancher" title="Interface graphique de Rancher" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/7044fcf8b2240abbf24b959028a4f610/77f8f/environnement.png)

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#d%C3%A9ployer-une-application-simple-avec-rancher)Déployer une application simple avec Rancher

Après l’IaaS, le SaaS, le PaaS, le DaaS et Patricia Kaas, voilamaintenant venue l’ère du Caas (Container as a Service). L’objectifici est de conteneuriser les services de son(ses) application(s) et deles faire interagir. Pour montrer simplement la mécanique de Rancher,j’ai choisi de vous présenter le déploiement d’une application web trèssimple nommée whoami, disponible sur le Docker Hub (développé en Gopar Emile Vauge).

Pour ce faire, je vais vous expliquer la méthode de création deservices par l’interface graphique. Sachez que l’on peut interagiravec Rancher par l’intermédiaire d’un outil en ligne de commande(rancher-cli,encore très limité pour l’instant) ou d’API REST.

#### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#ajouter-des-hosts-sur-lesquels-d%C3%A9ployer)Ajouter des hosts sur lesquels déployer

Dans un premier temps il faut définir des machines sur lesquellesdéployer votre application.

[<picture>
        <source srcset="/static/09dee4224d527f5831843599f577d8b3/cbe2e/machine.webp 148w,
/static/09dee4224d527f5831843599f577d8b3/3084c/machine.webp 295w,
/static/09dee4224d527f5831843599f577d8b3/5ca24/machine.webp 590w,
/static/09dee4224d527f5831843599f577d8b3/dad35/machine.webp 885w,
/static/09dee4224d527f5831843599f577d8b3/2baf0/machine.webp 1180w,
/static/09dee4224d527f5831843599f577d8b3/36414/machine.webp 1908w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/09dee4224d527f5831843599f577d8b3/12f09/machine.png 148w,
/static/09dee4224d527f5831843599f577d8b3/e4a3f/machine.png 295w,
/static/09dee4224d527f5831843599f577d8b3/fcda8/machine.png 590w,
/static/09dee4224d527f5831843599f577d8b3/efc66/machine.png 885w,
/static/09dee4224d527f5831843599f577d8b3/c83ae/machine.png 1180w,
/static/09dee4224d527f5831843599f577d8b3/7970d/machine.png 1908w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/09dee4224d527f5831843599f577d8b3/fcda8/machine.png" alt="Création de machines" title="Création de machines" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/09dee4224d527f5831843599f577d8b3/7970d/machine.png)

Rancher propose des connecteurs à plusieurs services cloud du web commeAmazon EC2, Azure, Digital Ocean, mais vous pouvez également ajoutern’importe quelle machine disposant de docker comme “host” Rancher(“Custom”).

Pour l’exemple, j’ai ajouté deux machines au cluster nommées node1 etnode2, et j’ai ajouté l’hôte Rancher lui-même self(c’est possible mais non recommandé).

[<picture>
        <source srcset="/static/bcd00c6977b0abb9aa112407e39372d8/cbe2e/host.webp 148w,
/static/bcd00c6977b0abb9aa112407e39372d8/3084c/host.webp 295w,
/static/bcd00c6977b0abb9aa112407e39372d8/5ca24/host.webp 590w,
/static/bcd00c6977b0abb9aa112407e39372d8/dad35/host.webp 885w,
/static/bcd00c6977b0abb9aa112407e39372d8/30833/host.webp 946w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/bcd00c6977b0abb9aa112407e39372d8/12f09/host.png 148w,
/static/bcd00c6977b0abb9aa112407e39372d8/e4a3f/host.png 295w,
/static/bcd00c6977b0abb9aa112407e39372d8/fcda8/host.png 590w,
/static/bcd00c6977b0abb9aa112407e39372d8/efc66/host.png 885w,
/static/bcd00c6977b0abb9aa112407e39372d8/36c33/host.png 946w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/bcd00c6977b0abb9aa112407e39372d8/fcda8/host.png" alt="Hosts" title="Hosts" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/bcd00c6977b0abb9aa112407e39372d8/36c33/host.png)

#### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#cr%C3%A9er-son-service)Créer son service

Il faut maintenant créer une stack pour accueillir notre service whoami.Dans la logique Rancher, une stack est un ensemble de services.

[<picture>
        <source srcset="/static/c862fa4069b40c90035b4b3a02c9addd/cbe2e/stack.webp 148w,
/static/c862fa4069b40c90035b4b3a02c9addd/3084c/stack.webp 295w,
/static/c862fa4069b40c90035b4b3a02c9addd/5ca24/stack.webp 590w,
/static/c862fa4069b40c90035b4b3a02c9addd/dad35/stack.webp 885w,
/static/c862fa4069b40c90035b4b3a02c9addd/2baf0/stack.webp 1180w,
/static/c862fa4069b40c90035b4b3a02c9addd/93f82/stack.webp 1923w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/c862fa4069b40c90035b4b3a02c9addd/12f09/stack.png 148w,
/static/c862fa4069b40c90035b4b3a02c9addd/e4a3f/stack.png 295w,
/static/c862fa4069b40c90035b4b3a02c9addd/fcda8/stack.png 590w,
/static/c862fa4069b40c90035b4b3a02c9addd/efc66/stack.png 885w,
/static/c862fa4069b40c90035b4b3a02c9addd/c83ae/stack.png 1180w,
/static/c862fa4069b40c90035b4b3a02c9addd/9e0ed/stack.png 1923w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/c862fa4069b40c90035b4b3a02c9addd/fcda8/stack.png" alt="Stack" title="Stack" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/c862fa4069b40c90035b4b3a02c9addd/9e0ed/stack.png)

On peut remarquer que pour l’ajout d’une stack, on peut importer unfichier `docker-compose.yml` et un fichier `rancher-compose.yml`.

Le fichier docker-compose.yml définit la structure de la stack,l’ensemble de ses services ainsi que leurs configurations.Ce fichier est natif de l’api Docker Compose.`

Le fichier rancher-compose est un “add-on” au docker compose,il permet de configurer des paramètres Rancher comme la configurationdes loadbalancer (HA-Proxy) et la scalabilité horizontale des services.Ces deux fichiers sont exportables à tout moment, cela peut-être trèspratique pour une réinstallation (par exemple, voici la[configuration de la stack](https://drive.google.com/file/d/0B0NhGeba-vjZVnJldGRYUTBZaGs/view)qui est installée dans cette partie).

Une fois la stack créée en lui donnant uniquement un nom, il fautajouter notre service whoami. Pour cela il suffit de cliquer sur“Add service” et de le définir comme cela.

[<picture>
        <source srcset="/static/48d761834dc232cc35b22955f7da9c22/cbe2e/whoami.webp 148w,
/static/48d761834dc232cc35b22955f7da9c22/3084c/whoami.webp 295w,
/static/48d761834dc232cc35b22955f7da9c22/5ca24/whoami.webp 590w,
/static/48d761834dc232cc35b22955f7da9c22/dad35/whoami.webp 885w,
/static/48d761834dc232cc35b22955f7da9c22/2baf0/whoami.webp 1180w,
/static/48d761834dc232cc35b22955f7da9c22/854a9/whoami.webp 1907w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/48d761834dc232cc35b22955f7da9c22/12f09/whoami.png 148w,
/static/48d761834dc232cc35b22955f7da9c22/e4a3f/whoami.png 295w,
/static/48d761834dc232cc35b22955f7da9c22/fcda8/whoami.png 590w,
/static/48d761834dc232cc35b22955f7da9c22/efc66/whoami.png 885w,
/static/48d761834dc232cc35b22955f7da9c22/c83ae/whoami.png 1180w,
/static/48d761834dc232cc35b22955f7da9c22/26c3a/whoami.png 1907w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/48d761834dc232cc35b22955f7da9c22/fcda8/whoami.png" alt="Whoami example" title="Whoami example" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/48d761834dc232cc35b22955f7da9c22/26c3a/whoami.png)

On remarque que seul le nom du service, l’image docker et le “port map”ont été définis (ie: c’est un exemple simple, vous pouvez voir par lesonglets du bas que la configuration peut être beaucoup plus poussée,gestion des volumes, du network du service, des HealthCheck).

Après cette simple configuration, il suffira de cliquer sur “Create” etinformagiquement votre service sera déployé sur un host choisi par Cattle.

Vous allez me dire, “qu’est ce que Cattle ?”, et vous aurez raison.Cattle est l’orchestrateur par défaut utilisé par Rancher. Il estmaintenu par l’équipe de Rancher et le projet est open-source etdisponible sur Github.

Sachez que Rancher fonctionne également avec Kubernetes, Swarm etMesos mais pour cet article, je me suis limité à l’utilisation de Cattle.

#### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#scaler-et-loadbalancer)Scaler et Loadbalancer

Après quelques temps de démarrage, votre service whoami devrait êtredisponible.

[<picture>
        <source srcset="/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/cbe2e/start.webp 148w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/3084c/start.webp 295w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/5ca24/start.webp 590w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/dad35/start.webp 885w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/2baf0/start.webp 1180w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/1177a/start.webp 1372w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/12f09/start.png 148w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/e4a3f/start.png 295w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/fcda8/start.png 590w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/efc66/start.png 885w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/c83ae/start.png 1180w,
/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/b79a5/start.png 1372w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/fcda8/start.png" alt="Start" title="Start" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/e8e9c7193ddbbf5ec9e4e6d47167aa26/b79a5/start.png)

Si vous cliquez sur le “80”, vous devez accéder au service whoami.Il vous donnera plusieurs informations sur lui-même, notamment son nom.

Le but maintenant est de scaler notre service, afin de le distribuersur plusieurs machines.

Dans le détail du service, on peut voir que la scale est actuellementdéfinie à 1. Il suffirait donc de l’augmenter ? Et bien non, le serviceque nous venons de définir occupe le port 80 de la machine. Il nepourrait donc pas être disponible plus d’une fois par machine. Et c’estlà l’une des problématiques des microservices : l’allocation dynamiquede port et la “connaissance” des services par le loadbalancer. Rancheroffre une solution simple à ce problème, il ne faut plus réserver deport pour son application, le loadbalancer va connaître les servicespar l’orchestrateur.

Il faut donc supprimer la configuration du port statique du service.

Une fois le port libéré , il faut donc créer un loadbalancer quidistribue la charge entre les instances de whoami. Dans la stack,cliquez sur “Add Load Balancer”

[<picture>
        <source srcset="/static/36278add82f22f1e306be60a799b6681/cbe2e/loadb.webp 148w,
/static/36278add82f22f1e306be60a799b6681/3084c/loadb.webp 295w,
/static/36278add82f22f1e306be60a799b6681/5ca24/loadb.webp 590w,
/static/36278add82f22f1e306be60a799b6681/dad35/loadb.webp 885w,
/static/36278add82f22f1e306be60a799b6681/2baf0/loadb.webp 1180w,
/static/36278add82f22f1e306be60a799b6681/2100e/loadb.webp 1905w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/36278add82f22f1e306be60a799b6681/12f09/loadb.png 148w,
/static/36278add82f22f1e306be60a799b6681/e4a3f/loadb.png 295w,
/static/36278add82f22f1e306be60a799b6681/fcda8/loadb.png 590w,
/static/36278add82f22f1e306be60a799b6681/efc66/loadb.png 885w,
/static/36278add82f22f1e306be60a799b6681/c83ae/loadb.png 1180w,
/static/36278add82f22f1e306be60a799b6681/f33fc/loadb.png 1905w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/36278add82f22f1e306be60a799b6681/fcda8/loadb.png" alt="Load balancer" title="Load balancer" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/36278add82f22f1e306be60a799b6681/f33fc/loadb.png)

Une fois le loadbalancer créé, on peut donc augmenter la scale de sonapplication sans avoir de problème d’allocation de port. Si vous cliquezle “80” du loadbalancer, vous devez atteindre votre service, et s’ilest scalé, l’hostname devrait changer au refresh.

A ce stade du déploiement, on peut se demander, ce qu’il en est del’infrastructure des machines créées plus tôt.

[<picture>
        <source srcset="/static/5ac8774826df26dbe266ef830d1b3ff8/cbe2e/host2.webp 148w,
/static/5ac8774826df26dbe266ef830d1b3ff8/3084c/host2.webp 295w,
/static/5ac8774826df26dbe266ef830d1b3ff8/5ca24/host2.webp 590w,
/static/5ac8774826df26dbe266ef830d1b3ff8/05152/host2.webp 836w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/5ac8774826df26dbe266ef830d1b3ff8/12f09/host2.png 148w,
/static/5ac8774826df26dbe266ef830d1b3ff8/e4a3f/host2.png 295w,
/static/5ac8774826df26dbe266ef830d1b3ff8/fcda8/host2.png 590w,
/static/5ac8774826df26dbe266ef830d1b3ff8/27b8e/host2.png 836w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/5ac8774826df26dbe266ef830d1b3ff8/fcda8/host2.png" alt="Hosts" title="Hosts" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/5ac8774826df26dbe266ef830d1b3ff8/27b8e/host2.png)

Rancher a déployé les conteneurs docker de façon équilibrée entre lesdifférentes machines. On peut définir nos propres règles de déploiementpar l’utilisation de label sur les machines.

Par exemple, on peut ajouter le label “name = frontend”, et pour chaqueservice que l’on crée, définir si il peut démarrer ou non sur la machinedont le name est frontend.

Sur chacun des conteneurs, rancher nous permet d’accéder à un shell etune vue des logs, ce qui est très pratique pour le débug.

Certes cet exemple était simple, mais on peut facilement déployer desarchitectures plus complexes grâce à Rancher, et c’est là tout sonintérêt. Voici l’architecture des services de l’un des projets que j’aidéployé grâce à lui.

[<picture>
        <source srcset="/static/39e646d632a82cd4ad26d901963a1c11/cbe2e/microservices.webp 148w,
/static/39e646d632a82cd4ad26d901963a1c11/3084c/microservices.webp 295w,
/static/39e646d632a82cd4ad26d901963a1c11/01940/microservices.webp 548w" sizes="(max-width: 548px) 100vw, 548px" type="image/webp"></source>
        <source srcset="/static/39e646d632a82cd4ad26d901963a1c11/12f09/microservices.png 148w,
/static/39e646d632a82cd4ad26d901963a1c11/e4a3f/microservices.png 295w,
/static/39e646d632a82cd4ad26d901963a1c11/a58fe/microservices.png 548w" sizes="(max-width: 548px) 100vw, 548px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/39e646d632a82cd4ad26d901963a1c11/a58fe/microservices.png" alt="Hosts" title="Hosts" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/39e646d632a82cd4ad26d901963a1c11/a58fe/microservices.png)

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#un-%C2%AB-bluegreen-deployement-%C2%BB--et-une-rolling-upgrade-en-5-minutes)Un « blue/green deployement » et une “rolling upgrade” en 5 minutes

Dans la plupart des cas, une mise en production est souvent unpassage difficile pour le développeur. Les outils DevOps ont bienévidemment permis de simplifier cette étape cruciale de la vie d’unprojet.

Rancher permet d’utiliser plusieurs méthodes pour mettre à jour unservice déjà en production tout en garantissant la continuité desservices :

#### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#la-rolling-upgrade-remplacement-dun-service-par-un-autre)La rolling upgrade (remplacement d’un service par un autre)

![Hosts](https://slashgear.github.io/b30a1750f67a83ef7c8cab4ccdd1b326/indiana.gif)

#### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#le-bluegreen-deployement)Le blue/green deployement

Ces deux méthodes ont été présentées par Christophe Furmaniak etYoucef Yekhlef (deux consultants architectes de Zenika) lors de leurintervention à de pendant la Devoxx 2016. Je ne peux que vousconseiller de la regarder :

 
 <iframe src="https://www.youtube.com/embed/QFqt8xMTChY?ecver=2" frameborder="0" style="position:absolute;width:100%;height:100%;left:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; " allowfullscreen></iframe> 
 

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#un-service-dns-et-network-overlay)Un service DNS et Network overlay

Pour ceux qui ont déjà bien pratiqué Docker, faire communiquer deuxcontaineurs entre eux sans avoir d’outil d’orchestration n’est pas trèsaisé. Bien sûr, il y a la publication de port sur le Host, mais onarrive vite aux limites. Rancher apporte nativement une fonctionnalitéd’overlay network via un tunnel ipsec permettant à deux containers surdeux machines différentes d’être sur le même réseau virtuel. Rancher vaplus loin puisqu’il possède son service DNS dans lequel il enregistrechaque nouveau container qu’il crée. Cela a plusieurs avantages:

- Deux services d’une même Stack se connaissent par leur nom ;
- Un service peut connaître un service d’une autre stack par `nomService.nomStack`.

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#un-catalogue-qui-senrichit)Un catalogue qui s’enrichit

[<picture>
        <source srcset="/static/ccd638ac43343c2b2dfbacfbdd0cd99f/cbe2e/catalogue.webp 148w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/3084c/catalogue.webp 295w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/5ca24/catalogue.webp 590w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/dad35/catalogue.webp 885w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/2baf0/catalogue.webp 1180w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/367e1/catalogue.webp 1903w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/ccd638ac43343c2b2dfbacfbdd0cd99f/12f09/catalogue.png 148w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/e4a3f/catalogue.png 295w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/fcda8/catalogue.png 590w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/efc66/catalogue.png 885w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/c83ae/catalogue.png 1180w,
/static/ccd638ac43343c2b2dfbacfbdd0cd99f/cb9f4/catalogue.png 1903w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/ccd638ac43343c2b2dfbacfbdd0cd99f/fcda8/catalogue.png" alt="Rancher catalogue" title="Rancher catalogue" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/ccd638ac43343c2b2dfbacfbdd0cd99f/cb9f4/catalogue.png)

Rancher possède son propre catalogue d’applications, ces applicationssont sous la forme de groupes de stacks pré-configurées qui s’appuientsur les images du Docker Hub :

- La stack Elastic ;
- Janitor, un service basé sur docker-cleanup, pour nettoyer les images et conteneurs non-utilisés. ;
- Traefik, un load balancer développé en Go par Emile Vauge de la Zstartup Containous ;
- Gluster, un gestionnaire de volume partagé ;
- Odoo, le célèbre ERP open source ;
- etc.

Il est aussi possible d’ajouter son propre[catalogue de stacks d’entreprise](http://docs.rancher.com/rancher/v1.5/en/catalog/)

Je vous ai présenté ici les principales features de Rancher,je ne peux que vous conseiller de le tester pour faire joujou avec vosconteneurs Docker. Cependant, la question qu’on peut encore se poseraujourd’hui reste la suivante : Rancher ne restera-t-il qu’un joujoupour orchestrer des services ? On sait déjà que des entreprises commeOrange et Sony commencent à l’utiliser pour des besoins interne(cf : Sony et le playstation Network [https://www.youtube.com/watch?v=hwhxXwT6zlw](https://www.youtube.com/watch?v=hwhxXwT6zlw))

N’hésitez surtout pas à partager vos expériences avec Rancher.

Merci encore à Youcef Yekhlef, Christophe Furmaniak et à mon tuteur destage Christophe Tardella pour l’aide apportée à la rédaction de cet article.