Docker - TP 4 : Docker Swarm

Thomas S.

2018-2019

Docker - TP 4 : Docker Swarm

Sommaire

  • Une ruche connectée
  • TP final

Docker - TP 4 : Docker Swarm

Features

Docker - TP 4 : Docker Swarm

Créer nœud maitre

docker swarm init --advertise-addr IP_VISIBLE

L'éxécution donne la commande pour rejoindre le nœud,
Voir les nœuds :

docker node ls

Docker - TP 4 : Docker Swarm

Rejoindre nœud maitre

Obtenir les tokens pour rejoindre

docker swarm join-token worker

docker swarm join-token manager

Docker - TP 4 : Docker Swarm

Supprimer nœud esclave

docker node rm WORKER_NAME

Docker - TP 4 : Docker Swarm

Ajouter des services

Sur le maitre :

docker service create --replicas NB_REPLICAS -p 80:80 --name INSTANCE_NAME IMAGE

Docker - TP 4 : Docker Swarm

Ajouter des services

Voir les services :

docker service ls

Voir les instances lancées :

docker service ps [INSTANCE_NAME]

Docker - TP 4 : Docker Swarm

Enlever les services d'un nœud

docker node update --availability drain NODE_NAME

Pour voir si ça fonctionne : docker service ps INSTANCE_NAME

Pour le remettre actif, mettre --availability active

Docker - TP 4 : Docker Swarm

Mettre à jour le nombre de services

docker service scale INSTANCE_NAME=TOTAL

Pour voir si ça fonctionne : docker service ls

Docker - TP 4 : Docker Swarm

Enlever les services

docker service rm INSTANCE_NAME

Pour voir si ça fonctionne : docker service ls

Docker - TP 4 : Docker Swarm

Infos sur les nœuds

Soi-même :

docker node inspect self

Un autre nœud

docker node inspect NAME

Service(s) en éxécution

docker node ps NAME

Docker - TP 4 : Docker Swarm

Mise à jour progressive

docker service update --image IMAGE:TAG INSTANCE_NAME

Pour voir si ça fonctionne : docker service ls

Docker - TP 4 : Docker Swarm

Comment lancer un docker-compose

docker stack --help
docker stack deploy
docker stack rm
docker stack ls

Docker - TP 4 : Docker Swarm

TP1 : Une mise en bouche

NON NOTÉ ! Utiliser toutes les commandes vues précédemment pour voir le résultat qu'elles produisent.

Afin de facilité le travail, on va mettre en place un nginx pour commencer.

Ensuite, utiliser curl pour envoyer l'IP du client à nginx.

PS: Une simple vision des logs suffit à vérifier que ça fonctionne

Docker - TP 4 : Docker Swarm

TP2 : Utilisation du HealthCheck

NON NOTÉ ! Reprendre le cours sur le Dockerfile, et utiliser la propriété HEALTHCHECK (cf. Vers la fin).

Docker - TP 4 : Docker Swarm

TP3 : Final

Perceval - C'est mortel

Docker - TP 4 : Docker Swarm

TP3 : Final

NOTÉ ! A faire en groupe (2 personnes max. sauf exception de ma part)

Petit projet composé de deux sous projets :

  • Une infrastructure Swarm avec des workers;
  • Un caller qui appellera cette infrastructure.

Prévoir un projet Gitlab (la forge) avec moi en collaborateur (prévoir des sous dossiers si vous faites un slave vous même)

Voir les diapos suivantes

Docker - TP 4 : Docker Swarm

TP3 : Final - Infra Docker Swarm (1/6)

Votre infrastructure devra pouvoir répondre à des résolutions de hash MD5. Si la charge de travail (monitorer) devient trop importante, des containers devront être créer. Et inversement.

Il y aura donc des serveurs en écoute (scalabilité), un container capable de changer la scalabilité, et éventuellement une base de données capable de stocker les hash réussi (Redis ?).

Docker - TP 4 : Docker Swarm

TP3 : Final - Infra Docker Swarm (2/6)

Scheme

Docker - TP 4 : Docker Swarm

TP3 : Final - Caller (3/6)

Une petite appli (web ou desktop - en plus) capable d'envoyer des requètes (HTTP ou WebSocket) vers cette infra. Une petite interface utilisateur permettant de choisir des modes gentils, normals, agressifs (change l'envoie d'un hash aléatoire auto toutes les X secondes) est requise.

Le plus, serait d'avoir le monitoring plus ou moins (5 - 10 secondes) de l'infrastructure (idem par HTTP ou WebSocket par exemple).

Comment accède-t-on à Docker dans un container ? Avec cette image (docker:dind) ou se connecter à la socket.

L'esclave pour gagner du temps : Docker hub

L'ensemble des caractères est : a ⟶ z A ⟶ Z 0 ⟶ 9

Docker - TP 4 : Docker Swarm

TP3 : App - Dude (4/6)

L'appli doit permettre:

  • Envoyer des MD5 à la main pour le bruteforcer
  • Envoyer des MD5 automatiquement (délais entre chaque envoi personnalisable - stepper)
  • Visualiser le résultat d'un bruteforce
  • Visualiser l'état du cluster Docker Swarm
  • Optionnel: Table de connaissance des hashs déjà brisés

Docker - TP 4 : Docker Swarm

TP3 : Requis (5/6)

  • Pas de languages de programmations/technos obligatoires;
  • Forcément du Docker Linux (pour me faciliter la tâche de correction 😄);
  • Des projets Git lisibles, complets (readme, licence, ...), propres, avec MR/PR
  • Git: Issues et MR/PR
  • L'appli front: Un peu travaillée si possible

Docker - TP 4 : Docker Swarm

TP3 : Requis (6/6)

  • Intégration continue pour build le ou les images Docker (si possible pousser vers un registry)
  • Un exemple d'au moins un test unitaire en CI (mettre le badge de % dans le README)
  • CI: Ajouter un linter (facultatif)
  • Bon courage

Docker - TP 4 : Docker Swarm

TP3 : Final

Bohort - Bon courage
Dernière maj : Voir Github 🐻 1 /
Précédent
Suivant