1. Rôle des providers #
D'où vient la configuration dynamique.
Principe #
La configuration statique (fichier traefik.yml ou arguments) dit à Traefik quels providers écouter. Les providers fournissent la configuration dynamique : routeurs, services, middlewares. Quand un conteneur démarre ou qu'un objet Kubernetes change, Traefik met ses routes à jour à chaud.
auth@docker, auth@file).2. Les providers courants #
Choisir selon la plateforme.
Tableau #
| Provider | Source | Déclaration d'une route |
|---|---|---|
| Docker | API Docker (socket) | labels traefik.http.routers… sur les conteneurs |
| Swarm | API Swarm | labels de service (deploy.labels) |
| Kubernetes CRD | API Kubernetes | IngressRoute, Middleware, TraefikService |
| Kubernetes Ingress / Gateway API | API Kubernetes | objets standards Ingress, HTTPRoute |
| Nomad, Consul Catalog, ECS | catalogue de services | tags sur les services |
| File | fichiers YAML ou TOML | configuration écrite à la main, rechargée à chaud |
| HTTP | point d'API qui renvoie du JSON | configuration générée par un outil |
| etcd, Redis, Consul KV, ZooKeeper | magasin clés-valeurs | clés traefik/http/routers/… |
3. Exemples #
Statique puis dynamique.
Configuration statique #
providers:
docker:
exposedByDefault: false # seuls les conteneurs avec traefik.enable=true sont publiés
network: web
file:
directory: /etc/traefik/dynamic
watch: true
redis:
endpoints: ["redis:6379"]Route publiée par un label Docker #
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=Host(`api.exemple.fr`) && PathPrefix(`/v1`)
- traefik.http.routers.api.entrypoints=websecure
- traefik.http.routers.api.tls.certresolver=le
- traefik.http.services.api.loadbalancer.server.port=8080Erreur Courante : Monter le socket Docker donne à Traefik un accès root à l'hôte. Montez-le en lecture seule ou passez par un proxy de socket (tecnativa/docker-socket-proxy) limité aux lectures.
Bonne Pratique : exposedByDefault: false évite de publier par erreur une base de données ou un outil interne.