Bonjour à tous,
Liste des billets
Partie 2 : https://goo.gl/SSXhd4 (Mise à jour des composants)
Partie 3 : https://goo.gl/5B2TGf (stockage de la DTR et sécurisation des communications)
Partie 4 : https://goo.gl/3kA1ZB (prise en main / démo)
Nous allons parler dans la série de posts à venir de Docker sur Azure et plus particulièrement Docker Datacenter
(DDC) qui est l’offre complète commerciale
CaaS (Container as a Service) de Docker orientée pour les Entreprises.
Disponible On-Premise chez vous dans votre Datacenter ou dans le Cloud Public et dans notre cas Azure.
Note : l’année prochaine (mid 2017) disponible en mode Hybrid dans votre Datacenter avec Azure Stack.
La version Azure et Azure Stack a été annoncé lors de la DockerCon 2016 (juin 2016) par Mark Russinovich (Microsoft Azure CTO).
Docker Datacenter correspond à un abonnement intégré comprenant :
Docker Universal Control Plane (UCP) : Orchestration et Gestion de cluster de serveurs Docker (avec Swarm intégré)
Docker Trusted Registry (DTR) : Dépôt (registry) pour les images de conteneurs
Docker Engine
Support intégré et d’API
Configurations validées grâce à des modules d’extension tiers
Support commercial
Pour les prix : https://www.docker.com/pricing
Pour commencer notre PoC il faudra demander une souscription d’évaluation à Docker en fournissant l’ID de votre souscription Azure cible (et donc avoir une souscription Azure :p)
Une fois votre demande validée vous trouverez la souscription dans votre compte Docker (il faut donc aussi avoir un compte Docker forcement :p).
https://store.docker.com/bundles/docker-datacenter/purchase?plan=free-trial
Il vous suffit de récupérer le ficher de licence (License Key)
Nous allons maintenant preparer notre pair de clefs SSH pour l’authentification SSH sur tous les serveurs de la plateforme.
J’utilise Putty Key Generator
J’utilise une passphrase en plus de l’authentification avec la clef privée
SSH-2 RSA avec une taille de clef de 2048
Sauvegarder ensuite la clef publique (qui sera ajoutée au authorized_keys de tous les serveurs de la plateforme lors du deploiement) et la clef privée
DockerDC_PublicKey.key
DockerDC_PrivateKey.ppk
Pour l’ajout de la clef privé sur un des serveurs de l’infrastructure voir à un poste d’administration Linux que vous utiliserez pour travailler, il faut convertir la clef privée du format Putty of format OpenSSH
Il suffit d’aller dans Conversions > Export OpenSSH Key
Je l’ai sauvegardé dans id_rsa
Ce qui donne au final
Avant de commencer le déploiement voyons à quoi ressemble l’infrastructure déployée
On a 3 types de machines
UCP Controller Nodes qui correspond à Docker Universal Control Plane (UCP) -> nous déploierons 3 nodes
Docker UCP Nodes qui correspond aux Docker Engine -> nous déploierons 2 nodes
UCP DTR Nodes qui correspond à Docker Trusted Registry (DTR) -> nous déploierons 3 nodes
Nous aurons donc 3 fqdn pour accéder à chaque service et donc 3 IP publiques le tout porté par 3 load balancer
Docker Universal Control Plane (UCP) -> dans mon exemple axiansucp.ukwest.cloudapp.azure.com
Docker Engine -> dans mon exemple axiansdockerengine.ukwest.cloudapp.azure.com
Docker Trusted Registry (DTR) -> dans mon exemple axiansregistry.ukwest.cloudapp.azure.com
Nous allons maintenant déployer Docker Datacenter à partir de la Market Place
En mode ARM (Azure Resource Manager) nous allons remplir les différentes propriétés du template (en version 1.0.7)
Nous passons le type d’authentification en mode Clé publique SSH
Il vous suffit de coller le contenu du fichier DockerDC_PublicKey.key (généré précédemment)
De fournir le nom de votre Ressources Group (ici rgDockerDatacenter)
Ainsi que l’emplacement (ici le nouvel emplacement aux Royaume-Uni)
Il faut choisir la configuration des sous-réseaux (la configuration par défaut est suffisante)
On complète avec la cible de notre PoC
Le type de VM Azure, le nb de VM pour chaque brique 3 / 2 / 3, les fqdn, un password pour l’admin de l’UCP et le fichier de licence récupéré précédemment
Resumé
Rappel ce n’est pas gratuit 🙂
Le déploiement est en cours
Le déploiement est terminée
Il a pris 19 minutes
Les ressources deployées
Pour automatiser les futurs déploiements, notamment sur Azure Stack ! pensez à récupérer le script
Vous trouverez dans l’archive le template json et le fichier de paramètres avec tous ce que nous avons saisie précédemment lors du déploiement
J’ai donc maintenant 8 nodes de deployés
UCP Controller Nodes
ucpclus0-ucpctrl
ucpclus1-ucpctrl
ucpclus2-ucpctrl
Docker UCP Nodes
ucpclus0-ucpdtrnode
ucpclus1-ucpdtrnode
UCP DTR Nodes
ucpclus0-ucpdtrnode
ucpclus1-ucpdtrnode
ucpclus2-ucpdtrnode
La documentation officielle : https://success.docker.com/Datacenter/Apply/Docker_Datacenter_on_Azure
Nous donne les actions post déploiement à réaliser et notamment comment retirer le bandeau de warning
En effet le certificat de la Root CA a été généré sur le node0 des 3 nodes UCP Controller, il nous faut pousser ce certificat sur les 2 autres nodes (replicats)
Nous allons le faire en SSH, j’utilise ici le client MobaXtrem
Configuré votre connexion pour utiliser votre clef privée (DockerDC_PrivateKey.ppk générée précédemment)
ssh ucpadmin@axiansucp.ukwest.cloudapp.azure.com -p 2200
Note : 2200 nous connecte au node0 / 2201 au node1 et 2202 au node2
Nous voilà connecté au node 0 (ucpclus0-ucpctrl)
Nous allons exécuter les commandes suivantes pour extraire le certificat de la Root CA que nous pousserons ensuite sur les 2 replicats (ucpclus1-ucpctrl / ucpclus2-ucpctrl)
sudo docker run –rm –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:1.1.0 id 1 > /tmp/id
INSTANCEID=$(cat /tmp/id)
sudo docker run –rm -i –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp backup –root-ca-only –passphrase ddconazure –id $INSTANCEID > /tmp/backup.tar
Nous allons maintenant travailler à partir de ce node pour toutes les actions à venir et nous allons donc poser la clef privée pour pouvoir nous connecter sur les autres nodes
sudo vi ~/.ssh/id_rsa
Puis coller le contenu du fichier DockerDC_PrivateKey.ppk généré précédemment
Puis nous allons envoyer le dump backup.tar vers les 2 replicats
scp backup.tar ucpclus1-ucpctrl:/tmp
scp backup.tar ucpclus2-ucpctrl:/tmp
Nous pouvons maintenant nous connecter au au node1 (ucpclus1-ucpctrl)
ssh ucpadmin@axiansucp.ukwest.cloudapp.azure.com -p 2201
Ici on est connecté
sudo docker run –rm –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:1.1.0 id 1 > /tmp/id
INSTANCEID=$(cat /tmp/id)
sudo docker run –rm -i –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp restore –root-ca-only –passphrase ddconazure –id $INSTANCEID < /tmp/backup.tar
Puis le dernier node 2 (ucpclus2-ucpctrl)
ssh ucpadmin@axiansucp.ukwest.cloudapp.azure.com -p 2202
Node 2 terminé
Les 3 nodes UCP Controller sont maintenant à jour avec la Root CA
Et maintenant le résultat : https://axiansucp.ukwest.cloudapp.azure.com
Plus de bandeau de warning, la plateforme est Up and Running 🙂
Tous les nodes UCP Controller sont en bonnes santé
Prochain post Upgrade de tous les composants
Bonne lecture,
Et pour toutes questions n’hésitez pas.
Anthony Costeseque