Docker Swarm par l’exemple sur le cloud Microsoft Azure

Après les exemples précédents de mise en place d’un cluster docker swarm avec Virtualbox, puis l’exemple sur le cloud public de OVH Openstack, nous allons maintenant déployé notre cluster Docker Swarm sur Microsoft Azure.

Voici les liens vers toute la série :

Comment s’amuser avec Docker Swarm et Microsoft Azure ?

Les prérequis à l’utilisation de Microsoft Azure

Vous devez commencer par créer un compte Microsoft Azure si ça n’est pas déjà fait. Microsoft “offre” une enveloppe de test de quelques centaines d’Euros pour tester la solution prendant 1 mois.

Il faut l’outil mode console azure-cli, la procédure d’installation azure-cli est disponible. Sinon avec nodejs la commande suivante fera l’affaire :

npm install -g azure-cli

ou encore sous MacOs :

brew install azure-cli

Récupérer l’ID Azure pour docker swarm

Première étape après vous être connecté à votre compte, vous devez récupérer votre ID Azure pour l’intégrer dans le script docker swarm comme indiqué si dessous :

id microsoft azure docker swarm 1.12

Valider l’essai gratuit Azure pour l’exmple Docker Swarm

Ensuite, vous devez créer une abonnement dans la zone de facturation de Microsoft AZURE :

microsoft azure docker swarm 1.12

Sélectionner l’essai gratuit :

microsoft azure docker swarm essai gratuit

Adapter le script de démarrage Docker Swarm cluster 1.12 pour Azure

En premier lieu, la commande docker-machine pour utiliser le driver azure, définir le datacenter Azure de déploiement du cluster docker swarm, l’id Microsoft Azure :

docker-machine create \
	--driver azure \
	--azure-location "West Europe" \
	--azure-subscription-id "xxxx-xxxxx-xxxxx-xxxx" \
leader1

Quand le container est créer avec 2 interfaces réseaux, une ip privée sur eth0 et une ip public sur eth1, le leader de notre cluster swarm va être activé sur l’ip privée. Je vais récupérer cette ip avec la snipet suivante :

ip=$(docker-machine ssh leader1 ifconfig eth0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1)

Lors de l’init du cluster on va utiliser cette valeur :

docker swarm init --listen-addr $ip --advertise-addr $ip

Pour lier les workers au cluster de la même façon :

docker swarm join --token $workertok $ip:2377

Par défaut, un firewall est activé pour protéger votre infra cloud Azure, il faut avec la commande azure-cli paramétrer ce firewall pour autoriser le flux http afin de joindre notre web stack et le container de visualisation du cluster déployé sur le leader et ouvert sur le port 5000 :

azure config mode arm
for node in $(seq 1 $leaders);
do
   azure network nsg show docker-machine leader$node-firewall
   azure network nsg rule create docker-machine leader$node-firewall http --priority $priority --protocol tcp --destination-port-range 80 --source-address-prefix $my_ip
   azure network nsg rule create docker-machine leader$node-firewall http --priority $priority --protocol tcp --destination-port-range 5000 --source-address-prefix $my_ip
   priority=$(expr $priority + 1)
done
for node in $(seq 1 $workers);
do
   azure network nsg show docker-machine worker$node-firewall
   azure network nsg rule create docker-machine worker$node-firewall http --priority $priority --protocol tcp --destination-port-range 80 --source-address-prefix $my_ip
   priority=$(expr $priority + 1)
done

Déploiement du cluster avec l’outil d’orchestration docker swarm

Lors de l’execution du script, vous allez voir apparaitre les containers dans l’interface Azure :

microsoft azure docker swarm essai gratuit

L’ensemble des sources et l’automatisation de cet exemple de mise en oeuvre d’un cluster de services docker swarm avec la solution Microsoft AZURE est disponible sur Github. Merci d’ajouter une étoile à mon repo !

Conclusion sur docker swarm avec Microsoft Azure et les prochaines étapes

Voilà pour la démonstration de l’orchestrateur docker swarm avec Azure. Dans le prochain article je vais vous proposer de poursuivre nos tests avec AWS et nous aurons ainsi blouclé ce panorama de mise en oeuvre de Docker Swarm 1.12 :

A suivre …