Alors que les mondes de DevOps et de NetOps entrent en collision et que les environnements de conteneurs remplacent les définitions traditionnellement utilisées dans le réseau, il semble prudent d'explorer l'utilisation du terme souvent déroutant « ingress » en termes de chemin de données et d'environnements de conteneurs.
Les termes « entrée » et « sortie » ont été classiquement utilisés pour décrire la direction du trafic sur le réseau du point de vue du centre de données. L'entrée est entrante, la sortie est sortante.
À mesure que les environnements de conteneurs ont évolué, le terme « ingress » a été appliqué pour avoir une définition très spécifique et axée sur l'application.
Entrée. Un objet API qui gère l'accès externe aux services d'un cluster, généralement HTTP. Ingress peut fournir un équilibrage de charge, une terminaison SSL et un hébergement virtuel basé sur le nom.
Il est important de prendre un moment pour souligner qu'une ressource ingress, telle que définie dans un environnement Kubernetes, décrit les fonctionnalités que nous supposons être exécutées à l'intérieur même du périmètre du conteneur.
Chaque ingress agit comme un proxy inverse, recevant les requêtes externes et les orientant vers le service Kubernetes approprié selon les règles définies par la ressource ingress de Kubernetes. Le service répartit ensuite la charge des requêtes entre un groupe de conteneurs associés, généralement via des algorithmes natifs d’équilibrage de charge de couche 4 (TCP). C’est ainsi que nous offrons une API unifiée à l’extérieur. L’ingress analyse les appels API (le chemin URI) et les distribue aux microservices hébergés dans les conteneurs adaptés au sein du cluster.
F5 fournit les mêmes fonctionnalités qu'une entrée Kubernetes classique, mais ajoute des fonctionnalités supplémentaires sous la forme de routage SNI et d'équilibrage de charge de couche 4 (TCP). La possibilité d'effectuer un routage SNI (indicateur de nom de serveur) est un avantage pour ceux qui souhaitent un cryptage TLS de bout en bout des échanges de messages, car elle permet à F5 d'acheminer correctement les requêtes en fonction des informations contenues dans les en-têtes sans décrypter la charge utile/le message réel. Bien que cela limite la gamme de fonctionnalités qui peuvent être appliquées à la demande (par exemple, elle ne peut pas être analysée à la recherche de contenu malveillant), cela fournit le support nécessaire aux architectures dans lesquelles le contenu doit rester chiffré pour des raisons réglementaires ou opérationnelles. L'équilibrage de charge de couche 4 (TCP) est souvent utilisé en dehors d'un environnement de conteneur pour faire évoluer les services d'entrée de style Kubernetes.
F5 est généralement déployé en dehors de l’environnement du conteneur. Il est souvent utilisé comme solution d'équilibrage de charge pour exposer des clusters en externe, c'est-à-dire fournir un accès public aux services constitués d'un cluster de conteneurs. Une enquête CNCF a révélé que 67 % des répondants choisissent une option d'équilibrage de charge pour exposer les services de cluster en externe, avec 33 % supplémentaires exploitant les capacités d'entrée (L7).
Pour vous offrir les mêmes fonctionnalités qu’un ingress Kubernetes, nous utilisons un « connecteur » natif des conteneurs qui facilite la mise à jour des politiques définissant la gestion du trafic. Ce connecteur s’intègre directement à l’orchestrateur de conteneurs, généralement Kubernetes, mais Red Hat OpenShift reste un choix apprécié. Nous assurons la communication avec l’ingress F5 via une API. Les mises à jour portent sur les définitions de ressources ingress (politiques de routage HTTP) ainsi que sur la configuration, comme le lancement ou la suppression d’une instance de conteneur qui affecte une définition de service en cours.
L’avantage d’utiliser F5 par rapport aux services d’entrée simples est la possibilité d’appliquer des fonctionnalités avancées au trafic entrant et sortant. La sécurité, l'enrichissement de l'en-tête et les optimisations des performances spécifiques au client peuvent être appliqués lors de l'utilisation de F5 sans modifier l'environnement ou l'architecture du conteneur ou l'application elle-même.
Ressources complémentaires :