cloud:2017:tp_swarm2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cloud:2017:tp_swarm2 [2018/01/12 12:54] – [Création d'un registry privé] fabien.ricocloud:2017:tp_swarm2 [2018/03/13 09:19] (Version actuelle) jean-patrick.gelas
Ligne 1: Ligne 1:
 +
 +
 =====I. Docker Machine ===== =====I. Docker Machine =====
-[[https://docs.docker.com/machine/overview/|Docker machine]] est un script qui permet de générer des machines virtuelles et d'installer docker automatiquement. Il est capable d'utiliser plusieurs hyperviseurs comme //virtutalbox// ou //openstack// mais aussi les fournisseurs de cloud publiques : AWS, Azure ... Vous avez une documentation plus spécifique à [[https://docs.docker.com/machine/drivers/openstack/|openstack ici]]+[[https://docs.docker.com/machine/overview/|Docker machine]] est un script qui permet de générer des machines virtuelles et d'installer docker automatiquement. Il est capable d'utiliser plusieurs hyperviseurs comme //virtutalbox// ou //openstack// mais aussi les fournisseurs de cloud publiques : AWS, Azure ... Vous avez une documentation plus spécifique sur [[https://docs.docker.com/machine/drivers/openstack/|openstack ici]]
  
 Certaines requêtes de docker machine utilisent //un port inhabituel qui est filtré sur le réseau wifi//. Vous devez donc utiliser les machines de l'université et télécharger le script par la commande : Certaines requêtes de docker machine utilisent //un port inhabituel qui est filtré sur le réseau wifi//. Vous devez donc utiliser les machines de l'université et télécharger le script par la commande :
Ligne 9: Ligne 11:
 La commande docker-machine est assez simple car elle signale la plupart des options qui lui manque. La commande de création est [[https://docs.docker.com/machine/reference/create/|documentée ici]], les [[https://docs.docker.com/machine/drivers/openstack/|options relatives à //openstack// là]]. Vous devez savoir que : La commande docker-machine est assez simple car elle signale la plupart des options qui lui manque. La commande de création est [[https://docs.docker.com/machine/reference/create/|documentée ici]], les [[https://docs.docker.com/machine/drivers/openstack/|options relatives à //openstack// là]]. Vous devez savoir que :
   - le driver est ''openstack''   - le driver est ''openstack''
-  - l'url d'authentification est ''http://cloud-info.univ-lyon1.fr:5000/v3/''+  - l'url d'authentification est ''https://cloud-info.univ-lyon1.fr:5000/v3/''
   - le nom d'utilisateur et le mot de passe sont ceux qui vous permettent de vous connecter (voir la remarque plus loin)   - le nom d'utilisateur et le mot de passe sont ceux qui vous permettent de vous connecter (voir la remarque plus loin)
-  - le //tenant// est le projet //openstack// où créer les machines +  - le //tenant// est le projet //openstack// où créer les machines Il faut donner son identifiant avec l'option ''openstack-tenant-id'' t lui donner la valeur ''fd8c7337154b4c8ea246c1bca973f9f0'' 
-  - le nom de l'image à utiliser est celui d'une VM par défaut (car docker-machine s'occupera des configurations) : ''Ubuntu 16.04 LTS Xenial''+  - le nom de l'image à utiliser est celui d'une VM par défaut (car docker-machine s'occupera des configurations) : ''Ubuntu 16.04.3 LTS Xenial''
   - **Attention** il faut bien spécifier les options de proxy via l'option //engine-env// qui permet de spécifier une variable d'environnement((donnez une valeur pour ''HTTP_PROXY'' et ''HTTPS_PROXY'')). Cela permettra de configurer le docker installé pour l'utilisation du proxy de l'université et s'utilise de cette manière :   - **Attention** il faut bien spécifier les options de proxy via l'option //engine-env// qui permet de spécifier une variable d'environnement((donnez une valeur pour ''HTTP_PROXY'' et ''HTTPS_PROXY'')). Cela permettra de configurer le docker installé pour l'utilisation du proxy de l'université et s'utilise de cette manière :
  
Ligne 19: Ligne 21:
 //docker-machine// sauvegarde ses informations dans le répertoire ''~/.docker/machine/''. Si à un moment ''docker-machine rm ...'' ne fonctionne pas car openstack n'a pas créé la machine correspondante, il suffit d'effacer le répertoire ''~/.docker/machine/machines/NOMDELAMACHINE''.pour que docker-machine oublie cette denière. //docker-machine// sauvegarde ses informations dans le répertoire ''~/.docker/machine/''. Si à un moment ''docker-machine rm ...'' ne fonctionne pas car openstack n'a pas créé la machine correspondante, il suffit d'effacer le répertoire ''~/.docker/machine/machines/NOMDELAMACHINE''.pour que docker-machine oublie cette denière.
  
-<hi #ff7f27>Protection de votre mot de passe</hi>: attention, vous vous connectez au srveur openstack avec votre //login// et mots de passe de l'université. Pour éviter de laisser votre mot de passe en clair dans la ligne de commande, n'utilisez pas l'option ''openstack-password''. Vous devez stocker votre mot de passe dans la variable d'environnement ''OS_PASSWORD''. Pour cela copiez/coller la commande :+<hi #ff7f27>Protection de votre mot de passe</hi>: attention, vous vous connectez au serveur openstack avec votre //login// et mot de passe de l'université. Pour éviter de laisser votre mot de passe en clair dans la ligne de commande, n'utilisez pas l'option ''openstack-password''. Vous devez stocker votre mot de passe dans la variable d'environnement ''OS_PASSWORD''. Pour cela copier/coller la commande :
  
-  export OS_PASSWORD=`python3 -c "import getpass; import os; pa=getpass.getpass('Mot de passe : '); print (pa)"`+  export OS_PASSWORD=$(python3 -c "import getpass; pa=getpass.getpass('Mot de passe : '); print (pa)")
  
   * QI.1) En utilisant docker-machine, créez 2 machines qui serviront de nœuds de travail pour //swarm//. Appelez-les VOTRENOM-master, VOTRENOM-slave.   * QI.1) En utilisant docker-machine, créez 2 machines qui serviront de nœuds de travail pour //swarm//. Appelez-les VOTRENOM-master, VOTRENOM-slave.
Ligne 28: Ligne 30:
  
 Pour exécuter des commandes docker sur ces machines il y a 3 méthodes : Pour exécuter des commandes docker sur ces machines il y a 3 méthodes :
-  - Vous pouvez utiliser les variables d'environnement docker fixées par la commande ''docker-machine env NOMMACHINE''. Dans note TP c'est impossible car le logiciel +  - Vous pouvez utiliser les variables d'environnement docker fixées par la commande ''docker-machine env NOMMACHINE''. Dans note TP c'est impossible car le logiciel //docker// n'est pas installé sur les ordinateur de l'université.
-//docker// n'est pas installé sur les ordinateur de l'université.+
   - Vous pouvez vous connecter sur les machines via la commande ''docker-machine ssh NOMMACHINE''   - Vous pouvez vous connecter sur les machines via la commande ''docker-machine ssh NOMMACHINE''
   - Vous pouvez exécuter les commande à distance via la commande ''docker-machine ssh NOMMACHINE COMMANDE''. Par exemple   - Vous pouvez exécuter les commande à distance via la commande ''docker-machine ssh NOMMACHINE COMMANDE''. Par exemple
Ligne 49: Ligne 50:
 =====Utilisation d'une image configurée===== =====Utilisation d'une image configurée=====
  
-Vous pouvez construire une image personnelle, par exemple le docker/php via ce {{ :cloud:2017:dockerphp.zip |Doclerfile}}. Pour l'utiliser via un service swarm vous devez :+Vous pouvez construire une image personnelle, par exemple le docker/php via ce {{ :cloud:2017:dockerphp.zip |Dockerfile}}. Pour l'utiliser via un service swarm vous devez :
   * construire l'image //normalement//   * construire l'image //normalement//
   * la "tagguer" correctement comme expliqué [[https://docs.docker.com/registry/#basic-commands|ici]] (le nom du tag doit commencer par celui du registry c'est à dire ''localhost:5000/''   * la "tagguer" correctement comme expliqué [[https://docs.docker.com/registry/#basic-commands|ici]] (le nom du tag doit commencer par celui du registry c'est à dire ''localhost:5000/''
Ligne 59: Ligne 60:
   * tester qu'il répond avec une répartition de charge.   * tester qu'il répond avec une répartition de charge.
  
 +===== Création d'un fichier de déploiement =====
 +
 +Pour automatiser vos déploiement, il est plus pratique d'utiliser un fichier yaml pour décrire votre application. Comme pour le premier TP avec docker-compose, vous allez maintenant utiliser docker stack.
 +
 +Vous devez supprimer votre précédent service avec ''docker service rm''.
 +
 +Ecrivez votre fichier yaml pour lancer votre image ''localhost:5000/VOTRETAG'' avec 2 replicas.
 +
 +Lancez le stack avec la commande docker stack  up -c //votre fichier//
 +
 +
 +Lors de la mise en place d'application, il y a de nombreuses données sensibles comme les certificats ou les mots de passe. Pour ne pas les mettre en clair dans vos fichiers, docker propose la fonction //secret//.
 +
 +Maintenant, vous allez créer un secret avec la commande ''docker secret''. Puis modifier votre fichier yaml afin de lui indiquer qu'il peut accéder à ce secret //externe//.
 +
 +Quand vous avez fini vous pouvez modifier le fichier afin d'afficher votre secret :
 +
 +echo "mon secret :" . file_get_contents("/var/run/secrets/''nom de votre secret''","r");
  
 +Ne pas oublier de rebuild votre image et de recréer votre stack.
  
  • cloud/2017/tp_swarm2.1515758043.txt.gz
  • Dernière modification : 2018/01/12 12:54
  • de fabien.rico