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 \
|
||||
--standalone \
|
||||
--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
|
||||
|
||||
Compose
|
||||
=======
|
||||
Composition de conteneurs
|
||||
=========================
|
||||
|
||||
## Automatiser la construction et le lancement
|
||||
|
||||
Commencez par lancer tous vos conteneurs à la main pour voir les
|
||||
étapes que vous allez devoir automatiser.
|
||||
|
||||
Au lieu de faire un script pour construire et lancer tous vos
|
||||
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.
|
||||
Au lieu de faire un script pour construire et lancer tous vos conteneurs, nous
|
||||
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
|
||||
construction).
|
||||
|
||||
```yaml
|
||||
version: '2'
|
||||
version: '3'
|
||||
services:
|
||||
influxdb:
|
||||
...
|
||||
@ -26,17 +23,17 @@ services:
|
||||
volumes:
|
||||
- ./:/tmp/toto
|
||||
links:
|
||||
- influxdb
|
||||
- influxdb
|
||||
```
|
||||
|
||||
Ce fichier est un condensé des options que vous passez habituellement
|
||||
au `docker run`.
|
||||
Ce fichier est un condensé des options que nous passons habituellement au
|
||||
`docker container run`.
|
||||
|
||||
### `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
|
||||
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.
|
||||
|
||||
|
||||
@ -57,11 +54,8 @@ run`.
|
||||
|
||||
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
|
||||
système de fichiers inutile, et de ne garder que l'idée d'emplacement servant
|
||||
pour du stockage persistant.
|
||||
|
||||
On les déclare simplement en leur donnant un nom et un driver comme suit :
|
||||
On déclare les volumes simplement en leur donnant un nom et un driver comme
|
||||
suit :
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
@ -69,8 +63,8 @@ volumes:
|
||||
driver: local
|
||||
```
|
||||
|
||||
Leur utilisation est identique à un *Data Volume Container* : on référence le
|
||||
nom ainsi que l'emplacement à partager :
|
||||
Pour les utiliser avec un conteneur, on référence le nom ainsi que
|
||||
l'emplacement à partager :
|
||||
|
||||
```yaml
|
||||
[...]
|
||||
@ -133,13 +127,13 @@ lié, même après que l'on ait démarré. La résolution se fera dynamiquement.
|
||||
|
||||
Consultez
|
||||
[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
|
||||
`docker-compose build` pour commencer la phase de build de tous les conteneurs
|
||||
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 :
|
||||
|
||||
```shell
|
||||
@ -147,7 +141,7 @@ docker-compose up
|
||||
```
|
||||
|
||||
Encore une fois, testez la bonne connexion entre chronograf (accessible sur
|
||||
<http://localhost:10000>) et influxdb.
|
||||
<http://localhost:8888>) et influxdb.
|
||||
|
||||
|
||||
## 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
|
||||
|
||||
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
|
||||
|
||||
Amusez-vous à la piscine, il n'y a pas de projet en plus des exercices fait en
|
||||
TP !
|
||||
|
||||
En complément de ce TP, vous pouvez jetez un œil à
|
||||
[Docker Swarm](https://docs.docker.com/engine/swarm) !
|
||||
Écrivez le `docker-compose.yml` permettant de lancer facilement une
|
||||
instance de serveur du FIC.
|
||||
|
||||
|
||||
## Modalité de rendu
|
||||
@ -34,17 +31,14 @@ placer à la racine de votre rendu.
|
||||
Voici une arborescence type:
|
||||
|
||||
```
|
||||
login_x-TP2/questions.txt
|
||||
login_x-TP2/docker-compose.yml
|
||||
login_x-TP2/influxdb
|
||||
login_x-TP2/influxdb/Dockerfile
|
||||
login_x-TP2/influxdb/influxdb.conf
|
||||
login_x-TP2/chronograf
|
||||
login_x-TP2/chronograf/Dockerfile
|
||||
login_x-TP2/chronograf/chronograf.conf
|
||||
login_x-TP2/mymonitoring
|
||||
login_x-TP2/mymonitoring/Dockerfile
|
||||
login_x-TP2/mymonitoring/chronograf.conf
|
||||
login_x-TP2/mymonitoring/influxdb.conf
|
||||
login_x-TP2/mymonitoring/supervisor.conf
|
||||
login_x-TP2/docker-compose.yml
|
||||
login_x-TP2/mymonitoring.yml
|
||||
login_x-TP2/fic-server
|
||||
login_x-TP2/fic-server/fic-server.yml
|
||||
login_x-TP2/fic-server/Dockerfile-admin
|
||||
login_x-TP2/fic-server/Dockerfile-backend
|
||||
login_x-TP2/fic-server/Dockerfile-frontend
|
||||
```
|
||||
|
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
|
||||
=========
|
||||
|
||||
Aujourd'hui, nous allons réaliser un système de monitoring, prêt à
|
||||
être déployé chez un fournisseur de cloud.
|
||||
Aujourd'hui, nous allons réaliser un système de monitoring, prêt à être déployé
|
||||
chez un fournisseur de cloud.
|
||||
|
||||
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
|
||||
@ -18,3 +18,12 @@ elles seront affichées sous forme de graphique grâce à
|
||||
[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