Skip to main content
Comprendre le trajet d’une requête HTTP vous aide à savoir où regarder quand quelque chose ne va pas. Cette page retrace le parcours complet d’une requête depuis le navigateur de l’utilisateur jusqu’à la base de données PostgreSQL, en passant par Cloudflare, le load balancer Hetzner, Traefik, l’Ingress, le Service, le Rollout et les pods. Chaque étape est accompagnée de commandes pratiques pour l’inspecter et la déboguer.

Le trajet complet

Le diagramme ci-dessous montre le parcours d’une requête https://api.exemple.com à travers la plateforme Kaeyros Analytics.

Chaque étape en détail

Cloudflare gère la résolution DNS pour les 18 zones de la plateforme et assure la terminaison TLS de bordure. Il sert également de pare-feu applicatif (WAF) et peut mettre en cache certaines ressources.Où déboguer: Console Cloudflare, onglet DNS et Security Events.Commande utile:
Deux load balancers Hetzner répartissent le trafic entrant: kaeyros.org (95.217.173.179 à Helsinki) et sem-a.com (46.225.34.99 à Nuremberg). Ils dirigent le trafic vers les nœuds du cluster Kubernetes RKE2.Où déboguer: Console Hetzner Cloud, section Load Balancers.Commande utile:
Traefik est l’ingress controller du cluster. Il écoute sur l’entrypoint websecure, gère HTTP/3, redirige automatiquement le port 80 vers 443, et route les requêtes vers l’Ingress correspondant en fonction du nom d’hôte.Où déboguer: Dashboard Traefik (accessible via port-forward) ou logs des pods Traefik.Commande utile:
L’objet Ingress (avec ingressClassName: traefik) définit les règles de routage par nom d’hôte. Il associe un nom de domaine à un Service interne du cluster. Attention: les annotations nginx.ingress.kubernetes.io/* présentes dans de nombreux fichiers de valeurs n’ont aucun effet car l’ingress controller est Traefik, pas NGINX.Où déboguer: Description de l’objet Ingress dans le namespace de l’application.Commande utile:
Le Service de type ClusterIP expose l’application à l’intérieur du cluster. Son nom suit la convention fullname = <Application>-<chart>. C’est ce nom DNS interne que les autres services utilisent pour communiquer (par exemple http://<service>.<namespace>.svc.cluster.local).
Renommer une Application recrée le Service et change son nom DNS interne. Cela casse les appels service-à-service écrits en dur. Planifiez ce type de changement hors heures de pointe.
Où déboguer: Endpoints du Service et état des cibles.Commande utile:
Le chart rollout (ou rollout-v2, recommandé) gère le déploiement via Argo Rollouts. Il contrôle le nombre de replicas, les mises à jour progressives (canary) et la répartition des pods sur les nœuds. Par défaut, le chart rollout éloigne les pods du nœud big-one-9d0479e4 avec une préférence de poids 100 (preferredDuringScheduling).Où déboguer: Interface ArgoCD ou description du Rollout.Commande utile:
Les pods exécutent les conteneurs applicatifs. Le nom complet d’un pod suit le schéma: <Application>-<chart>-<hash ReplicaSet>-<hash pod>. Par exemple: biolab-prod-api-rollout-v2-787d6449d4-vntt5 correspond à l’Application biolab-prod-api avec le chart rollout-v2.Où déboguer: Logs des pods et événements du namespace.Commande utile:
La base de données PostgreSQL est gérée par l’opérateur Zalando. Le pod principal porte le suffixe -0 (par exemple <nom>-0). La base peut résider dans le même namespace que l’application ou dans le namespace dédié database.Où déboguer: État du cluster PostgreSQL via patronictl.Commande utile:

Où regarder quand ça ne marche pas

Si un certificat reste en attente, des pods cm-acme-http-solver-* peuvent persister dans le namespace. Vérifiez que le ClusterIssuer approprié est utilisé: letsencrypt-dns pour le cas courant (HTTP-01 via Traefik) ou letsencrypt-cloudflare pour les wildcards et domaines proxifiés (DNS-01).
Pour les problèmes récurrents, commencez toujours par vérifier les logs Traefik et les événements du namespace concerné. Ils indiquent souvent directement l’étape qui échoue.
Pour toute question ou information manquante, contactez l’équipe DevOps: devops@kaeyros-analytics.com