TRAEFIK-docker
Traefik Ces objectifs
Son Objectif est de jouer le rôle d'un reverse proxy docker
- Ne pas utuliser les ip de docker
- RP (riverse proxy) pour docker
- url => conteneur
- Valable pour plusieur url et conteneurs
- Important dans la resilience applicatif
- Maintien des urls
- Maintien du service traefik (état: toujours up)
- Load balacing si scaling
Cas pratique installation
- 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