Déployer Rancher 1.x en cinq minutes
Comme premier article technique j’ai décidé de vous expliquer comment déployer une serveur Rancher avec Docker en quelques minutes.
Rancher, kezako?
Rancher est un projet open-source qui permet de gérer et d’orchestrer des containers Docker à travers une interface graphique très simple. Ils ont mis au point leur orchestrateur de container maison nommé cattle qui peut être utilisé sur la version 1.x de rancher. La version 2.x de rancher utilise l’orchestrateur de container Kubernetes qui apporte beaucoup de modification, je n’en parlerais donc pas dans cet article.
Préparation des instances
Pour ce test, je vais utiliser un serveur maître et deux serveur esclave. Le serveur maître aura la charge d’héberger l’interface utilisateur de Rancher et les esclaves quand à eux permettront de fournir des ressources de compute et de stockage pour faire tourner les conteneurs Docker.
J’ai utilisé le cloud de google cloud google compute avec 3 serveurs de type n1-standard-2 sous Ubuntu 16.04LTS basé en europe.
Si vous avez déjà configuré votre interface de commande gcloud, vous pouvez adaptez 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.io
Maintenant que nos serveurs sont up, 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 qui est intégrée dans le container rancher/server. Pour cela, il vous faudra rajouter un volume en ajoutant le paramètre suivant :
-v /mnt:/var/lib/mysql
et ainsi avoir la commande
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 dock rancher vers le port 80 de votre host! Vous pourrez donc accéder à l’interface graphique de rancher de façon non sécurisé en vous connectant à l’ip public de votre instance rancher-master, http://35.205.83.158 dans mon cas.
Ajouter les deux serveurs restant.
Maintenant que l’on a un serveur Rancher prêt à être utiliser, il va falloir ajouter nos deux serveurs slave.
Pour cela il faut cliquer 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é. C’est pourquoi dans mon exemple, vous trouverez l’ip privée de ma machine rancher-master : 10.142.0.2.
Vous pouvez maintenant ajouter des noeuds de type custom (je ne m’attarderais pas sur les autre type d’hosts dans cette article). Pour cela il vous suffi de copier/coller le contenu de l’étape 5 sur vos deux instance 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.
Prochaine étape il ne vous reste plus qu’a créer un service, mais ça sera pour un autre article.