Exemple d'utilisation de Traefik

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

Suggestions de lecture :

comments powered by Disqus