RousselTMLEARNING

Article · HAProxy : de la découverte à l'expertise

HAProxy Ingress Controller pour Kubernetes

1. Introduction et Concepts Fondamentaux #

Dans l'écosystème Cloud Native, router le trafic externe exige une réactivité à la milliseconde. Pour les administrateurs débutants, il est crucial de ne pas confondre les différents composants réseau de Kubernetes.

Distinguer les rôles : Ingress Resource vs Ingress Controller #

Voici un récapitulatif des responsabilités de chaque composant au sein du cluster :

ÉlémentRôle principal
IngressRessource YAML qui déclare les règles de routage (hôtes, chemins).
IngressClassLiaison logique qui associe une ressource Ingress à un contrôleur spécifique.
Ingress ControllerLe composant actif (ici HAProxy) qui surveille l'API et applique les règles.
ServiceExpose l'application en interne et regroupe les Pods de manière logique.
PodLe conteneur applicatif qui exécute concrètent le code.

La modernité de l'IngressClass #

Aujourd'hui, Kubernetes standardise l'aiguillage des flux via le champ spec.ingressClassName plutôt que par les anciennes annotations obsolètes (kubernetes.io/ingress.class). L'IngressClass permet de faire cohabiter plusieurs contrôleurs distincts (HAProxy, NGINX, Traefik) au sein d'un même cluster, offrant une flexibilité totale par application.

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: haproxy
spec:
  controller: haproxy.org/ingress-controller

2. Pourquoi choisir HAProxy ? Comparatif Décisionnel #

Le choix du point d'entrée réseau est structurant pour les performances et la robustesse d'une infrastructure de production.

Tableau Comparatif : HAProxy vs NGINX vs Traefik #

CritèreHAProxyNGINXTraefik
Performance⭐⭐⭐ (Maximale, ultra-faible latence)⭐⭐ (Très bonne)⭐ (Bonne, mais plus gourmand)
Configuration⭐⭐ (Dynamique via Runtime API)⭐ (Nécessite souvent des reloads)⭐⭐⭐ (Nativement Cloud Native)
Routage TCP/UDPExcellentBonBon
ObservabilitéTrès bonne (Stick Tables, Stats)BonneTrès bonne
Gateway APIOui (Supporté)OuiOui

Avantages spécifiques de l'architecture HAProxy #

Les architectes privilégient HAProxy pour plusieurs raisons techniques majeures :

  • Le mode Direct-to-Pod : HAProxy contourne le composant kube-proxy. Il interroge l'API des Endpoints pour router directement les paquets vers les adresses IP privées des Pods, réduisant le saut réseau.
  • Les Stick Tables & le Rate Limiting : Fonctions natives en mémoire permettant de bloquer les attaques par déni de service (DDoS) ou de suivre les sessions applicatives avec une précision chirurgicale.
  • Le support moderne des protocoles : Intégration transparente de la terminaison TLS, du Mutual TLS (mTLS) et de HTTP/2 / HTTP/3 (QUIC).

3. Architecture Haute Disponibilité en Production #

Pour garantir la résilience face aux pannes, l'Ingress Controller ne doit jamais représenter un SPOF (Single Point of Failure).

Redondance et Résilience #

En production, le déploiement de HAProxy s'effectue avec un nombre minimal de 3 répliques distribuées sur différents nœuds du cluster à l'aide de règles d'anti-affinité. Le service Kubernetes de type LoadBalancer (fourni par votre Cloud Provider ou par une solution sur site comme MetalLB) distribue le trafic entrant équitablement entre ces instances.

# Extrait de configuration values.yaml pour Helm
controller:
  replicaCount: 3
  antiAffinity:
    type: hard

4. Démonstration Pratique et Routage Avancé #

Déploiement d'une règle d'infrastructure multi-hôtes et multi-chemins.

Cas concret : Isolation API et Interface Web #

Le manifeste suivant illustre comment HAProxy gère simultanément la séparation par sous-domaine (api.rousseltm.fr vs app.rousseltm.fr) ainsi que le routage par chemin contextuel (/admin), le tout protégé par une redirection SSL globale.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: infrastructure-globale-ingress
  annotations:
    haproxy.org/ssl-redirect: "true"
    haproxy.org/balance: "leastconn"
spec:
  ingressClassName: haproxy
  rules:
  - host: app.rousseltm.fr
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: frontend-service
            port:
              number: 80
      - path: /admin
        pathType: Strict
        backend:
          service:
            name: admin-service
            port:
              number: 80
  - host: api.rousseltm.fr
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 8080

5. L'avenir du réseau K8s : L'intégration Gateway API #

La spécification Ingress montrant ses limites pour les topologies complexes, la communauté migre vers l'écosystème Gateway API.

Support des ressources HTTPRoute #

HAProxy Ingress Controller s'aligne nativement sur les évolutions de Kubernetes. Il supporte pleinement les spécifications de la Gateway API. Au lieu de concentrer toute la logique dans un seul Ingress, les responsabilités sont divisées : les administrateurs gèrent l'objet Gateway, tandis que les développeurs déploient de manière autonome des ressources HTTPRoute ou TCPRoute pour exposer leurs applications.

6. Observabilité Avancée et Révolution OpenTelemetry #

Assurer le monitoring en temps réel et le traçage distribué des flux réseaux entrants à l'aide des standards ouverts les plus récents.

Le tournant OpenTelemetry natif (v3.4+) #

