Skip to content

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.