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-master — http://35.205.83.158 dans mon cas.

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.

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

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.

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.

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.