Si Kubernetes Ingress est l’objet API qui fournit des règles de routage pour gérer l’accès externe aux services, Ingress Controller est l’implémentation réelle de l’API Ingress. L’Ingress Controller est généralement un équilibreur de charge pour le routage du trafic externe vers votre cluster Kubernetes. Il est responsable des services réseau L4-L7.
La couche 4 (L4) fait référence au niveau de connexion de la pile réseau OSI : les connexions externes sont équilibrées de manière circulaire entre les pods. La couche 7 (L7) fait référence au niveau applicatif de la pile OSI : les connexions externes sont équilibrées entre les pods en fonction des demandes. La couche 7 est souvent privilégiée, mais vous devez sélectionner un Ingress Controller qui répond à vos exigences en matière d’équilibrage de charge et de routage.
Un Ingress Controller est chargé de lire les informations relatives aux ressources d'entrée et de traiter ces données en conséquence. Voici un exemple de ressources d'entrée :
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
spec:
backend:
serviceName:ServiceName
servicePort:<Port Number>
À titre d'analogie, si Kubernetes Ingress est un ordinateur, alors Ingress Controller est un programmeur qui utilise l'ordinateur et prend des mesures. De plus, Ingress Rules agit comme le gestionnaire qui dirige le programmeur pour qu’il effectue le travail en utilisant l’ordinateur. Les Ingress Rules sont un ensemble de règles qui permettent de traiter le trafic HTTP entrant. Un Ingress sans règles envoie tout le trafic vers un unique service de back-end par défaut.
Si l'on examine la question de plus près, le Ingress Controller est une application qui s'exécute dans un cluster Kubernetes et configure un équilibreur de charge HTTP en fonction des ressources Ingress. L’équilibreur de charge peut être un équilibreur de charge logiciel exécuté dans le cluster ou un équilibreur de charge matériel ou cloud exécuté en externe. Différents équilibreurs de charge nécessitent différentes implémentations d’Ingress Controller.
Différents Ingress Controllers sont disponibles sur le marché, et il est important de choisir le bon pour gérer le trafic et la charge entrant dans votre cluster Kubernetes.