Office Servers and Services

"La connaissance ne vaut que si elle est partagée" / "An effective Knowledge is a shared one"

Docker Datacenter sur Azure partie 1

Posted by Anthony Costeseque sur septembre 22, 2016


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).

https://azure.microsoft.com/en-us/blog/microsoft-brings-container-innovation-to-the-enterprise-at-dockercon-2016/

 
 

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

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :