Aller au contenu principal

TRAEFIK-docker

Traefik Ces objectifs

docker Traefik load balancing

Son Objectif est de jouer le rôle d'un reverse proxy docker

  1. Ne pas utuliser les ip de docker
  2. RP (riverse proxy) pour docker
    1. url => conteneur
  3. Valable pour plusieur url et conteneurs
  4. Important dans la resilience applicatif
  5. Maintien des urls
  6. Maintien du service traefik (état: toujours up)
  7. Load balacing si scaling

Cas pratique installation

  1. Vous devez créer un repertoire Traefik et un docker-compose.yml

[commandes]

Un dossier projet

sudo mkdir traefik

Créez le fichier docker-compose.yml

cd traefik
sudo touch docker-compose.yml

Ouvrir le fichier avec un éditeur d votre choix moi j'utilise nano

sudo nano docker-compose.yml

Ajoutez ce code Dans le fichier docker-compose créer.

version: '3'
services:
traefik:
image: "traefik:v3.1"
container_name: "traefik"
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
ports:
- "443:443"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- webgateway
networks:
webgateway:
driver: bridge

Run le conteneur traefik

docker-compose up

Options 2 Tls avec Traefik

Vous pouvez ajoutez des certificats TLS

[Step1-tls]

Tout d'abord on va créer des dossiers ou nous allons stockés les fichiers dans /var/config/tls.yml && /var/cert On va suivre ces étapes

[config/tls.yml]

cd /var/
sudo mkdir config
cd config
sudo nano tls.yml

Dans le fichier tls.yml ajoutez ce code.

url doc [doc-traefik] tls Traefik Traefik

# Dynamic configuration
tls:
stores:
default:
defaultCertificate:
certFile: path/to/cert.crt
keyFile: path/to/cert.key

[certs]

sudo mkdir /var/certs/

Dans le dossier certs vos certificats générés

wildcard.bpmspace.net.certificate.crt
wildcard.bpmspace.net.key

Nouveau docker-compose.yml

version: '3.7'

services:
reverse-proxy:
image: traefik:v2.1.2
command:
--providers.docker
--providers.docker.exposedbydefault=false
--providers.docker.swarmmode=true
--entryPoints.http.address=:80
--entryPoints.https.address=:443
--entryPoints.mysql.address=:3306
--accesslog
--log.level=INFO
--api=true
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/cert:/certs/
- /var/config:/config/
deploy:
mode: global
placement:
constraints:
- node.role == manager
labels:
- traefik.enable=true
- traefik.http.routers.traefikRouter.rule=Host(`www.meko-digital.fr`)
- traefik.http.routers.traefikRouter.tls=true
- traefik.http.routers.traefikRouter.service=api@internal
- traefik.http.routers.traefikRouter.entrypoints=https
- traefik.http.services.justAdummyService.loadbalancer.server.port=1337

networks:
- proxy-net

networks:
proxy-net:
external: true

Doc sur Traefik site officiel

[doc-traefik] doc.traefik.io