Traefik est un reverse-proxy, un projet Open source français initié par Emile Vauge en 2016. Traefik est développé par la startup Containous situé à Lyon.
Historiquement Apache et Nginx on offert le service de reverse proxy pour des applications monolithiques (applications lourdes, déployées une bonne fois pour toute et difficiles à migrer).
Avec l'arrivée du cloud computing, les applications monolithiques ont été réorganisées en micro-services interdépendants, communicants et extensibles(scalable). Un cycle de de vie peut ainsi être associé à chaque micro-service. Pour chaque nouvelle application, on passe généralement par les étapes suivantes:
Puis, lorsque le service atteint sa fin de vie:
Le paradigme des micros-services résout des problèmes mais en crée des nouveaux:
Traefik est un reverse-proxy dynamique qui permet d'alléger la boucle des étapes consécutives décrite plus haut. Il simplifie le déploiement de micro-services. Traefik s’intègre au mode d'orchestration de l'infrastructure existante (Docker engine simple ou Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS,etc) et s' auto-configure en grande partie dynamiquement. Faire le lien entre Traefik et l’orchestrateur devrait être la seule étape de configuration à réaliser.
Les principales caractéristiques et fonctionnalités de Traefik:
On désigne parfois Traefik d' edge reverse proxy:
La philosophie de Traefik est de minimiser la configuration manuelle, d'utiliser au maximum les informations exploitables afin de générer dynamiquement la bonne configuration.
Les requêtes sont attrapées par les entrypoints. On configure manuellement les entrypoints disponibles, les ports sur lesquels on souhaite que Traefik écoute.
Les requêtes capturées au niveau des entrypoints sont communiquées à des objets désignés routers (anciennement appelés frontends). Les routers intègrent deux fonctions:
Les services, correspondent à la représentation interne que Traefik se fait de l'ensemble des backends (les conteneurs présentés via l'API du docker engine). C'est ici qu'opère le service de load balancing
Les administrateurs en charge de la configuration de Traefik modifient ou définissent la configuration statique: les entrypoints, l’interfaçage avec les providers (docker, docker swarm, Kubernettes, Azur Service Fabric Amazon Container Services etc).
La partie dynamique de la configuration est déduite des informations récupérées via les API des providers pouvant communiquer les méta-données placées sur les conteneurs/services:
Lorsque tout se passe normalement, le développeur déploie son service avec les bonnes métadonnées et Traefik le détecte. Il est alors en mesure d'immédiatement transmettre les requêtes entrantes vers ce nouveau service sans redémarrage ou rechargement de configuration.
La configuration de Traefik est détaillée dans le wiki notes_configuration