[Traefik] Add files for all VMs, configuration and documentation
This commit is contained in:
commit
143831def9
42
pica-traefik/README.md
Normal file
42
pica-traefik/README.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## Traefik
|
||||
|
||||
Ce dossier contient les ressources nécessaires pour lancer Traefik, un reverse proxy adapté pour Docker.
|
||||
C'est la pièce la plus importante de l'infrastructure, puisque l'ensemble des communications HTTP(S) passent d'abord par Traefik, et il est aussi utilisé pour [générer des certificats pour les services TCP](../pica-tls-certs-monitor).
|
||||
|
||||
Ce service doit être lancé sur l'ensemble des machines de l'infrastructure.
|
||||
|
||||
### Configuration
|
||||
|
||||
La configuration a lieu dans le fichier [traefik.toml](./traefik.toml).
|
||||
Notez que toute modification dans ce fichier impactera l'ensemble des machines, puisque le même fichier est utilisé pour l'ensemble des machines.
|
||||
|
||||
À des fins de tests, il peut être modifié localement sur les machines, mais doit toujours rester synchronisé avec ce dépôt à long terme.
|
||||
|
||||
Pour la génération des certificats, Traefik utilise Let's Encrypt. Il n'y a aucune configuration à faire de ce côté. Attention, le nombre de certificats générables est limité à 50 par semaine.
|
||||
|
||||
Si on lance plein de conteneurs de tests, on utilisera temporairement [l'environnement de qualification](https://letsencrypt.org/fr/docs/staging-environment/) de Let's Encrypt, en ajoutant la directive `caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"` sous la section `[acme]`.
|
||||
|
||||
### Lancement
|
||||
|
||||
Assurez-vous que le dossier `/DATA/docker/traefik/certs` existe.
|
||||
C'est dans ce dossier que seront conservés tous les certificats générés par Traefik.
|
||||
|
||||
### Mise à jour
|
||||
|
||||
Il suffit de mettre à jour le tag de l'image dans Compose.
|
||||
Attention, Traefik v2 introduit énormément de changements et [nous ne sommes pas certains](https://wiki.picasoft.net/doku.php?id=technique:adminsys:migration-traefik-v2) de la manière d'effectuer la migration.
|
||||
|
||||
Aussi, Traefik v1.6 est utilisé pour tenterd d'éviter un bug introduit dans la 1.7, qui rend certains services redémarrés inaccessibles (voir [cette discussion](https://team.picasoft.net/picasoft/pl/66aorsxhtffrjytyhnecn436wa)).
|
||||
|
||||
Avant toute mise à jour, il faudra discuter avec l'équipe technique et modifier ce README le cas échéant.
|
||||
|
||||
### Todo
|
||||
|
||||
*Voir si on peut passer Traefik en "host" au niveau du réseau pour qu'il ait accès à tous les réseaux* :
|
||||
https://kanban.picasoft.net/b/7fCn765LCNGraBhxA/team-technique-picasoft/kjvc3iw2pFvszCTcR
|
||||
|
||||
Actuellement, Traefik est dans le réseau `docker_default` sur toutes les machines, et les conteneurs souhaitant être accessibles via Traefik doivent être explicitement dans ce réseau.
|
||||
|
||||
Ceci induit une complexité supplémentaire au niveau des fichiers Compose.
|
||||
|
||||
Il serait peut être bon de permettre à Traefik d'accéder à tous les réseaux et de supprimer énormément de directives "inutiles" dans les Compose.
|
18
pica-traefik/docker-compose.yml
Normal file
18
pica-traefik/docker-compose.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
traefik:
|
||||
container_name: traefik
|
||||
# DO NOT UPGRADE
|
||||
# SEE THIS BEFORE AND DISCUSS : https://team.picasoft.net/picasoft/pl/66aorsxhtffrjytyhnecn436wa
|
||||
image: traefik:1.6.6
|
||||
ports:
|
||||
- "80:80"
|
||||
# Uncomment to expose the web interface. Warning : do not use without setting a password in traefik.toml
|
||||
#- "8080:8080"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./traefik.toml:/traefik.toml
|
||||
- /DATA/docker/traefik/certs:/certs
|
||||
restart: always
|
35
pica-traefik/traefik.toml
Normal file
35
pica-traefik/traefik.toml
Normal file
|
@ -0,0 +1,35 @@
|
|||
logLevel = "INFO"
|
||||
debug = true
|
||||
defaultEntryPoints = ["http", "https"]
|
||||
|
||||
[docker]
|
||||
endpoint = "unix:///var/run/docker.sock"
|
||||
watch = true
|
||||
exposedbydefault = false
|
||||
|
||||
[api]
|
||||
|
||||
[entryPoints]
|
||||
[entryPoints.http]
|
||||
address = ":80"
|
||||
compress = false
|
||||
[entryPoints.http.redirect]
|
||||
entryPoint = "https"
|
||||
[entryPoints.https]
|
||||
address = ":443"
|
||||
compress = false
|
||||
[entryPoints.https.tls]
|
||||
# Accept only TLS1.1 and 1.2
|
||||
MinVersion = "VersionTLS11"
|
||||
# Accept all ciphers excepting TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA and TLS_RSA_WITH_3DES_EDE_CBC_SHA
|
||||
# CipherSuites = ["TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_256_CBC_SHA" ]
|
||||
# Keep only ECDHE :
|
||||
CipherSuites = ["TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" ]
|
||||
|
||||
[acme]
|
||||
email = "picasoft@assos.utc.fr"
|
||||
storage = "/certs/acme.json"
|
||||
entryPoint = "https"
|
||||
onHostRule = true
|
||||
[acme.httpChallenge]
|
||||
entryPoint = "http"
|
Loading…
Reference in New Issue
Block a user