Work on TP2
This commit is contained in:
parent
a9c68a4545
commit
aaeb15334a
@ -1,4 +1,4 @@
|
|||||||
SOURCES = tutorial.md setup.md what.md manual.md compose.md project.md
|
SOURCES = tutorial.md setup.md what.md ../dockerfiles/supervisor.md manual.md compose.md swarm.md stack.md config-secrets.md project.md
|
||||||
PANDOCOPTS = --latex-engine=xelatex \
|
PANDOCOPTS = --latex-engine=xelatex \
|
||||||
--standalone \
|
--standalone \
|
||||||
--normalize \
|
--normalize \
|
||||||
|
BIN
tutorial/docker-orchestration/chronograf_latest.png
Normal file
BIN
tutorial/docker-orchestration/chronograf_latest.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 155 KiB |
1
tutorial/docker-orchestration/chronograf_setup.png
Symbolic link
1
tutorial/docker-orchestration/chronograf_setup.png
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../dockerfiles/chronograf_setup.png
|
@ -1,20 +1,17 @@
|
|||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
Compose
|
Composition de conteneurs
|
||||||
=======
|
=========================
|
||||||
|
|
||||||
## Automatiser la construction et le lancement
|
## Automatiser la construction et le lancement
|
||||||
|
|
||||||
Commencez par lancer tous vos conteneurs à la main pour voir les
|
Au lieu de faire un script pour construire et lancer tous vos conteneurs, nous
|
||||||
étapes que vous allez devoir automatiser.
|
allons définir à la racine de notre projet un fichier `docker-compose.yml` qui
|
||||||
|
contiendra les paramètres d'exécution (et éventuellement les méthodes de
|
||||||
Au lieu de faire un script pour construire et lancer tous vos
|
construction).
|
||||||
conteneurs, définissez à la racine de votre projet un fichier
|
|
||||||
`docker-compose.yml` qui contiendra les méthodes de construction et
|
|
||||||
les paramètres d'exécution.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
version: '2'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
influxdb:
|
influxdb:
|
||||||
...
|
...
|
||||||
@ -26,17 +23,17 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./:/tmp/toto
|
- ./:/tmp/toto
|
||||||
links:
|
links:
|
||||||
- influxdb
|
- influxdb
|
||||||
```
|
```
|
||||||
|
|
||||||
Ce fichier est un condensé des options que vous passez habituellement
|
Ce fichier est un condensé des options que nous passons habituellement au
|
||||||
au `docker run`.
|
`docker container run`.
|
||||||
|
|
||||||
### `version`
|
### `version`
|
||||||
|
|
||||||
Notez toutefois la présence d'une ligne `version` ; il ne s'agit pas de la
|
Notons toutefois la présence d'une ligne `version` ; il ne s'agit pas de la
|
||||||
version de vos conteneurs, mais de la version du format de fichier
|
version de vos conteneurs, mais de la version du format de fichier
|
||||||
docker-compose qui sera utilisé. Sans indication de version, la version
|
`docker-compose` qui sera utilisé. Sans indication de version, la version
|
||||||
originale sera utilisée.
|
originale sera utilisée.
|
||||||
|
|
||||||
|
|
||||||
@ -57,11 +54,8 @@ run`.
|
|||||||
|
|
||||||
Cette section est le pendant de la commandes `docker volume`.
|
Cette section est le pendant de la commandes `docker volume`.
|
||||||
|
|
||||||
L'idée est d'éviter de créer des *Data Volume Container* qui ont une partie de
|
On déclare les volumes simplement en leur donnant un nom et un driver comme
|
||||||
système de fichiers inutile, et de ne garder que l'idée d'emplacement servant
|
suit :
|
||||||
pour du stockage persistant.
|
|
||||||
|
|
||||||
On les déclare simplement en leur donnant un nom et un driver comme suit :
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
volumes:
|
volumes:
|
||||||
@ -69,8 +63,8 @@ volumes:
|
|||||||
driver: local
|
driver: local
|
||||||
```
|
```
|
||||||
|
|
||||||
Leur utilisation est identique à un *Data Volume Container* : on référence le
|
Pour les utiliser avec un conteneur, on référence le nom ainsi que
|
||||||
nom ainsi que l'emplacement à partager :
|
l'emplacement à partager :
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
[...]
|
[...]
|
||||||
@ -133,13 +127,13 @@ lié, même après que l'on ait démarré. La résolution se fera dynamiquement.
|
|||||||
|
|
||||||
Consultez
|
Consultez
|
||||||
[la documentation](https://docs.docker.com/compose/compose-file/) pour
|
[la documentation](https://docs.docker.com/compose/compose-file/) pour
|
||||||
une liste exhaustive des options que vous pouvez utiliser.
|
une liste exhaustive des options que nous pouvons utiliser.
|
||||||
|
|
||||||
Une fois que votre `docker-compose.yml` est prêt, lancez tout d'abord
|
Une fois que votre `docker-compose.yml` est prêt, lancez tout d'abord
|
||||||
`docker-compose build` pour commencer la phase de build de tous les conteneurs
|
`docker-compose build` pour commencer la phase de build de tous les conteneurs
|
||||||
listés dans le fichier.
|
listés dans le fichier.
|
||||||
|
|
||||||
Une fois le build terminé, vous pouvez lancer la commande suivante et admirer
|
Une fois le build terminé, nous pouvons lancer la commande suivante et admirer
|
||||||
le résultat :
|
le résultat :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -147,7 +141,7 @@ docker-compose up
|
|||||||
```
|
```
|
||||||
|
|
||||||
Encore une fois, testez la bonne connexion entre chronograf (accessible sur
|
Encore une fois, testez la bonne connexion entre chronograf (accessible sur
|
||||||
<http://localhost:10000>) et influxdb.
|
<http://localhost:8888>) et influxdb.
|
||||||
|
|
||||||
|
|
||||||
## Rendu
|
## Rendu
|
||||||
|
8
tutorial/docker-orchestration/config-secrets.md
Normal file
8
tutorial/docker-orchestration/config-secrets.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
\newpage
|
||||||
|
|
||||||
|
Stackage des variants
|
||||||
|
=====================
|
||||||
|
|
||||||
|
## Élements de configurations
|
||||||
|
|
||||||
|
## Données sensibles
|
@ -1,6 +1,145 @@
|
|||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
Lier des conteneurs entre-eux
|
Lier des conteneurs
|
||||||
=============================
|
===================
|
||||||
|
|
||||||
TODO
|
Avant de voir des méthodes plus automatiques pour déployer toute notre pile
|
||||||
|
logicielle TICK, nous allons commencer par mettre en place et lier les
|
||||||
|
conteneurs manuellement, de la même manière que nous avons pu le faire avec
|
||||||
|
Owncloud et MySQL.
|
||||||
|
|
||||||
|
|
||||||
|
## Conteneur central : la base de données
|
||||||
|
|
||||||
|
Le premier conteneur qui doit être lancé est la base de données orientée séries
|
||||||
|
temporelles :
|
||||||
|
[InfluxDB](https://www.influxdata.com/time-series-platform/influxdb/).
|
||||||
|
En effet, tous les autres conteneurs on besoin de cette base de données pour
|
||||||
|
fonctionner correctement : il serait impossible à *Chronograf* d'afficher les
|
||||||
|
données sans base de données, tout comme *Telegraf* ne pourrait écrire les
|
||||||
|
métriques dans une base de données à l'arrêt.
|
||||||
|
|
||||||
|
Afin d'interagir avec les données, InfluxDB expose une
|
||||||
|
[API REST](https://fr.wikipedia.org/wiki/Representational_state_transfer)
|
||||||
|
sur le port 8086. Pour éviter d'avoir plus de configuration à réaliser, nous
|
||||||
|
allons tâcher d'utiliser ce même port pour tester localement :
|
||||||
|
|
||||||
|
```
|
||||||
|
docker container run -p 8086:8086 -d --name mytsdb influxdb
|
||||||
|
```
|
||||||
|
|
||||||
|
Comme il s'agit d'une API REST, nous pouvons vérifier le bon fonctionnement de
|
||||||
|
notre base de données en appelant :
|
||||||
|
|
||||||
|
```
|
||||||
|
42sh$ curl -f http://localhost:8086/ping
|
||||||
|
42sh$ echo $?
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
Si votre influxdb répond, vous pouvez vous y connecter en utilisant directement
|
||||||
|
le client fourni :
|
||||||
|
|
||||||
|
```
|
||||||
|
42sh$ docker container run --rm -it --link mytsdb:influxdb \
|
||||||
|
--entrypoint "/usr/bin/influx" influxdb -host influxdb
|
||||||
|
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
|
||||||
|
Connected to http://influxdb:8086 version 1.0.1
|
||||||
|
InfluxDB shell version: 1.0.1
|
||||||
|
> show databases
|
||||||
|
name: databases
|
||||||
|
---------------
|
||||||
|
name
|
||||||
|
_internal
|
||||||
|
```
|
||||||
|
|
||||||
|
Si vous aussi vous voyez la table `_internal`, bravo ! vous pouvez passer à la
|
||||||
|
suite.
|
||||||
|
|
||||||
|
Notez que comme nous avons lancé le conteneur en mode détaché (option `-d`),
|
||||||
|
nous ne voyons pas les logs qui sont écrits par le daemon. Pour les voir, il
|
||||||
|
faut utiliser la commande `docker container logs` :
|
||||||
|
|
||||||
|
```
|
||||||
|
docker container logs mytsdb
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
\hspace{2em}**Exercice :** Ajoutez à la ligne de commande de lancement du
|
||||||
|
conteneur les bon(s) volume(s) qui permettront de ne pas perdre les données
|
||||||
|
d'influxDB si nous devions redémarrer le conteneur.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Collecter les données locales
|
||||||
|
|
||||||
|
Tentons maintenant de remplir notre base de données avec les métriques du
|
||||||
|
système. Pour cela, on commence par télécharger *Telegraf* :
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl https://dl.influxdata.com/telegraf/releases/telegraf-1.4.2-static_linux_amd64.tar.gz | \
|
||||||
|
tar xzv -C /tmp
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis, lançons *Telegraf* :
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cd /tmp/telegraf
|
||||||
|
./telegraf --config telegraf.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
**Remarque :** La configuration par défaut va collecter les données de la
|
||||||
|
machine locale et les envoyer sur le serveur situé à
|
||||||
|
`http://localhost:8086`. Ici, cela fonctionne donc parce que l'on a fait en
|
||||||
|
sorte de redirigé le port de notre conteneur sur notre machine locale (option
|
||||||
|
`-p`).
|
||||||
|
|
||||||
|
Et observons ensuite :
|
||||||
|
|
||||||
|
```shell
|
||||||
|
42sh$ docker container run --rm -it --link mytsdb:influxdb \
|
||||||
|
--entrypoint "/usr/bin/influx" influxdb -host influxdb
|
||||||
|
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
|
||||||
|
Connected to http://influxdb:8086 version 1.0.1
|
||||||
|
InfluxDB shell version: 1.0.1
|
||||||
|
> show databases
|
||||||
|
name: databases
|
||||||
|
---------------
|
||||||
|
name
|
||||||
|
_internal
|
||||||
|
telegraf
|
||||||
|
|
||||||
|
> use telegraf
|
||||||
|
Using database telegraf
|
||||||
|
|
||||||
|
> show measurements
|
||||||
|
name: measurements
|
||||||
|
------------------
|
||||||
|
name
|
||||||
|
cpu
|
||||||
|
disk
|
||||||
|
diskio
|
||||||
|
kernel
|
||||||
|
mem
|
||||||
|
processes
|
||||||
|
swap
|
||||||
|
system
|
||||||
|
```
|
||||||
|
|
||||||
|
La nouvelle base a donc bien été créé et tant que nous laissons *Telegraf*
|
||||||
|
lancé, celui-ci va régulièrement envoyer des métriques de cette machine.
|
||||||
|
|
||||||
|
|
||||||
|
## Afficher les données collectées
|
||||||
|
|
||||||
|
\hspace{2em}**Exercice :** À vous de jouer pour lancer le conteneur
|
||||||
|
[*Chronograf*](https://store.docker.com/images/chronograf).
|
||||||
|
|
||||||
|
L'interface de *Chronograf* est disponible sur le port 8888.
|
||||||
|
|
||||||
|
L'image Docker officielle accepte que l'emplacement du serveur InfluxDB soit
|
||||||
|
passée dans variable d'environnement
|
||||||
|
`INFLUXDB_URL`. [Consultez la documentation du conteneur si besoin](https://store.docker.com/images/chronograf).
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
@ -5,11 +5,8 @@ Rendu
|
|||||||
|
|
||||||
## Projet
|
## Projet
|
||||||
|
|
||||||
Amusez-vous à la piscine, il n'y a pas de projet en plus des exercices fait en
|
Écrivez le `docker-compose.yml` permettant de lancer facilement une
|
||||||
TP !
|
instance de serveur du FIC.
|
||||||
|
|
||||||
En complément de ce TP, vous pouvez jetez un œil à
|
|
||||||
[Docker Swarm](https://docs.docker.com/engine/swarm) !
|
|
||||||
|
|
||||||
|
|
||||||
## Modalité de rendu
|
## Modalité de rendu
|
||||||
@ -34,17 +31,14 @@ placer à la racine de votre rendu.
|
|||||||
Voici une arborescence type:
|
Voici une arborescence type:
|
||||||
|
|
||||||
```
|
```
|
||||||
login_x-TP2/questions.txt
|
|
||||||
login_x-TP2/docker-compose.yml
|
|
||||||
login_x-TP2/influxdb
|
login_x-TP2/influxdb
|
||||||
login_x-TP2/influxdb/Dockerfile
|
login_x-TP2/influxdb/Dockerfile
|
||||||
login_x-TP2/influxdb/influxdb.conf
|
login_x-TP2/influxdb/influxdb.conf
|
||||||
login_x-TP2/chronograf
|
login_x-TP2/docker-compose.yml
|
||||||
login_x-TP2/chronograf/Dockerfile
|
login_x-TP2/mymonitoring.yml
|
||||||
login_x-TP2/chronograf/chronograf.conf
|
login_x-TP2/fic-server
|
||||||
login_x-TP2/mymonitoring
|
login_x-TP2/fic-server/fic-server.yml
|
||||||
login_x-TP2/mymonitoring/Dockerfile
|
login_x-TP2/fic-server/Dockerfile-admin
|
||||||
login_x-TP2/mymonitoring/chronograf.conf
|
login_x-TP2/fic-server/Dockerfile-backend
|
||||||
login_x-TP2/mymonitoring/influxdb.conf
|
login_x-TP2/fic-server/Dockerfile-frontend
|
||||||
login_x-TP2/mymonitoring/supervisor.conf
|
|
||||||
```
|
```
|
||||||
|
6
tutorial/docker-orchestration/stack.md
Normal file
6
tutorial/docker-orchestration/stack.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
\newpage
|
||||||
|
|
||||||
|
Déploiement de services
|
||||||
|
=======================
|
||||||
|
|
||||||
|
TODO
|
26
tutorial/docker-orchestration/swarm.md
Normal file
26
tutorial/docker-orchestration/swarm.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
\newpage
|
||||||
|
|
||||||
|
Swarm
|
||||||
|
=====
|
||||||
|
|
||||||
|
## Lancer plusieurs hôtes
|
||||||
|
|
||||||
|
`docker-machine`
|
||||||
|
|
||||||
|
|
||||||
|
## Création du cluster Swarm
|
||||||
|
|
||||||
|
`docker swarm`
|
||||||
|
|
||||||
|
### Le maître
|
||||||
|
|
||||||
|
#### Initialisation du cluster
|
||||||
|
|
||||||
|
#### Présentation des mécanismes de sécurité
|
||||||
|
|
||||||
|
|
||||||
|
### Les nodes
|
||||||
|
|
||||||
|
#### Enregistrement d'un esclave
|
||||||
|
|
||||||
|
#### Multi-maître
|
@ -3,8 +3,8 @@
|
|||||||
But du TP
|
But du TP
|
||||||
=========
|
=========
|
||||||
|
|
||||||
Aujourd'hui, nous allons réaliser un système de monitoring, prêt à
|
Aujourd'hui, nous allons réaliser un système de monitoring, prêt à être déployé
|
||||||
être déployé chez un fournisseur de cloud.
|
chez un fournisseur de cloud.
|
||||||
|
|
||||||
Le résultat attendu d'ici la fin du TP, est un groupe de conteneurs
|
Le résultat attendu d'ici la fin du TP, est un groupe de conteneurs
|
||||||
indépendants les uns des autres, réutilisables en fonction de besoins
|
indépendants les uns des autres, réutilisables en fonction de besoins
|
||||||
@ -18,3 +18,12 @@ elles seront affichées sous forme de graphique grâce à
|
|||||||
[Chronograf](https://www.influxdata.com/time-series-platform/chronograf/).
|
[Chronograf](https://www.influxdata.com/time-series-platform/chronograf/).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
L'installation que nous allons réaliser est celle d'une plate-forme TICK. Il
|
||||||
|
s'agit d'un mécanisme de séries temporelles (*Time Series*) moderne, que l'on
|
||||||
|
peut utiliser pour stocker toute sorte de données liées à un indice temporel.
|
||||||
|
|
||||||
|
La pile logicielle TICK propose de collecter des métriques, en les enregistrant
|
||||||
|
dans une base de données adaptées et permet en suite de les ressortir sous
|
||||||
|
forme de graphiques ou de les utiliser pour faire des alertes intelligentes.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user