Save tuto corrections

This commit is contained in:
nemunaire 2022-02-24 20:43:43 +01:00
parent f5ee6b8534
commit 10448a6c8d
115 changed files with 1425 additions and 1291 deletions

View file

@ -1,15 +1,15 @@
\newpage
Déploiement de services
=======================
-----------------------
## Services ?
### Services?
Une petite minute terminologie avant de continuer, car lorsque l'on passe sur
les clusters de Docker, cela change un peu :
les clusters de Docker, cela change un peu :
* une *tâche* correspond à **un** unique conteneur, lancé sur l'un des nœuds
*workers* du cluster ;
*workers* du cluster;
* un *service* est un groupe de tâches (oui, les tâches du point précédent),
exécutant la même image.
@ -18,13 +18,13 @@ la haute-disponibilité ou pour répartir la charge.
<div lang="en-US">
### Hello world, again?
#### Hello world, again?
</div>
Non, pas d'hello-world ici, mais nous allons prendre en main les services avec
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 :
Précédemment, nous lancions notre serveur web favori avec:
<div lang="en-US">
```bash
@ -33,7 +33,7 @@ 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 :
*workers*, est:
<div lang="en-US">
```bash
@ -41,7 +41,7 @@ docker service create --name myWebS nginx
```
</div>
Allons-y, essayons !
Allons-y, essayons!
On peut consulter l'état du service avec, comme d'habitude `ls` :
@ -59,7 +59,7 @@ déployé, le tâche apparaît dans la liste des conteneurs !
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 :
d'ajouter une redirection de port:
<div lang="en-US">
```bash
@ -71,13 +71,13 @@ docker service update --publish-add 80 myWebS
service sont stoppés puis, le manager voyant que le service n'est pas dans
l'état demandé, va lancer des tâches avec la nouvelle configuration.
La commande `update` est très puissante : vous pouvez mettre à jour
La commande `update` est très puissante: vous pouvez mettre à jour
pratiquement n'importe quel élément de configuration, y compris le nom de
l'image ou son tag. Grâce à cela, faire des mises à jour se fait de manière
transparente.
#### Magie du mesh
##### Magie du mesh {-}
Lorsque l'on publie un port de cette manière, chaque nœud du cluster devient un
point d'entrée pour ce port, même si la tâche ne s'exécute pas sur ce nœud
@ -88,25 +88,26 @@ nœuds. Vous devriez voir la même page.
Lorsque plusieurs tâches s'exécutent pour ce service, le nœud d'entrée choisi
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.
mécanisme qu'il est possible de faire de la 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
consulter la
[documentation à ce sujet](https://docs.docker.com/engine/swarm/networking/).
sans doute la plus intuitive. Si vous souhaitez en apprendre plus, vous devriez
consulter la documentation à ce sujet:\
<https://docs.docker.com/engine/swarm/networking/>
### Mise à l'échelle et placement
#### Mise à l'échelle et placement
On parle depuis toute à l'heure de lancer plusieurs tâches pour le même
service. La mise à l'échelle c'est ça : exécuter plusieurs conteneurs pour la
service. La mise à l'échelle, c'est ça : exécuter plusieurs conteneurs pour la
même tâche afin de mieux répartir la charge, idéalement sur des machines
physique différentes.
physiques différentes.
Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici à
:
Ce qui se fait souvent avec beaucoup de douleur hors de Docker, se résume ici
à :
<div lang="en-US">
```bash
@ -122,21 +123,21 @@ docker service ps myWebS
```
</div>
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service !
nous montre bien, a priori 3 tâches en cours d'exécution pour ce service!
Enfin, vous avez compris le principe !
Enfin, vous avez compris le principe!
## Stack ?
### Stack?
Refermons cette longue parenthèse et revenons-en au sujet du jour : la
Refermons cette longue parenthèse et revenons-en au sujet du jour: la
supervision de nos machines.
Une *stack* est un groupe de services. Un projet, par exemple un site web dans
son ensemble : frontend, API, base de données, ...
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` :
la lancer grâce à notre `docker-compose.yml`:
<div lang="en-US">
```bash
@ -144,7 +145,7 @@ docker stack deploy --compose-file docker-compose.yml tic
```
</div>
### Règle de déploiement
#### 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.