Bonjour à tous,

Ce billet pour mettre en lumière un outil découvert à l’occasion de ma présence à la DEVOXX FR 2016 pour la conférence « Træfɪk, a modern reverse-proxy » par @emilevauge

Utilisateur convaincu de Docker depuis plusieurs années, je ne peux que saluer l’émergence de ce projet dont la communauté s’empare déjà, ce qui laisse présager un avenir plein de nouveaux features !

# Traefik à la rescousse du reverse proxy pour Docker

Voici Gopher!

gopher

Gopher, il est sympa. Il nous a donné Docker. Ensuite, il s’est dit qu’il pourrait nous aider encore un petit peu plus. Gopher est donc devenu contrôleur aérien.

traefik.logo_ (1)

## Un petit état des lieux sur le déploiement par Docker

Ceux qui auront assisté à mon workshop Docker dans les locaux d’Invivoo se rappelleront de deux choses: Un, les dieux de la démo n’étaient pas avec moi ce soir là; Deux, Docker c’est top !

Mais le service discovery n’est pas gratuit. Après avoir déployé un nouveau conteneur web, il n’y a pas de magie. Il faut éditer le fichier de configuration d’un Nginx ou d’un HAProxy pour référencer votre nouveau conteneur et reloader le service. D’innombrables plombiers ont contourné le problème avec des scripts maison de déploiement Docker qui templatisent la configuration proxy et qui relancent à l’exécution. Ceci a le mérite de fonctionner mais il faut avouer que ce n’est pas très élégant.

Le plus simple et naturel serait que le proxy puisse être notifié du déploiement d’un nouveau conteneur et que lui-même puisse se reconfigurer avec les informations du nouveau conteneur.

HAProxy et Nginx sont d’excellents outils. Seulement ils ont été écrits au début des années 2000. Nous étions encore très loin de la démocratisation du déploiement par conteneur. C’est donc dans ce contexte qu’Emile Vauge a écrit Træfɪk.

## Il est venu le temps d’un reverse proxy moderne

L’idée derrière Træfɪk est si simple qu’on peut difficilement comprendre pourquoi personne n’a popularisé une implémentation efficace plus tôt. Træfɪk est un Reverse Proxy HTTP et Web Socket comme HAProxy et Nginx. Sa particularité est d’écouter les événements docker de la machine sur lequel il est déployé. Il peut donc récupérer les configurations des conteneurs pour appliquer dynamiquement les règles de routage nécessaires pour effectuer un load balancing.

## Fonctionnalités

* Circuit Breaking
* Génération automatique de certificat SSL avec Let’s Encrypt
* IHM d’administration et de monitoring complète
* API Rest complète
* Supporte Docker, Mesos / Marathon, ETCD
* Supporte HTTP, HTTPS , HTTP 2 et Web Socket
* Load balancer intégré
* Métriques intégrées

Je vous invite donc à visiter la page officiel du projet https://traefik.io/ pour comprendre comment déployer l’outil.

Les prochains développements prévus intègreront le support Kubernetes pour la génération automatique de certificats SSL; le support du TCP et bien d’autres…

Vous pouvez y contribuer sur le Github : https://github.com/containous/traefik

A bientôt