Docker

Installer un cluster Docker Swarm avec Portainer

Quant on parle d’orchestration de conteneurs, la solution qui revient c’est Kubernetes ou K8S pour les intimes. J’ai essayé d’appréhender plus d’une fois cette technologie et ce que j’en retiens pour le moment : compliquer. Il y a un gros processus d’apprentissage de la techno !

En attendant que je me penche sérieusement sur cette techno, je vous propose une alternative native au docker engine, Docker Swarm ! Swarm est un mode du docker engine, beaucoup plus simple à mettre en place, surtout si comme moi vous êtes habitué à la technologie docker.

Dans cet article on va voir comment mettre en œuvre un cluster Swarm, comment le manager via une interface web que vous connaissez déjà : portainer.

Prérequis

  • 3 Machines avec une adresse IP fixe sur le même réseau
  • Connaissance de docker, docker-compose

Installer Docker

Pour l’installation de Docker, selon la distribution Linux utiliser, suivez la documentation docker. Mes machines tournent toutes sous Debian. L’installation de docker doit se faire sur toutes les machines qui intégreront le cluster Swarm.

Je met à jour ma machine, puis j’installe les paquets requis

apt update && apt-fullupgrade -y
apt-get install ca-certificates curl gnupg lsb-release -y

J’ajoute le dépôt docker à la machine

mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Puis je met à jour mes dépôts et j’installe docker

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Initialiser un cluster Swarm

Un cluster est un regroupement de node. Un node est une machine étant membre d’un cluster. Il existe deux types de node : Le Manager est celui qui organise le cluster, c’est sur lui que doit être exécute la plupart des commandes d’administration du cluster swarm. Le second est le Worker, c’est une ouvrier au ordre du manager, il exécute des conteneurs docker.

Sur un de vos nodes, initialiser le cluster, ce node sera automatiquement promu manager du cluster. l’option –advertise-addr permet de spécifier l’interface réseau utiliser. C’est utile dans le cas où votre machine en possède plus d’une.

docker swarm init --advertise-addr 192.168.99.100

La commande vous retourne une seconde commande qui nous servira pour ajouter des node à notre cluster.

Exécuter la commande sur les deux autres nodes afin qu’il rejoigne le cluster.

Déployer Portainer

Afin de déployer portainer sur votre cluster, connectez- vous sur votre node manager.

Télécharger la stack portainer :

curl -L https://downloads.portainer.io/ce2-16/portainer-agent-stack.yml -o portainer-agent-stack.yml

Avant de déployer la stack je vous invite à regarder son contenu, dans la vidéo j’aborde plus en détail les spécificités d’une « stack swarm ».

Retenez tout de même ces quelques informations :

  • La version du fichier compose doit être au minimum en version 3
  • Par défaut un service compose est automatiquement déployé avec 1 replica
  • un réplica est une instance d’un service (conteneur)

Pour déployer la stack portainer, utiliser la commande docker stack (équivalent à docker-compose):

docker stack deploy -c portainer-agent-stack.yml portainer

Enfin il ne vous reste qu’à vous connecter sur l’interface portainer et initialiser ce dernier. à noter que swarm utilise du routing mesh. En d’autre terme, l’interface web est accessible sur toutes les adresses IP des node du cluster tant que le port 9000 ou 9443 est spécifié.

Jérémy Taunay

🪪 Be smarter everyday | 🏮 Less is more | 🐧Tech systèmes et réseaux | 🖥️ Homelaber