16 mai 2018

Déployer Rancher 1.x en cinq minutes

Tutoriel pas-à-pas pour déployer un serveur Rancher 1.x avec Docker sur Google Cloud en quelques minutes.

Comme premier article technique, je vais vous expliquer comment déployer un serveur Rancher avec Docker en quelques minutes.

Rancher, kezako ?

Rancher est un projet open source qui permet de gérer et d’orchestrer des conteneurs Docker à travers une interface graphique très simple. Rancher a développé son propre orchestrateur de conteneurs nommé Cattle, utilisé sur la version 1.x. La version 2.x utilise l’orchestrateur Kubernetes, qui apporte de nombreux changements — je n’en parlerai donc pas dans cet article.

Préparation des instances

Pour ce test, je vais utiliser un serveur maître et deux serveurs esclaves. Le serveur maître hébergera l’interface utilisateur de Rancher, tandis que les esclaves fourniront des ressources de calcul et de stockage pour faire tourner les conteneurs Docker.

J’ai utilisé Google Cloud Compute avec 3 serveurs de type n1-standard-2 sous Ubuntu 16.04 LTS, basés en Europe.

Si vous avez déjà configuré votre interface de commande gcloud, vous pouvez adapter la commande ci-dessous pour lancer vos trois instances :

gcloud compute instances create rancher-master rancher-slave-1 rancher-slave-2 --zone=europe-west1-b --machine-type=n1-standard-1 --subnet=default --tags=http-server,https-server --image=ubuntu-1804-bionic-v20190514 --image-project=ubuntu-os-cloud --boot-disk-size=20GB --boot-disk-type=pd-standard

Résultat :

Created [https://www.googleapis.com/compute/v1/projects/rancher-test-204217/zones/europe-west1-b/instances/rancher-master].
Created [https://www.googleapis.com/compute/v1/projects/rancher-test-204217/zones/europe-west1-b/instances/rancher-slave-1].
Created [https://www.googleapis.com/compute/v1/projects/rancher-test-204217/zones/europe-west1-b/instances/rancher-slave-2].
NAME             ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
rancher-master   europe-west1-b  n1-standard-1               10.132.0.4   35.205.83.158   RUNNING
rancher-slave-1  europe-west1-b  n1-standard-1               10.132.0.3   104.199.60.102  RUNNING
rancher-slave-2  europe-west1-b  n1-standard-1               10.132.0.2   35.205.28.135   RUNNING

Installer Docker

Maintenant que nos serveurs sont prêts, on installe Docker.

Installation de Docker (à faire sur les 3 serveurs) :

~# gcloud compute ssh rancher-master
ivan@rancher-master:~# sudo apt update && sudo apt install -y docker.io
~# gcloud compute ssh rancher-slave-1
ivan@rancher-slave-1:~# sudo apt update && sudo apt install -y docker.io
~# gcloud compute ssh rancher-slave-2
ivan@rancher-slave-2:~# sudo apt update && sudo apt install -y docker.io

Déployer Rancher 1.x avec Docker

Rien de plus simple qu’une commande Docker pour lancer un serveur Rancher :

Si votre version de Docker est 18.09+, il vous faudra lancer la version 1.6.26 de Rancher.

docker run -d --restart unless-stopped -p 80:8080 rancher/server:v1.6.26

Vous pouvez également exporter, sur un répertoire de votre instance, la base de données MySQL intégrée au conteneur rancher/server. Pour cela, ajoutez un volume avec le paramètre suivant :

-v /mnt:/var/lib/mysql

Ce qui donne la commande complète :

docker run -d --restart unless-stopped -v /mnt:/var/lib/mysql -p 80:8080 rancher/server:v1.6.26

Vous venez également d’exposer le port 8080 de votre conteneur Rancher vers le port 80 de votre hôte ! Vous pouvez donc accéder à l’interface graphique de Rancher (en HTTP non sécurisé) via l’IP publique de votre instance rancher-masterhttp://35.205.83.158 dans mon cas.

Page d'accueil de Rancher

Ajouter les deux serveurs restants

Maintenant que l’on dispose d’un serveur Rancher prêt à l’emploi, il faut ajouter nos deux serveurs esclaves.

Infrastructure Rancher vide

Pour cela, cliquez sur le menu « Infrastructure », puis sur le bouton « Add Host ».

Ajout d'un host dans Rancher

Lors du premier ajout, il vous sera demandé de valider l’URL d’enregistrement des nodes. Pour des raisons de sécurité, il vaut mieux utiliser l’IP du réseau privé. Dans mon exemple, il s’agit de l’IP privée de ma machine rancher-master : 10.142.0.2.

Commande d'enregistrement d'un host Rancher

Vous pouvez maintenant ajouter des nœuds de type « custom » (je ne m’attarderai pas sur les autres types d’hosts dans cet article). Pour cela, il suffit de copier/coller la commande sur vos deux instances rancher-slave :

~# gcloud compute ssh rancher-slave-1
ivan@rancher-slave-1:~# sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://10.142.0.2/v1/scripts/B8BA2E8772A758EFC6AE8ABE:1514678400000:cQFHQfuVaIMXqxCMgxDipb10m8
~# gcloud compute ssh rancher-slave-2
ivan@rancher-slave-2:~# sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://10.142.0.2/v1/scripts/B8BA2E8772A758EFC6AE8ABE:1514678400000:cQFHQfuVaIMXqxCMgxDipb10m8

Vous devriez alors voir vos deux nœuds apparaître dans l’interface de Rancher.

Hosts ajoutés dans Rancher

Pour aller plus loin

Il ne vous reste plus qu’à ajouter de la persistance (via le système de conteneurs en sidekick de Rancher) ou créer un système en haute disponibilité pour tous vos services. Mais ce sera pour un prochain article.