Outils pour utilisateurs

Outils du site


sysadmin:docker:traefik

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:docker:traefik [2021/02/06 10:26] 77.192.232.26sysadmin: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, un projet Open source français initié par Emile Vauge en 2016. Traefik est développé par la startup Containous situé à Lyon.
  
  
 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'arrivée du cloud computing, les applications monolithiques ont été réorganisées en services interdépendants/communicants et extensibles(scalable). Pour chaque nouvelle application, on passe généralement par les étapes suivantes:+Avec l'arrivée du cloud computing, les applications monolithiques ont été réorganisées en micro-services interdépendantscommunicants et extensibles(scalable). Un cycle de de vie peut ainsi être associé à chaque micro-service. Pour chaque nouvelle application, on passe généralement par les étapes suivantes:
   * création /développement du service applicatif   * création /développement du service applicatif
   * création des fichiers de configuration (apache ou nginx) pour le déploiement.   * création des fichiers de configuration (apache ou nginx) pour le déploiement.
Ligne 16: Ligne 18:
   * suppression du certificat SSL   * suppression du certificat SSL
  
-Trafik est un reverse-proxy dynamique qui permet d'alléger cette boucle d'étapes consécutives. Il simplifie le déploiement de micro-services. Traefik s’intègre à au mode d'orchestration de l'infrastructure existante (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS,etc) et s'auto-configure en grande partie dynamiquement. Faire le lien entre Traefik et l’orchestrateur devrait être la seule étape de configuration à réaliser.+Le paradigme des micros-services résout des problèmes mais en crée des nouveaux:
  
-Les principales caractéristiques et fonctionnalités de Traefic:+  * Comment livrer tous les services de manière homogène; 
 +  * Comment tracer journaliser les requêtes; 
 +  * Comment aiguiller une requête externe sur le bon service (c'est à ce niveau qu'intervient Traefik). 
 + 
 +Traefik est un reverse-proxy dynamique qui permet d'alléger la boucle des étapes consécutives décrite plus haut. Il simplifie le déploiement de micro-services. Traefik s’intègre au mode d'orchestration de l'infrastructure existante (Docker engine simple ou Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS,etc) et s' auto-configure en grande partie dynamiquement. Faire le lien entre Traefik et l’orchestrateur devrait être la seule étape de configuration à réaliser. 
 + 
 +Les principales caractéristiques et fonctionnalités de Traefik:
  
   * Écrit en GO, distribué sous forme de binaire unique ou via une image Docker.   * Écrit en GO, distribué sous forme de binaire unique ou via une image Docker.
Ligne 30: Ligne 38:
  
  
-Le lancement de traefik s'appuie sur docker-compose qui permet de gérer plusieurs conteneurs via un fichier de déclaration/configuration mieux adapté à la génération d'un écosystème complexe de services que la simple ligne de commandes.+On désigne parfois Traefik d**edge reverse proxy**: 
 +  * **Edge** indique qu'il se trouve sur l'arrête, la limite ou à la frontière de votre infrastructure. C'est le seul conteneur accessible depuis l’extérieur (l'Internet). Les autre services sont déployés à la la demande et accessible au travers de Traefik. 
 +  * Traefik est configuré pour écouter l'orchestrateur au travers de l'API disponible: il détectes les nouveaux services et crée les routes/aiguillages. 
 +  * 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'utiliser au maximum les informations exploitables afin de générer dynamiquement la bonne configuration.
  
-On désigne parfois Traefic d' **edge reverse proxy**: +===== Architecture Traefik ===== 
-  * **edge** signifie qu'il se trouve sur l'arrête, la limite ou à la frontière de votre infrastructure. C'est le seul conteneur accessible depuis l’extérieur (l'Internet). Les autre services sont déployés à la la demande et accessible au travers de Traefik. + 
-  * Traefik est configuré pour écouter l'orchestrateur au travers de l'API disponible: il détectes les nouveaux services et crée les routes+Les requêtes sont attrapées par les **entrypoints**. On configure manuellement les entrypoints disponibles, les ports sur lesquels on souhaite que Traefik écoute. 
-  * Trafik reçoit les requêtes et aiguille le flux vers les bons services.+ 
 +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'aiguillage (en fonction de la requête on oriente vers un service) 
 +  * 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'ensemble des backends (les conteneurs présentés via l'API du docker engine). C'est ici qu'opère le service de **load balancing** 
 + 
 +Les administrateurs en charge de la configuration de Traefik modifient ou définissent la configuration statique: les entrypoints, l’interfaçage avec les **providers** (docker, docker swarm, Kubernettes, Azur Service Fabric Amazon Container Services etc). 
 + 
 +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/services: 
 +  * des labels  les conteneurs Docker; 
 +  * des ingres rules de Kubernetes; 
 +  * des annotations d'Azur Service Fabric etc 
 + 
 +<note> 
 +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'effectuer le routage dès que les conteneurs seront créés et actifs
 +</note> 
 + 
 +Lorsque tout se passe normalement, le développeur déploie son service avec les bonnes métadonnées et Traefik le détecte. Il est alors en mesure d'immédiatement transmettre les requêtes entrantes vers ce nouveau service sans redémarrage ou rechargement de configuration.
  
  
 +===== Configuration =====
  
-Dans la commande, l'option **%%--api.insecure%%** permet de démarrer la webUI exposée ensuite sur le port 8080. +La configuration de Traefik est détaillée dans le wiki [[sysadmin:docker:traefik:notes_configuration]]
  
-traefik s'appuie sur les labels pour identifier les services et router les flux entrants vers les bons services. +===== Exemples =====
  
-<file YML> 
-  labels: 
-    - traefik.http.routers.client.rule=Host(`fqdn1.com`, `fqdn2.com`) 
-    - traefik.http.services.client.loadbalancer.port=3000 
-</file> 
  
 ===== Références ===== ===== Références =====
Ligne 54: Ligne 80:
   * https://www.youtube.com/watch?v=bpdghiwRLhw   * https://www.youtube.com/watch?v=bpdghiwRLhw
   * https://www.pofilo.fr/post/20200926-traefik-retour-experience/   * https://www.pofilo.fr/post/20200926-traefik-retour-experience/
 +  * [[https://www.youtube.com/watch?v=Da7bWh1CfxA|Présentation de Traefik 2.0 au VOXXED DAYS 2019]]
 +  * https://www.youtube.com/watch?v=37girhK8PrA
 +  * https://computerz.solutions/docker-compose-traefik/
sysadmin/docker/traefik.1612607162.txt.gz · Dernière modification : 2021/02/06 10:26 de 77.192.232.26