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édentes Révision précédente
Prochaine révision
Révision précédente
technique:tech_team:traefik_usage [2021/11/16 01:21] qduchemitechnique:tech_team:traefik_usage [2023/11/24 23:52] (Version actuelle) qduchemi
Ligne 57: Ligne 57:
 Or par défaut, tous les conteneurs d'un fichier Compose sont dans leur propre réseau. Il faut donc les rajouter au réseau de Traefik. Or par défaut, tous les conteneurs d'un fichier Compose sont dans leur propre réseau. Il faut donc les rajouter au réseau de Traefik.
  
-<bootnote warning>Ici, on commence à toucher à la manière dont Picasoft gère ses services, on ne rentre pas dans les détails, il y a une [[technique:docker:picasoft:dockerfiles|section dédiée]].</bootnote>+<bootnote>Ce réseau s'appelle `proxy`, c'est fixé et ça ne bougera plus.</bootnote> 
 + 
 +<bootnote warning> 
 +S'assurer que Traefik est bien lancé sur la machine de test : 
 + 
 +``` 
 +cd /DATA/docker/services/traefik 
 +docker-compose up -d 
 +``` 
 + 
 +Ici, on commence à toucher à la manière dont Picasoft gère ses services, on ne rentre pas dans les détails, il y a une [[technique:docker:picasoft:dockerfiles|section dédiée]].</bootnote>
  
 Au niveau de notre dernier fichier Compose, ça se traduit par ceci : Au niveau de notre dernier fichier Compose, ça se traduit par ceci :
Ligne 75: Ligne 85:
 On indique qu'on veut utiliser un réseau Docker qui existe par ailleurs (d'où le `external: true`), et on indique que notre service participe à ce réseau. On indique qu'on veut utiliser un réseau Docker qui existe par ailleurs (d'où le `external: true`), et on indique que notre service participe à ce réseau.
  
 +### Alors, comment on fait ?
 +
 +<bootnote learn>Il existe déjà une [[technique:docker:good_practices:traefik|page qui résume l'utilisation de Traefik]] sur le wiki, tu peux aller la lire si tu veux!</bootnote>
 +
 +Le point noir, c'est que les labels sont compliqués à comprendre, et qu'on ne peut pas les expliquer sans rentrer profondément dans les [détails de Traefik](https://doc.traefik.io/traefik/routing/overview/). Alors, on va juste se dire que « c'est comme ça ».
 +
 +Et on reprend notre exemple. Pour rappel, on avait un serveur web qui tournait sur `pica01-test.picasoft.net:8081` grâce au fichier Compose suivant :
 +
 +```yaml
 +version: "3.7"
 +
 +services:
 +  quentin:
 +    image: nginx:quentin
 +    container_name: quentin
 +    ports:
 +      - 8081:80
 +    volumes:
 +      - ./website:/var/www/html
 +```
 +
 +On va donc ajouter `quentin` dans le réseau `proxy`, lui indiquer qu'on veut répondre à l'adresse `quentin.test.picasoft.net`, rediriger vers le port 80 du conteneur et activer HTTPS. Le fichier final est comme suit :
 +
 +```yaml
 +version: "3.7"
 +
 +networks:
 +  proxy:
 +    external: true
 +    
 +services:
 +  quentin:
 +    image: nginx:quentin
 +    container_name: quentin
 +    networks:
 +      - proxy
 +    labels:
 +      traefik.enable: true
 +      traefik.http.routers.quentin.entrypoints: websecure
 +      traefik.http.routers.quentin.rule: Host(`quentin.test.picasoft.net`)
 +      traefik.http.services.quentin.loadbalancer.server.port: 80
 +    volumes:
 +      - ./website:/var/www/html
 +```
 +
 +<bootnote>On a supprimé le mapping de port entre l'hôte et le conteneur, puisque désormais c'est Traefik qui s'occupe de tout !</bootnote>
 +
 +### Let's go !
 +
 +{{ :technique:tech_team:traefik_https.gif |}}
 +
 +On constate deux choses :
 +
 +- Le conteneur est accessible via sa propre URL, qui donne beaucoup plus envie que celle composée du nom de la machine et du port.
 +- Cette fois ci, un `curl` simple renvoie un code HTTP 302 (`Moved Permanently`). Si on demande à `curl` de suivre les redirections (`-L`), on arrive à la bonne page.
 +
 +<bootnote question>Pourquoi cette redirection ?</bootnote>
 +
 +C'est lié à la ligne :
 +
 +```
 +traefik.http.routers.quentin.entrypoints: websecure
 +```
 +
 +Qui indique à Traefik que tout ce qui arrive à destination de ce conteneur doit passer par le point d'entrée `websecure`, c'est-à-dire par HTTPS dans notre configuration.
 +Or quand on fait un `curl quentin.test.picasoft.net`, Traefik reçoit la requête sur le port 80. HTTPS est sur le port 443, alors il nous renvoie une redirection qui veut dire « reviens sur le port 443 et on pourra parler de manière sécurisée.
 +
 +<bootnote>Toute l'opération de certification pour activer HTTPS s'est faite automatiquement et en quelques secondes ! C'est vraiment pratique, car gérer les certificats à la main et pour chaque service est long et sujet aux erreurs. Ici, il suffit d'ajouter trois labels et Traefik gère tout pour nous, y compris le renouvellement des certificats.</bootnote>
 +
 +### Pour la curiosité...
 +
 +<bootnote learn>C'est difficile d'y accéder pour des raisons de sécurité, mais sache qu'il existe un joli [[technique:adminserv:traefik:dashboard|tableau de bord]] permettant d'y voir plus clair sur ce qu'il se passe avec Traefik. :-)</bootnote>
 +
 +### Et maintenant ?
 +
 +Bon, et bien à ce stade, tu as absolument toutes les bases pour lancer un service Picasoft ! Construire une image Docker, comprendre les réseaux, les ports et les volumes, utiliser Compose et enfin mettre le service sur internet grâce à Traefik. ^_^
 +
 +Alors peut-être qu'on peut rentrer dans le bain en [[technique:tech_team:etherpad|mettant à jour Etherpad ?]] Et enfin, on verra les détails qui manquent pour [[technique:tech_team:new_service|créer pour de vrai un service Picasoft]] !
  • technique/tech_team/traefik_usage.1637022064.txt.gz
  • de qduchemi