LAB : Manage Docker Swarm Cluster with Portainer#
Présentation#
Objectifs:#
- Familiarisation avec Docker-swarm
- Déploiement d'un stack Docker Swarm
- Appropriation des concepts d'orchestration avec Swarm
Prérequis#
- Connaissance de Docker
- Familiarisation avec les concepts de base de Docker Compose
- Familiarisation avec les concepts de base de Docker Swarm
- 03 Instance EC2 avec docker installé sur chacune
-
Minimum de connaissance sur Linux
-
Avoir un Cluster Swarm fonctionnel
Déroulement du Lab#
Etape 1 : Modification du groupe de sécurité lcf-sg#
Pour pouvoir accéder directement au portail portainer , il faut que les ports suivants soient ouverts:
- Port 9000 et 9443 TCP: l’interface web est accessible sur toutes les adresses IP des node du cluster tant que le port 9000 ou 9443 est spécifié.
Il faut noter que dans ce lab, nous allons passer par le proxy pour accéder à l'interface de Portainer. Vous pouvez néanmoins ouvrir les ports pour vos besoins de tests.

Etape 2: Configuration DNS#
Pour une meileure utilisation du proxy, il faudra modifier notre configuration DNS locale afin de faire les redirections sur la base des FQDNs.
devops@lecloudfacile:~$ vim /etc/hosts
et copier le contenu ci-dessous:
<IP_PUBLIC_DU_NOEUD_MANAGER> jenkins-dev.lecloudfacile.io app.moodboard.xyz adminer.moodboard.xyz api.moodboard.xyz portainer.moodboard.xyz
Etape 3: Examen du fichiers de configurations portainer#
Les régles de redirection du proxy sont consignés dans des fichiers de conf qui sont chargés aux démarrage du conteneur nginx. Dans le répertoire lecloudfacile-devops-labs/stack-swarm/nginx-proxy/conf.d, il y'a des fichiers templates à utiliser par la suite selon le lab.
Exemple d'un fichier de configuation
server {
listen 80;
server_name portainer.moodboard.xyz;
location / {
proxy_pass http://portainer:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
copier le fichier de configration de portainer dans le repertoire lecloudfacile-devops-labs/stack-swarm/nginx-proxy/conf.d
devops@lecloudfacile:~$ cp conf.d/moodboard/portainer-moodboard.conf.template conf.d/portainer-moodboard.conf
Etape 4: Récupération & Examen du stack portainer#
Se placer sur le repertoire lecloudfacile-devops-labs/stack-swarm et executer la commande
curl -L https://downloads.portainer.io/ce2-16/portainer-agent-stack.yml -o portainer-agent-stack.yml
version: '3.2'
services:
agent:
image: portainer/agent:2.16.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
networks:
- agent_network
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
portainer:
image: portainer/portainer-ce:2.16.2
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9443:9443"
- "9000:9000"
- "8000:8000"
volumes:
- portainer_data:/data
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
Etape 5: Démarrage du stack portainer#
Executez la commande suivante en s'assurant d'être à l'emplacmenet suivante lecloudfacile-devops-labs/stack-swarm
devops@lecloudfacile:~$ docker stack deploy --compose-file portainer-agent-stack.yml portainer
Portainer crée un reseau specifique portainer_agent_network. Il faudra attacher le nginx à ce reseau.
devops@lecloudfacile:~$ docker service update --network-add portainer_agent_network proxy_nginx-reverse-proxy
Merci de vous assurer que les conteneurs sont bien démarrés.
devops@lecloudfacile:~$ docker service ls
Etape 6: [Si besoin] Recharge de la configuration du proxy#
Parfois, si le nginx ne repondont pas correctement et point toujours vers d'anciens fichiers de configurations, Il faudra recharger la configuration du proxy pour prendre en compte les modifications apportées.
devops@lecloudfacile:~$ docker service ls
devops@lecloudfacile:~$ docker service update --force proxy_nginx-reverse-proxy
Etape 7: Accès à l'application#
Ouvrez un navigateur et tapez l'adresse suivante : http://portainer.moodboard.xyz
Il faudra definir un mot de passer pour l'utilisateur admin pour terminer l'installation de portainer.

Une fois le mot de passe de l'admin défini, portainer nous connecte sur son home dans lequel on a une visuelle de notre cluster swarm. Cliquez sur primary

Une fois dans notre cluster swarm via portainer, on peut faire la gestion globale du cluster.
