Exemple d'utilisation de Træfik

Træfik est un reverse-proxy et un loadbalancer HTTP qui facilitent le déploiement de microservices. 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 contiend uniquement le binaire.

Command

Pour ne pas avoir a gerer de fichier de configuration, le parametrage 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 reseau est dedier a Træfik, le but est d’eviter de publier un serivce qui n’a pas a l’etre :)

Publier un service

Træfik est sont propre reverse proxy

Pour cela, les labels permetent d’y passer la configuration souhaitee.

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


comments powered by Disqus