ajout d'exemple pour le tls avec LE

This commit is contained in:
Tom David--Broglio 2024-03-06 18:09:32 +01:00
parent 5f43e8b385
commit bdaad63786

View file

@ -56,9 +56,14 @@ entryPoints:
websecure:
address: ":443"
providers:
docker: {}
docker:
endpoint: unix:///var/run/docker.sock
watch: true
file:
directory: /etc/traefik/dynamic-configuration
watch: true
log:
filePath: "/path/to/traefik.log"
filePath: "/var/log/traefik.log"
~~~
### Configuration dynamique
@ -71,15 +76,15 @@ Liste des providers : https://doc.traefik.io/traefik/providers/overview/
> Remarque : le provider File permet de passer directement de la configuration via un fichier ou un dossier contenant des fichiers, https://doc.traefik.io/traefik/providers/file/#configuration-examples
On va configurer...
**Attention** : Il faut configurer les providers dans la configuration statique (voir [Configuration statique](#configuration-statique) )
* des [routers](https://doc.traefik.io/traefik/routing/routers/#configuration-example) qui permette de connecter les requêtes aux services
* des [Services](https://doc.traefik.io/traefik/routing/services/#services) qui permettent de joindre les services...
* Des [Routers](https://doc.traefik.io/traefik/routing/routers/#configuration-example) qui permette de connecter les requêtes aux services
* Des [Services](https://doc.traefik.io/traefik/routing/services/#services) qui permettent de joindre les services...
Par exemple :
Par exemple dans un provider de type file :
~~~{.yaml}
# Configuration dynamique
# Configuration dynamique
http:
routers:
Router-1:
@ -96,7 +101,28 @@ http:
Dans le cas des providers comme docker et kubernetes, Treafik connaitra déjà les services, on aura seulement à configurer des routers directement dans la définitions des service dans swarm ou kubernetes...
TODO à venir examples !!
Par exemple dans une stack docker compose :
~~~{.yaml}
services:
nextcloud:
image: nextcloud
labels:
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.example.com`)"
- "traefik.http.routers.nextcloud.tls.certResolver=letsencrypt"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
~~~
Il faut spécifier le port du conteneur.
> Pour un service swarm, labels se trouve dans `deploy:` :
~~~{.yaml}
services:
nextcloud:
deploy:
labels:
~~~
## Configuration avancée
@ -141,33 +167,46 @@ Documentation : <https://doc.traefik.io/traefik/routing/routers/#tls>
dès le moment ou le router contient la section `tls:`, Traefik suppose que celui-ci est uniquement utilisé pour des requetes HTTPS uniquement.
~~~{.yaml}
## Configuration dynamique
## Configuration dynamique dans un fichier ( file provider )
http:
routers:
my-https-router:
rule: "Host(`foo-domain`) && Path(`/foo-path/`)"
rule: "Host(`example.com`)"
service: service-id
# will terminate the TLS request
tls: {} #TODO ref au fichiers
# Configure le tls, tls: {} active le tls avec un cert autosigné généré par traefik
tls:
certResolver: letsencrypt
domains:
- main: "example.com"
sans:
- "www.example.com"
~~~
> Remarque: Si on veut aussi repondre en HTTP, il faut configurer un autre router
Traefik peut s'occuper de la gestion des certificats TLS, il faut definir un "certResolver":
Traefik peut s'occuper de la gestion des certificats TLS, il faut definir un "certResolver", par exemple pour letsencrypt :
~~~{.yaml}
# Configuration Statique
certificatesResolvers:
myresolver:
letsencrypt:
acme:
email: your-email@example.com
email: batman@example.com
storage: acme.json
caServer = "https://acme-v02.api.letsencrypt.org/directory"
httpChallenge:
# used during the challenge
# entrypoint utilisé, doit etre sur le port 80 !
entryPoint: web
letsencrypt-staging:
acme:
email: batman@example.com
storage: acme.json
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
httpChallenge:
entryPoint: web
~~~
> Remarque : fonctionne seulement pour une "mono-instance". Pour de la gérer les certificats sur un cluster HA, il faut utiliser la version entreprise ou bien utiliser Cert manager(documentation à venir).
> Remarque : fonctionne seulement pour une instance seule. Pour de la gérer les certificats sur un cluster HA, il faut utiliser la version entreprise ou bien utiliser laisser la gestion des certificats à un autre outils comme Cert manager( sur Kubernetes ) et donner directement le certificat à .
### Redirection vers HTTPS