docker swarm cloud AWS Tutorial

Docker Swarm Cloud comment ça marche ?

Je vous propose de jouer avec la version Docker Edge (version expérimentale la plus récente : Docker Community Edition 17.05.0-ce), pour découvrir ensemble les fonctionnalités Docker Cloud sur AWS, l'offre Cloud d'Amazon, en mettant en oeuvre un cluster Docker Swarm.

Plan du tutorial Docker Swarm Cloud sur AWS

Au cours de ce tutorial, je vais réaliser les étapes suivantes :

  1. Installation de la version Docker Edge
  2. Interconnexion Docker Cloud et AWS
  3. Création d'un cluster Docker Swarm
  4. Déploiement d'une webapp
  5. Ouverture Firewall
  6. Utilisation de la webapp
  7. Suppression du Cluster Docker Swarm

docker edge

Installation de Docker Edge CE

Pour installer Docker for Mac Edge CE, il suffit de désinstaller la version courante, puis de demander l'installation de docker-edge :

brew cask install caskroom/versions/docker-edge

Je n'ai pas réussi à trouver comment installer docker-edge sur Linux ou Windows ?

docker 4 mac CE

Une fois installer, vous avez un nouveau menu, contenant de nouvelles options, dont l'option Swarm, sélectionner alors le sous menu create, qui va ouvrir votre navigateur et pointer vers Docker Cloud, je vais sélectionner Amazon AWS, afin de lier Docker Cloud à mon compte AWS.

docker swarm cloud

Il faut saisir un AWS Credential, le Role delegation ARN.

docker cloud connect AWS

La procédure complète pour lier Docker Cloud et AWS, voici mon pas à pas.

Setup de la console AWS pour Docker Cloud

Je dois me connecter à la Console AWS et créer un nouveau rôle :

AWS Role creation for docker cloud

Choisir un rôle d'accès entre compte :

AWS Role creation for docker cloud

Sélectionner AWS tier d'accéder à ce compte, voici la procédure IAM Permission

AWS Policy creation for docker cloud

Une fois la procédure achevée, on a enfin l'ARN Credential :

Docker Cloud ARN AWS

Il ne reste plus qu'à le saisir dans la configuration Docker Swarm Cloud :

Docker Cloud ARN AWS

Pour finir avec la Console AWS, je crée une clé SSH, dans le menu Réseau et Sécurité :

AWS SSH key creation for Docker Swarm Cloud

Docker Swarm Cloud

Dans la page de setup de Docker Swarm Cloud, je donne un nom au Cluster Docker Swarm :

  • aws-frk1

Puis, je choisis la région du datacenter :

  • Frankfurt

Enfin, je sélectionne :

  • 1 swarm manager node
  • 2 swarm worker nodes

Pour finir, je valide en cliquant le bouton “Create”.

docker cloud swarm cluster AWS

Le cluster Docker Swarm est en cours de création.

docker swarm cloud AWS cluster creation

Dans la console AWS, on peut contrôler la création des 3 noeuds Docker Swarm :

AWS Console Docker cloud installation

Utiliser Docker Swarm avec AWS

Dans le menu Docker j'ai maintenant accès à mon cluster Docker Swarm Cloud sur AWS :

docker 4 mac CE swarm cloud

J'ouvre la console SSH d'accès à mon cluster Swarm en cliquant dessus. Je vais cloner le repo Github de l'application de vote que Docker propose en exemple : Voting App

git clone https://github.com/docker/example-voting-app
cd example-voting-app
docker stack deploy --compose-file=docker-stack.yml voting_stack

Voici la console :

docker cloud swarm console on Amazon

Cette Web App ouvre 3 ports TCP :

  • 5000 pour l'application de vote
  • 5001 pour afficher les résultats du vote
  • 8080 pour visualiser le cluster docker swarm

Il faut autoriser l'accès aux 3 ports depuis l'extérieur sur l'ip du master node dans la Policy Manager SecurityGroup :

AWS Console Security

J'ai alors accès au SWARM VISUALIZER :

docker swarm cluster VISUALIZER

Et voilà !!!

Destruction du cluster Docker Swarm

Dans la console Docker Cloud, il suffit de “Terminer” le cluster

docker cloud decomissioning

Je peux suivre en parallèle la destruction des noeuds du Cluster Docker Swarm :

aws terminated

Conclusion

Pour réaliser l'ensemble des étapes, j'ai mis 15 minutes pour mettre en oeuvre le Cluster, toute la documentation est disponible ici : https://docs.docker.com/docker-cloud/cloud-swarm/