Update docker-orchestration

This commit is contained in:
nemunaire 2018-10-20 01:51:35 +02:00
commit 5812b987f9
3 changed files with 39 additions and 11 deletions

View file

@ -26,26 +26,32 @@ un serveur web, qui sera bien plus représentatif de ce que l'on pourra obtenir.
Précédemment, nous lancions notre serveur web favori avec :
<div lang="en-US">
```shell
docker container run --name mywebs -d nginx
```
</div>
La même commande, mais déployée à partir d'un nœud manager, vers un nœud
*workers*, est :
<div lang="en-US">
```shell
docker service create --name myWebS nginx
```
</div>
Allons-y, essayons !
On peut consulter l'état du service avec, comme d'habitude `ls` :
<div lang="en-US">
```shell
42sh$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
iyue3rgd0ohs myWebS replicated 1/1 nginx:latest
```
</div>
Vous pouvez constater que sur l'un des nœuds, sur lequel votre serveur aura été
déployé, le tâche apparaît dans la liste des conteneurs !
@ -55,9 +61,11 @@ Rien de très excitant pour le moment, car nous ne pouvons pas vraiment accéder
à notre serveur. Essayons de modifier sa configuration en direct, afin
d'ajouter une redirection de port :
<div lang="en-US">
```shell
docker service update --publish-add 80 myWebS
```
</div>
À chaque modification de configuration, les conteneurs lancés au sein du
service sont stoppés puis, le manager voyant que le service n'est pas dans
@ -82,7 +90,7 @@ Lorsque plusieurs tâches s'exécutent pour ce service, le nœud d'entrée chois
selon un round-robin à quelle tâche il va diriger la requête. C'est grâce à ce
mécanisme qu'il est possible faire une répartition de charge très simplement.
\\
\vspace{1.5em}
Cette méthode n'est pas la seule permettant d'exposer des ports. Mais c'est
sans doute la plus intuitive. Si vous souhaitez en apprendre plus, vous deviez
@ -100,15 +108,19 @@ physique différentes.
Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici à
:
<div lang="en-US">
```shell
docker service update --replicas 3 myWebS
```
</div>
Roulement de tambours .......
<div lang="en-US">
```shell
docker service ps myWebS
```
</div>
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
@ -126,15 +138,18 @@ son ensemble : frontend, API, base de données, ...
Notre système de monitoring est une *stack* lui aussi, d'ailleurs, nous pouvons
la lancer grâce à notre `docker-compose.yml` :
<div lang="en-US">
```shell
docker stack deploy --compose-file docker-compose.yml tic
```
</div>
### Règle de déploiement
Par rapport à `docker-compose`, nous pouvons indiquer dans ce fichier des
paramètres qui ne serviront qu'au déploiement de notre tâche.
<div lang="en-US">
```yaml
version: '3'
services:
@ -154,6 +169,7 @@ paramètres qui ne serviront qu'au déploiement de notre tâche.
resources:
memory: 50M
```
</div>
Certaines informations comme les ressources, permettent à l'orchestrateur de
mieux choisir le *workers* de destination, en fonction de certaines de ses