Une évolution majeure a été franchie avec la sortie de la version 3.4 de l'Ingress Controller HAProxy, qui intègre désormais un support natif complet pour OpenTelemetry (OTel). Cette compatibilité native permet d'exporter directement des traces distribuées de niveau 7 sans surcharger l'infrastructure avec des agents sidecars complexes.

Lorsqu'une requête traverse HAProxy pour entrer dans le cluster, le contrôleur est capable d'injecter ou de propager le contexte de trace (W3C Trace Context). Cela permet de lier la latence réseau initiale observée à la frontière du cluster avec les traces internes générées plus en aval par vos microservices (par exemple dans Jaeger, Tempo ou Dynatrace), offrant une visibilité de bout en bout indispensable pour le diagnostic de performance.

Collecte de métriques Prometheus et Dashboards Grafana #

En parallèle des traces, HAProxy continue d'exposer son endpoint de métriques au format standard Prometheus. L'architecture de supervision unifiée se décompose ainsi :

HAProxy Ingress ──(Métriques + Traces OTel)──> Prometheus / OpenTelemetry Collector ──> Grafana / Tempo

Cette approche hybride permet de corréler instantanément un pic d'erreurs HTTP (4xx/5xx) ou une dégradation des requêtes par seconde (RPS) visualisés sur Grafana avec les traces OpenTelemetry spécifiques pour identifier le goulot d'étranglement.

Conclusion #

Synthèse pour les Certifications CKA & CKAD #

Pour réussir vos examens de certification CKA/CKAD, retenez les principes fondamentaux suivants :

  • L'Ingress Resource est uniquement un ensemble de règles théoriques.
  • L'IngressClass sélectionne l'implémentation technologique.
  • L'Ingress Controller est le moteur physique qui traduit et applique la configuration.
  • HAProxy Ingress fournit la puissance L4/L7 et une observabilité moderne (OpenTelemetry, Prometheus) indispensable aux environnements industriels.

📄 HAProxy dans Kubernetes : L'Ingress Controller Haute Performance ↗

Mon suivi

  • ⏱ Durée estimée : ≈ 12 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Glossaire de la formation

ACL (Access Control List)

Liste de contrôle d'accès définissant les permissions accordées sur des ressources. Dans HAProxy, les ACL sont des conditions flexibles permettant de ...

Backend

Section de la configuration HAProxy définissant un pool de serveurs cibles vers lesquels le trafic est redirigé. C'est ici que l'on configure l'algori...

Frontend

Section de la configuration HAProxy qui définit comment les requêtes sont reçues du côté client (adresse IP, port, certificats SSL) avant d'être envoy...

GSLB (Global Server Load Balancing)

Technique de répartition de charge à l'échelle mondiale, utilisant généralement le DNS pour diriger les utilisateurs vers le datacenter le plus proche...

HAProxy

Logiciel de load balancing et de proxying haute performance pour TCP et HTTP. HAProxy est le standard de l'industrie pour la gestion de trafic à très ...

Health Check

Mécanisme automatisé permettant au load balancer de tester périodiquement la disponibilité des serveurs afin d'exclure temporairement ceux qui sont en...

Load Balancing

Dispositif qui distribue le trafic applicatif sur un ensemble de serveurs afin d'optimiser l'usage des ressources, de minimiser les temps de réponse e...

SSL Offloading

Processus consistant à déléguer le déchiffrement du trafic HTTPS au load balancer pour libérer de la puissance CPU sur les serveurs d'application.

Stickiness

Mécanisme garantissant qu'un utilisateur est systématiquement redirigé vers le même serveur backend durant toute sa session, indispensable pour les ap...

Slowloris

Type d'attaque par déni de service (DoS) qui consiste à ouvrir de nombreuses connexions HTTP et à les maintenir ouvertes le plus longtemps possible en...

DoS / DDoS

Attaque visant à rendre un service indisponible en submergeant le serveur ou le réseau de trafic. On parle de DDoS (Distributed Denial of Service) lor...

SSL / TLS

Protocoles de sécurisation des échanges sur internet. TLS (Transport Layer Security) est le successeur moderne de SSL (Secure Sockets Layer). Ils perm...

Articles recommandés

Le Load Balancing : Principes, Algorithmes et Cas d'usage

Découvrez le fonctionnement de la répartition de charge (Load Balancing), son rôle dans la haute ...

Anatomie de la configuration HAProxy, Clustering et Haute Disponibilité

Comprendre la structure d'un fichier haproxy.cfg : sections Global, Defaults, Frontend, Backend e...

Maîtriser les ACLs dans HAProxy

Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...

Sécurité et SSL avec HAProxy

Guide complet sur la terminaison SSL, le chiffrement des flux et la sécurisation du serveur HAProxy.

Monitoring et Statistiques dans HAProxy

Comment activer le tableau de bord de statistiques natif et exposer des métriques pour Prometheus.

Persistance de session (Stickiness)

Comprendre comment garantir qu'un utilisateur reste sur le même serveur backend durant toute sa s...

Health Checks et Haute Disponibilité

Comment HAProxy détecte les pannes et gère le basculement automatique vers les serveurs sains.

Installation de HAProxy

Guide complet pour installer HAProxy sur les serveurs Linux (Debian, RedHat) et via des environne...

L'écosystème HAProxy : De l'Open Source à HAProxy One

Comprendre les différences, avantages et interconnexions entre HAProxy OSS, Enterprise, Fusion, E...