Træfik est un reverse-proxy et un loadbalancer HTTP qui facilitent le déploiement de micro-services Træfik s’intègre à vos composants d’infrastructure existants (Docker, Swarm mode, Kubernetes, Amazon ECS, …) et se configure automatiquement.
Configuration de Træfik
Træfik est en Go, l’image contient uniquement le binaire.
Command
Pour ne pas avoir a gérer de fichier de configuration, le paramétrage se fait par des arguments
Ports
Si vous voulez que Træfik porte aussi https, vous devez l’ajouter au niveau de l’entrypoints et des pots.
Volumes
Træfik a besoin de la socket docker pour pouvoir communiquer avec
Network
Un réseau est dédier a Træfik, le but est d’éviter de publier un service qui n’a pas a l’être :)
Publier un service
Træfik est sont propre reverse proxy
Pour cela, les labels permettent d’y passer la configuration souhaitée
Docker compose
Traefik
version: "3"
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
command:
- "--api"
- "--api.dashboard"
- "--docker"
- "--docker.watch"
- "--docker.domain=management.domain.tld"
- "--docker.exposedbydefault=false"
- "--entrypoints=Name:http Address::80 ProxyProtocol:true"
- "--defaultEntryPoints=http"
- "--logLevel=INFO"
- "--sendAnonymousUsage=true"
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- gateway
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_gateway"
- "traefik.protocol=http"
- "traefik.port=8080"
- "traefik.backend=traefik"
- "traefik.frontend.passHostHeader=true"
- "traefik.frontend.rule=Host:management.domain.tld; PathPrefixStrip:/traefik; PathPrefix:/traefik"
networks:
gateway:
driver: bridge
portainer
Pour utiliser portainer derriere traefik :
version: "3"
services:
portainer:
container_name: portainer
image: portainer/portainer
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/docker/portainer:/data
networks:
- traefik_gateway
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_gateway"
- "traefik.protocol=http"
- "traefik.port=9000"
- "traefik.backend=portainer"
- "traefik.frontend.rule=Host:management.domain.tld; PathPrefixStrip: /portainer"
networks:
traefik_gateway:
external: true