Après les exemples précédents de mise en place d’un cluster Docker Swarm avec Virtualbox, avec Docker Swarm sur le cloud public de OVH Openstack et ensuite Docker Swarm sur Microsoft Azure, nous allons maintenant déployer une Stack de services avec Docker Swarm sur Amazon Web Services - AWS en enrichissant les scripts d’infrastructure as code déjà réalisés.
Pour mettre en oeuvre ce tuto de déploiement automatisé d’infrastructure as code Docker Swarm sur Amazon Web Services, il faut posséder un compte Amazon Web Services. Amazon AWS “offre” la possibilité de créer un compte AWS gratuit pendant une durée de 1 an.
Il faut installer l’outil ligne de commandes aws-cli :
pip install awscli
ou
brew install awscli
Pour commencer il faut créer un jeu de tokens AWS pour autoriser les scripts à fonctionner. Dans la console Amazon Web Services IAM créer un nouvel utilisateur.
Lancement de la procédure de création d’un utilisateur.
On selectionne le type d’accès, ici accès par programmation.
Je choisis administrateur :
Je le déconseille dans un cadre de production, je le choisis uniquement pour cette démo ! C’est un problème de sécurité …
Et voilà, vous avez l’ID et la clé secrète pour accèder à l’API Amazon Web Services.
Je reprendre les mêmes étapes que pour les précédents tutos Docker Swarm
Le Security Group Amazon Web Services a pour but d’autoriser les communications TCP/UDP avec l’extérieur, puis d’affecter des Security Group lors de la création des instances EC2 AWS, c’est le firewall. Je nomme le SecutityGroup swarm.
Docker propose un outil appelé docker-machine qui va instancier une machine Amazon Web Services EC2 et déployer automatiquement un Docker Engine :
docker-machine create \
--driver amazonec2 \
--amazonec2-region ${region} \
--amazonec2-security-group ${group_name} \
leader
Lors de la création, je dois préciser à quel Security Group AWS je rattache cette nouvelle instance EC2.
La procédure d’initialisation du cluster Docker Swarm sur Amazon Web Services est la même que pour les précédents exemples : sur l’ensemble des workers Docker on réalise un join, puis notre cluster Docker est en fonction.
Je vais utiliser une stack de microservices Nodejs, .Net, Python, Redis et PostgreSQL proposer par Docker Inc. : c’est une application de vote.
Afin de tester le déploiement, le script ouvre automatiquement un navigateur web sur 3 pages différentes :
Maintenant, si l’on souhaite scaler le front web, il suffit de taper les 2 commandes suivantes:
eval $(docker-machine env leader1)
docker service scale vote=10
Sur la page web de l’outil de visualisation du cluster docker, on voit les containers Docker qui se créent au sein du cluster Docker Swarm.
Chaque noeud du cluster va rompre son association avec la commande : docker swarm leave, puis chaque instance Amazon EC2 va être supprimée avec la commande : docker-machine rm –force
L’ensemble des sources et l’automatisation de cet exemple de mise en oeuvre d’un cluster de services docker swarm avec AWS est disponible sur Github. Merci d’ajouter une étoile à mon repo !
Voilà pour la démonstration de l’orchestrateur docker swarm avec AWS, pour les prochaines étapes, je vous propose de mettre en oeuvre un cluster Kubernetes, si vous avez d’autres idées ou souhaits, merci de laisser un commentaire plus bas.
Cet article conclue ainsi la série sur Docker Swarm :