Qu’est-ce que Kubernetes Ingress ?

Publié le 30 avril 2020
Ordinateur portable avec écran rose vif à côté d’un grand écran rose et d’une souris sur une surface foncée avec fond noir.
By Ravi Saraswathi

Présentations de Kubernetes Ingress

Kubernetes Ingress est un objet API qui fournit des règles de routage pour gérer l'accès des utilisateurs externes aux services d'un cluster Kubernetes.

Dans cet article, nous examinerons comment et pourquoi vous pourriez avoir besoin d'exposer une application à l'extérieur de votre cluster Kubernetes, les différentes options disponibles et les situations dans lesquelles Kubernetes Ingress est le plus utile. Ce blog suppose que vous avez une compréhension de base de Kubernetes, mais si vous avez besoin d'informations plus générales, consultez les ressources suivantes :

Options pour déployer les applications dans Kubernetes

Il existe plusieurs méthodes pour présenter votre application à l'extérieur de votre cluster Kubernetes. Il est recommandé de sélectionner celle qui convient le mieux à votre cas d'utilisation spécifique. 

Les quatre principales options que nous allons comparer dans cet article sont les suivantes : ClusterIP, NodePort, LoadBalancer et Ingress. Chacune offre un moyen d'exposer des services et s'avère utile dans différentes situations. Un service est essentiellement une interface pour votre application qui réachemine automatiquement le trafic vers les pods disponibles de manière uniforme. Les services constituent une manière abstraite d'exposer une application fonctionnant sur un ensemble de pods en tant que service réseau. Les pods sont immuables, ce qui signifie qu'une fois qu'ils sont désactivés, ils ne sont pas réactivés. Le cluster Kubernetes crée de nouveaux pods dans le même nœud ou dans un nouveau nœud une fois qu’un pod meurt. 

À l’instar des pods et des déploiements, les services sont des ressources dans Kubernetes. Un service fournit un point d'accès unique depuis l'extérieur du cluster et vous permet d'accéder dynamiquement à un groupe de pod de réplication. 

Pour l’accès aux applications internes au sein d’un cluster Kubernetes, ClusterIP est la méthode privilégiée. Il s'agit d'un paramètre par défaut dans Kubernetes qui utilise une adresse IP interne pour accéder au service.

Pour exposer un service à des requêtes réseau externes, NodePort, LoadBalancer et Ingress sont les options possibles. Nous analyserons d’abord Ingress et comparerons les services plus tard dans l’article.

Qu’est-ce que Kubernetes Ingress et à quoi sert-il ?

Kubernetes Ingress est un objet API qui fournit des règles de routage pour gérer l’accès des utilisateurs externes aux services d’un cluster Kubernetes, généralement via HTTPS/HTTP. Avec Ingress, vous pouvez facilement configurer des règles pour le routage du trafic sans créer un tas d’équilibreurs de charge ni exposer chaque service sur le nœud. Cela en fait la meilleure option dans les environnements de production. 

Dans les environnements de production, il est généralement nécessaire de disposer d'un routage basé sur le contenu, d'une prise en charge de plusieurs protocoles et d'une authentification. Ingress vous permet de configurer et de gérer ces capacités au sein du cluster.

Ingress est composé d’un objet API Ingress et du Ingress Controller. Comme nous l'avons vu, Kubernetes Ingress est un objet API qui décrit l'état souhaité pour exposer les services à l'extérieur du cluster Kubernetes. Un Ingress Controller est essentiel, car il s’agit de l’implémentation réelle de l’API Ingress. Un Ingress Controller lit et traite les informations relatives aux ressources d'entrée et fonctionne généralement sous forme de pods au sein du cluster Kubernetes.

Un Ingress fournit les informations suivantes :

  • URL accessibles en externe pour les applications déployées dans les clusters Kubernetes
  • Prise en charge du routage basé sur l'hôte virtuel basé sur le nom et l'URI
  • Règles de répartition de charge et trafic, ainsi que terminaison SSL

Pour une présentation visuelle rapide de Kubernetes Ingress, regardez la vidéo suivante :

Qu’est-ce que l’Ingress Controller ?

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.

IBM DevOps

Qu’est-ce que le DevOps ?

Andrea Crawford présente le DevOps, démontre sa valeur, et explique de quelle façon les pratiques et les outils DevOps vous aident à faire progresser vos applications dans l’ensemble du pipeline de livraison logiciel, de l’idéation à la production. Dirigé par des leaders d’opinion d’IBM, le programme a pour but d’aider les chefs d’entreprise à acquérir les connaissances nécessaires pour donner la priorité aux investissements dans l’IA capables de stimuler la croissance.

