Zedoune a écrit : ↑mar. 30 juil. 2019 17:46
ça m'a quand même l'air compliqué à appréhender vu la doc non ? ^^
Une fois que tu as compris le fonctionnement, non pas trop . Et au pire, ya pleins de gens sur slack près à aider .
Exemple avec ma conf :
Code : Tout sélectionner
#loglevel et compagnie
debug = false
logLevel = "INFO"
defaultEntryPoints = ["https","http"]
insecureSkipVerify = true
sendAnonymousUsage = true
#on active la page d'admin
[api]
#on indique les ports à utiliser, si on redirige http => https, et des certificats en plus de letsencrypt (pour domaine local dans mon cas) (traefik prendra le bon en fonction)
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
certFile = "/site.lan.crt"
keyFile = "/site.lan.key"
#je le mappe sur docker pour qu'il s'occupe automatiquement de rendre accessible les containeurs configurés
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "site.com"
watch = true
swarmMode = true
# j'ajoute quelques redirection à la main, backend = derrière le revers, frontend devant
[file]
[backends]
[backends.nas]
[backends.nas.LoadBalancer]
method = "drr"
[backends.nas.servers.server1]
url = "https://192.168.1.38"
weight = 1
[backends.teapot]
[backends.teapot.LoadBalancer]
method = "drr"
[backends.teapot.servers.server1]
url = "https://192.168.1.40"
weight = 1
[backends.omv]
[backends.omv.LoadBalancer]
method = "drr"
[backends.omv.servers.server1]
url = "http://192.168.9.3"
weight = 1
[frontends]
[frontends.nas]
backend = "nas"
passHostHeader = true
[frontends.nas.routes.test]
rule = "Host: nas.site.com"
[frontends.teapot]
backend = "teapot"
passHostHeader = true
[frontends.teapot.routes.test]
rule = "Host: teapot.site.com"
[frontends.tpt]
backend = "teapot"
passHostHeader = true
[frontends.tpt.routes.test]
rule = "Host: tpt.site.com"
[frontends.omv]
backend = "omv"
passHostHeader = true
[frontends.omv.routes.test]
rule = "Host: omv.site.lan"
[acme]
#juste à conf mon email, comment je veux stocker les certificats, si je veux un certificat / site, et comment faire le acme challenge (compatible letsencrypt, mais pas que)
email = "aaaa@site.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
Et c'est tout en terme de conf de traefik .
Pour ma part il tourne dans un container docker, et j'ai mappé le acme.json en local + ce fichier de conf, le certificat et sa clef ... et il me gère tout mes revers proxy ...
et quand je déplois un container docker, j'ai juste à rajouter qqc comme ça :
Code : Tout sélectionner
labels:
- "traefik.frontend.rule=Host:gitserver.site.com"
- "traefik.docker.network=web"
- "traefik.enable=true"
- "traefik.frontend.passHostHeader=true"
- "traefik.backend.loadbalancer.method=drr"
- "traefik.port=443"
- "traefik.protocol=https"
et traefik va s'occuper de rediriger gitserver.site.com, vers
https://container:443 . Du coup, si je veux déployer un service web, jpeux faire ça en 2/2, sans jamais touché à la conf de traefik, mais directement à la conf de mon service (et il gère le load balancing and co à ma place) .
à la base j'utilisais le reverse proxy de DSM (un ngninx en gros), et je suis passé à traefik depuis un peu plus d'un an, je l'ai mis partout du coup xD ...
Après, c'est sûr que sans docker, il perds de son interet (il est compatibles avec d'autres trucs, mais je ne connais pas le reste)