Utiliser Traefik comme reverse-proxy HTTP : guide pratique

Træfik est un reverse-proxy et un load balancer 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 à gérer de fichier de configuration, le paramétrage se fait par des arguments.

Ports

Si vous voulez que Træfik gère aussi le HTTPS, vous devez l’ajouter au niveau de l’entrypoint et des ports.

Volumes

Træfik a besoin de la socket Docker pour pouvoir communiquer avec lui.

Network

Un réseau est dédié à Træfik, le but est d’éviter de publier un service qui n’a pas à l’être 🙂

Publier un service

Træfik est son 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
Catégories : Linux 
Tags: Docker 

Suggestions de lecture :