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 :
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
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 :
Ensuite, vous devez créer une abonnement dans la zone de facturation de Microsoft AZURE :
Sélectionner l’essai gratuit :
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
Lors de l’execution du script, vous allez voir apparaitre les containers dans l’interface Azure :
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 !
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 …