Ingress, ClusterIP, NodePort et LoadBalancer

Ingress, ClusterIP, NodePort et LoadBalancer sont tous des moyens d’obtenir du trafic externe dans votre cluster, et ils le font chacun différemment. Voyons comment chacun fonctionne et où vous devriez les utiliser.

ClusterIP

ClusterIP est l’option privilégiée pour l’accès aux services internes et utilise une adresse IP interne pour accéder au service. Voici quelques exemples où ClusterIP pourrait constituer la meilleure option : débogage des services pendant le développement et les tests, trafic interne et tableaux de bord.

ClusterIP est l’option privilégiée pour l’accès aux services internes et utilise une adresse IP interne pour accéder au service. Voici quelques exemples où ClusterIP pourrait constituer la meilleure option : débogage des services pendant le développement et les tests, trafic interne et tableaux de bord.

NodePort

Un NodePort est une machine virtuelle (VM) utilisée pour exposer un service sur un numéro de port statique. Il est principalement utilisé pour exposer des services dans un environnement de non-production (en fait, l’utilisation en production n’est pas recommandée). Par exemple, un NodePort peut être utilisé pour exposer un seul service (sans équilibrage de charge pour plusieurs services).

Un NodePort est une machine virtuelle (VM) utilisée pour exposer un service sur un numéro de port statique. Il est principalement utilisé pour exposer des services dans un environnement de non-production.

Équilibreur de charge

Cette méthode utilise un LoadBalancer externe pour exposer les services à Internet. Vous pouvez utiliser LoadBalancer dans un environnement de production, mais Ingress est souvent privilégié.

Cette méthode utilise un LoadBalancer externe pour exposer les services à Internet. Vous pouvez utiliser LoadBalancer dans un environnement de production, mais Ingress est souvent privilégié.

Ingress

Ingress vous permet de consolider les règles de routage du trafic dans une ressource unique et s’exécute dans le cadre d’un cluster Kubernetes. Voici quelques-unes des raisons pour lesquelles Kubernetes Ingress est l’option privilégiée pour exposer un service dans un environnement de production :

  • Le routage du trafic est contrôlé par des règles définies sur la ressource Ingress.
  • Ingress fait partie du cluster Kubernetes et fonctionne en tant que pod.
  • Un équilibreur de charge externe représente un investissement important et doit être géré en dehors du cluster Kubernetes. Kubernetes Ingress est géré depuis l'intérieur du cluster.
Ingress vous permet de consolider les règles de routage du trafic dans une ressource unique et s’exécute dans le cadre d’un cluster Kubernetes.

Dans les environnements de production, vous utilisez généralement Ingress pour exposer des applications sur Internet. Une application est accessible depuis Internet via le port 80 (HTTP) ou le port 443 (HTTPS), et Ingress est un objet qui permet d'accéder à vos services Kubernetes depuis l'extérieur du cluster. 

Récapitulatif

L'API Kubernetes Ingress vous permet d'exposer vos applications déployées dans un cluster Kubernetes à Internet avec des règles de routage vers une source unique. Pour mettre en œuvre Ingress, vous devez configurer un Ingress Controller dans votre cluster : il est responsable du traitement des informations sur les ressources Ingress et permet le trafic en fonction des Ingress Rules. Il est important de choisir le bon service avec la configuration appropriée pour exposer votre application à Internet en fonction des directives énumérés ci-dessus. 

Auteur

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Solutions connexes
IBM Instana Observability

Exploitez le pouvoir de l’IA et de l’automatisation pour résoudre de manière proactive les problèmes de la pile d’applications.

Découvrir IBM Instana Observability
Solutions DevOps

Utilisez les logiciels et outils DevOps pour construire, déployer et gérer des applications cloud natives sur plusieurs appareils et environnements.

Découvrir les solutions DevOps
Services de conseil en cloud

Renforcez l’agilité et la croissance de votre entreprise. Modernisez en continu vos applications sur n’importe quelle plateforme grâce à nos services de conseil cloud.

Découvrir les services de conseil cloud
Passer à l’étape suivante

De la détection proactive des incidents avec IBM Instana aux informations en temps réel sur l’ensemble de votre pile, garantissez la fiabilité de vos applications cloud-native.

  1. Découvrir IBM Instana
  2. Découvrir les solutions DevOps