J’étais en train de migrer mon infra vers Traefik afin de ne plus avoir à gérer une correspondance entre mes noms de domaine et un port d’exposition. Traefik est sensé router automatiquement vers le bon conteneur en fonction de l’url (domaine et/ou chemin).
Backend avec backup
Pour migrer l’infra de manière progressive j’ai utilisé un backend qui possède un serveur de backup. Ce dernier continu à envoyer le flux vers le port exposé (bien connu) du service.
backend kitejust4fun_asso_backup
option httpchk
server server1 192.168.122.30:88 check
server legacy 192.168.122.30:8084 backup
Le check http était échec immédiat, Traefik répondant 404 Not Found.
Personnalisation du check http
L’erreur de vérification n’est pas surprenante car sans option particulière haproxy va tester l’url / serveur et comme Traefik ne route rien sur /, c’est normal. Pour tester le service il faut personnalisé l’url de vérification en y mettant le host.
backend kitejust4fun_asso_backup
option httpchk OPTIONS / "HTTP/1.0\r\nHost: www.kitejust4fun.fr"
server server1 192.168.122.30:88 check
server legacy 192.168.122.30:8084 backup
Cette fois le vérification fini en timeout (2000ms par défaut dans le haproxy). En faisant la requête via un curl j’obtiens effectivement un gateway timeout.
Traefik et service dans le même réseau docker
En consultant attentivement la documentation de Traefik Quickstart on s’aperçoit que Traefik et le service sont mis dans le même docker compose donc dans le même réseau, celui créé par défaut par compose. Or en voulant ajouter Traefik à côté de mes services déjà existants, j’espérais que ce dernier allait router le flux sur le port de exposé sur l’hôte. Mais Traefik est un conteneur comme un autre et seul le démon docker connait cette exposition. D’ailleurs le but de Traefik n’est-t-il pas d’exposer que le port d’écoute du routeur Traefik ? Donc je me suis bien fourvoyé !
L’utilisation de Traefik passera donc obligatoirement par une modification de la configuration réseau de mes conteneurs. Jusque là je laissais docker-compose gérer cela. Faisons un saut dans la cours des grands au prochain billet !
Tags: Docker Traefik