technique:graph_services

Graphes des services

Cette page présente l’infrastructure de Picasoft du point de vue des services déployés via Docker sur nos machines.

Note:

Picasoft utilise actuellement 5 machines virtuelles pour déployer ses services en production. D’autres machines sont utilisées à des fins de tests. Ces machines sont :

  • pica01, pica02 et pica03, généralistes.
  • media, pour les services consommateurs d’espace disque (multimédias…).
  • monitoring, pour les services “techniques” ou restreints (LDAP, mail, Cloud…).

Le nombre de services augmentant, il est difficile d’avoir une vue d’ensemble ce qui tourne et surtout, où ça tourne.

L’infrastructure étant dynamique, il est impossible de maintenir des diagrammes de l’infrastructure à la main sans les rendre rapidement obsolètes. Nous utilisons l’outil Docker Graph Bot pour générer automatiquement des diagrammes des machines de production. Ils sont générés chaque jour.

Attention:

  • Les graphes sont très larges ; il n’existe pas de solution fiable pour générer automatiquement des graphes avec une largeur acceptable quand le nombre de services augmente.
  • Par service, on entend à la fois les services publics (reliés à un port public ou à une URL sur le graphe) et les services “adminsys”.

Si jamais un graphe n’est plus généré (la date est trop ancienne, par exemple), il faut sans doute renouveler le certificat pour se connecter au socket Docker à distance. La légende pour mieux comprendre :

Ces schémas ne serviront sans doute pas à tout le monde, mais je vais prendre mon exemple.

Soit je le sais par cœur, soit je vais me connecter sur toutes les machines une par une et je fais des docker ps, soit je regarde les graphes et je cherche visuellement un conteneur Etherpad.

Perso, je trouve que ça va plus vite avec la deuxième option.

On voit assez vite ce qui est suspect sur le graphe :

  • Un port de la machine connecté directement à un conteneur web au lieu de passer par Traefik
  • Une base de données accessible depuis l’extérieur (dans le réseau de Traefik)
  • Un conteneur de base de données sans volumes (= données perdues à la recréation du conteneur)

Note:

Les graphes montrent bien les volumes. Ça m’est arrivé de parcourir un graphe et de voir un conteneur postgresql avec deux volumes attachés : un nommé, et un non-nommé. C’était à cause d’une faute de frappe dans un fichier de configuration.

Bref, je pense que c’est un bon outil d’adminsys.

Même s’il faut quelques bases technique pour interpréter le graphe (image ? conteneur ? réseau Docker ? etc), il donne une vision quasi instantanée de notre infrastructure :

  • Quels services tournent
  • Avec quelle version
  • Quel conteneur a accès à quel autre
  • etc.

Note:

C’est pour le T de Transparent des CHATONS. Ça nous évite de maintenir laborieusement, à la main, une liste des conteneurs en production sur nos machines.

  • technique/graph_services.txt
  • de rdelaage