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 🐧 IT Guy 👟 Runner

One Comment

  1. Bonjour à tous. Merci pour cet article qui fournit une introduction précieuse à Docker Swarm, une alternative plus simple à kubernetes pour l’orchestration de conteneurs. Pour ceux qui se sentent dépassés par la complexité de kubernetes, Docker Swarm se présente comme une solution plus accessible, tout en offrant une approche pour la gestion des clusters de conteneurs. Le texte commence par reconnaître les défis associés à kubernetes, qui peuvent représenter une courbe d’apprentissage intimidante pour les développeurs et les équipes devops univirtual. Docker Swarm est alors proposé comme une solution plus intuitive, spécialement pour ceux déjà familiarisés avec docker. Cette alternative facilite la mise en place et la gestion des environnements de conteneurs sans la surcharge de complexité souvent associée à kubernetes. L’article guide les lecteurs à travers le processus de préparation et d’installation de docker univirtual sur des machines Debian, étape important pour établir un cluster Swarm. Les instructions sont claires et détaillées, ce qui est essentiel pour les équipes devops cherchant à intégrer docker dans leur pipeline de développement et de déploiement. En expliquant comment initialiser un cluster et ajouter des nœuds, l’article permet aux utilisateurs de comprendre la structure de leur environnement et de gérer les conteneurs de manière plus efficace.

Leave a Reply

Your email address will not be published. Required fields are marked *