Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
sysadmin:docker:traefik [2021/02/04 21:20] – yoann | sysadmin:docker:traefik [2021/07/30 10:17] (Version actuelle) – [Références] 92.154.112.189 | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
====== Traefik ====== | ====== Traefik ====== | ||
+ | |||
+ | Traefik est un reverse-proxy, | ||
Historiquement Apache et Nginx on offert le service de reverse proxy pour des applications monolithiques (applications lourdes, déployées une bonne fois pour toute et difficiles à migrer). | Historiquement Apache et Nginx on offert le service de reverse proxy pour des applications monolithiques (applications lourdes, déployées une bonne fois pour toute et difficiles à migrer). | ||
- | Avec l' | + | Avec l' |
- | * création / | + | * création / |
- | * création des fichiers de configuration (apache ou nginx) pour déploiement. | + | * création des fichiers de configuration (apache ou nginx) pour le déploiement. |
* Génération des certifications SSL. | * Génération des certifications SSL. | ||
Ligne 16: | Ligne 18: | ||
* suppression du certificat SSL | * suppression du certificat SSL | ||
- | Trafik est un reverse-proxy dynamique, qui permet d' | + | Le paradigme des micros-services résout des problèmes mais en crée des nouveaux: |
- | Traefik | + | * Comment livrer tous les services de manière homogène; |
- | * Ecrit en GO, s'intègre très bien à docker | + | * Comment tracer journaliser les requêtes; |
+ | * Comment aiguiller une requête externe sur le bon service (c'est à ce niveau qu' | ||
+ | |||
+ | Traefik est un reverse-proxy dynamique qui permet d' | ||
+ | |||
+ | Les principales caractéristiques et fonctionnalités de Traefik: | ||
+ | |||
+ | * Écrit | ||
+ | * Supporte l'ajout de plugins écrits en Go via un Marketplace (depuis sa version 2.3.0) | ||
* facile d' | * facile d' | ||
- | * supporte HTTP et HTTPS | + | * supporte HTTP et HTTPS, TCP |
+ | * Intégration native de Let’s Encrypt pour fournir du chiffrement aux différents services. | ||
+ | * Supporte plusieurs algorithmes de load-balancing (équilibrage de charge). | ||
+ | * Interface web pour contrôler la configuration et mise à disposition d’une API Rest. | ||
+ | * Fournit des métriques (Rest, Prometheus, Datadog, Statsd, InfluxDB) et des logs d’accès (JSON, CLF). | ||
+ | |||
+ | |||
+ | On désigne parfois Traefik d' **edge reverse proxy**: | ||
+ | * **Edge** indique qu'il se trouve sur l' | ||
+ | * Traefik est configuré pour écouter l' | ||
+ | * Trafik reçoit les requêtes et aiguille le flux vers les bons services. | ||
+ | |||
+ | La philosophie de Traefik est de minimiser la configuration manuelle, d' | ||
+ | |||
+ | ===== Architecture Traefik ===== | ||
+ | |||
+ | Les requêtes sont attrapées par les **entrypoints**. On configure manuellement les entrypoints disponibles, | ||
+ | |||
+ | Les requêtes capturées au niveau des entrypoints sont communiquées à des objets désignés **routers** (anciennement appelés frontends). Les routers intègrent deux fonctions: | ||
+ | * les **règles** qui permettent l' | ||
+ | * les **middlewares** qui altèrent la requête avant de la transférer ou la réponse retournée. | ||
+ | |||
+ | Les services, correspondent à la représentation interne que Traefik se fait de l' | ||
+ | |||
+ | Les administrateurs en charge de la configuration de Traefik modifient ou définissent la configuration statique: les entrypoints, | ||
+ | |||
+ | La partie dynamique de la configuration est déduite des informations récupérées via les API des providers pouvant communiquer les méta-données placées sur les conteneurs/ | ||
+ | * des labels | ||
+ | * des ingres rules de Kubernetes; | ||
+ | * des annotations d'Azur Service Fabric etc | ||
+ | |||
+ | < | ||
+ | Ce sont les développeurs qui intègrent ces informations directement à leurs services. Les labels sont définis par les développeurs et Traefik sera en mesure de les interpréter et d' | ||
+ | </ | ||
- | prérequis docker-compose: | + | Lorsque tout se passe normalement, |
- | Exemple de configuration extraite d'un fichier docker-compose déclarant le service traefik | ||
- | <file yml> | ||
- | traefik: | ||
- | image: traefik: | ||
- | command: --api.insecure --providers.docker | ||
- | volumes: | ||
- | - / | ||
- | ports: | ||
- | - " | ||
- | - " | ||
- | - 8080: | ||
- | </ | ||
+ | ===== Configuration ===== | ||
- | Dans la commande, l' | + | La configuration |
- | traefik s' | + | ===== Exemples ===== |
- | <file YML> | ||
- | labels: | ||
- | - traefik.http.routers.client.rule=Host(`fqdn1.com`, | ||
- | - traefik.http.services.client.loadbalancer.port=3000 | ||
- | </ | ||
===== Références ===== | ===== Références ===== | ||
* https:// | * https:// | ||
+ | * https:// | ||
+ | * [[https:// | ||
+ | * https:// | ||
+ | * https:// |