C'est quoi Traefik ?
Lancé en 2015 par Emile Vauge, Traefik est un reverse proxy et load balancer cloud-native écrit en Go. Sa singularité, il se configure dynamiquement en lisant l'infrastructure (Docker, Kubernetes, Consul) sans redémarrage. Conforama, Equinix, Mailgun ou Containous (devenu Traefik Labs) l'utilisent en frontal pour servir des trafics massifs avec une configuration radicalement simplifiée.
Traefik a fait du reverse proxy ce qu'il aurait toujours dû être, un composant qui se configure tout seul à partir des conteneurs qu'il sert.
Pourquoi utiliser Traefik ?
Sa promesse principale est l'automatisation. Mais ses atouts s'étendent largement à la sécurité et à l'observabilité.
- Configuration dynamique. Découverte automatique via labels Docker, annotations Kubernetes, ou fichiers. Plus de reload manuel.
- HTTPS automatique. Let's Encrypt intégré, gestion des certificats avec rotation transparente. Le HTTPS devient une option par défaut.
- Middlewares puissants. Rate limiting, IP allowlist, authentification basic ou forward auth, compression, rewriting. Tout en YAML ou labels.
- Multi-providers. Mixez Docker Compose, Kubernetes, Nomad, Consul. Traefik fait converger plusieurs orchestrateurs derrière une seule URL.
- Observabilité native. Logs JSON, métriques Prometheus, traces OpenTelemetry, dashboard intégré. Idéal avec Grafana.
- Open-source et léger. Un binaire Go, faible empreinte, déployable du Raspberry au cluster multi-régions.
Traefik face aux autres approches
Le marché du reverse proxy est mûr. Voici les compromis.
| Critère | Traefik | Nginx | Envoy |
|---|---|---|---|
| Configuration | Dynamique, labels | Statique (reload) | API xDS |
| HTTPS automatique | Natif (Let's Encrypt) | Manuel ou certbot | Manuel |
| Intégration K8s | Ingress Controller natif | Via ingress-nginx | Souvent via mesh |
| Performance brute | Très bonne | Excellente | Excellente |
| Courbe d'apprentissage | Faible | Modérée | Significative |
Traefik en pratique
Voici un docker-compose typique exposant deux services via Traefik avec HTTPS auto et middleware d'auth.
services:
traefik:
image: traefik:v3.1
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.le.acme.email=ops@example.com
- --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.le.acme.tlschallenge=true
ports: ["80:80", "443:443"]
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik-acme:/letsencrypt
api:
image: registry.example.com/api:1.4.2
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=Host(api.example.com)
- traefik.http.routers.api.tls.certresolver=le
- traefik.http.routers.api.middlewares=ratelimit
- traefik.http.middlewares.ratelimit.ratelimit.average=100
volumes:
traefik-acme:Pour quels projets ?
Traefik s'invite partout où plusieurs services partagent un même domaine et où la configuration manuelle devient un goulet.
- Stacks Docker Compose. Un Traefik en frontal, chaque service expose son routage par labels, HTTPS auto inclus.
- Clusters Kubernetes. Ingress Controller officiel, gestion des certificats avec Cert-Manager, intégration native aux CRDs IngressRoute.
- Architectures multi-tenants. Sous-domaines dynamiques, environnements de preview par branche, routage par header ou par path.
Notre approche chez Koul
Traefik est notre reverse proxy par défaut sur les projets que nous opérons. Notre standard.
- Frontal unique. Une seule URL d'entrée, routage par host et path vers Symfony, Next.js ou Node.js.
- TLS automatique. Let's Encrypt en local et production, certificats wildcards via DNS challenge quand pertinent.
- Middlewares de sécurité. Rate limiting, headers HSTS, CSP, redirections HTTP vers HTTPS, IP allowlist pour les zones d'admin.
- Observabilité. Métriques Prometheus dans Grafana, traces OpenTelemetry, logs structurés exploités par Kibana.
Un bon reverse proxy disparaît, il fait son travail sans qu'on ait à y penser.









