Éditeur – Cet article est un extrait de notre livre électronique complet, Managing Kubernetes Traffic with F5 NGINX : Un guide pratique . Téléchargez-le gratuitement aujourd'hui .
De nombreuses organisations qui configurent Kubernetes pour la première fois commencent avec le contrôleur NGINX Ingress développé et maintenu par la communauté Kubernetes ( kubernetes/ingress-nginx ). Cependant, à mesure que les déploiements Kubernetes arrivent à maturité, certaines organisations constatent qu'elles ont besoin de fonctionnalités avancées ou souhaitent un support commercial tout en conservant NGINX comme plan de données.
Une option consiste à migrer vers le contrôleur d'entrée NGINX développé et maintenu par F5 NGINX ( nginxinc/kubernetes-ingress ), et nous fournissons ici des instructions complètes afin que vous puissiez éviter certaines complications résultant des différences entre les deux projets.
Vous ne savez pas en quoi ces options diffèrent ? Lisez le guide pour choisir un contrôleur d'entrée, partie 4 : Options du contrôleur d'entrée NGINX sur notre blog.
Pour faire la distinction entre les deux projets dans le reste de cet article, nous désignons le contrôleur d'entrée NGINX maintenu par la communauté Kubernetes ( kubernetes/ingress-nginx ) par le terme « contrôleur d'entrée communautaire » et celui maintenu par F5 NGINX ( nginxinc/kubernetes-ingress ) par le terme « contrôleur d'entrée NGINX ».
Il existe deux manières de migrer du contrôleur d'entrée de la communauté vers le contrôleur d'entrée NGINX :
Avec cette option de migration, vous utilisez la ressource standard Kubernetes Ingress pour définir les capacités principales et les ressources NGINX Ingress pour enrichir votre configuration avec plus de fonctionnalités et une plus grande simplicité d’utilisation.
Les définitions de ressources personnalisées (CRD) pour les ressources NGINX Ingress – VirtualServer, VirtualServerRoute, TransportServer, GlobalConfiguration et Policy – vous permettent de déléguer facilement le contrôle de différentes sections de la configuration à plusieurs équipes (comme AppDev et sécurité) tout en assurant une meilleure sécurité et validation de la configuration.
Le tableau établit la correspondance entre la configuration de la terminaison SSL et le routage basé sur le chemin en couche 7 dans le champ spec
de la ressource Kubernetes Ingress standard et le champ spec
de la ressource NGINX VirtualServer. La syntaxe et l’indentation diffèrent légèrement entre ces deux ressources, mais elles remplissent les mêmes fonctions Ingress essentielles.
Ressource Kubernetes Ingress | Ressource VirtualServer NGINX |
---|---|
|
|
Avec le contrôleur Ingress communautaire, un objet API Kubernetes ConfigMap est le seul moyen d'exposer les services TCP et UDP .
Avec NGINX Ingress Controller, les ressources TransportServer offrent un large éventail d’options pour l’équilibrage de charge TCP/UDP et TLS Passthrough. Vous utilisez les ressources TransportServer avec les ressources GlobalConfiguration pour gérer les connexions entrantes et sortantes.
Pour en savoir plus, consultez le support des services TCP, UDP et TLS Passthrough dans les ressources NGINX Ingress sur notre blog.
Les déploiements Kubernetes de niveau production doivent souvent étendre les règles d’entrée de base pour implémenter des cas d’utilisation avancés, notamment les déploiements Canary et Blue-Green, la limitation du trafic, la manipulation du trafic entrant-sortant, etc.
Le contrôleur Ingress communautaire prend en charge de nombreux cas d'utilisation grâce aux annotations Kubernetes. Cependant, beaucoup de ces annotations reposent sur des extensions Lua personnalisées spécifiques à certaines définitions de ressources NGINX Ingress, ce qui les rend inadaptées pour mettre en œuvre des fonctionnalités avancées dans un environnement de production stable et pris en charge.
Dans les sections suivantes, vous découvrirez comment convertir les annotations du contrôleur d'entrée communautaire en ressources pour le contrôleur d'entrée NGINX.
Même si vous appliquez des modifications de code fréquentes à vos charges de travail de conteneur de production, vous devez continuer à servir vos utilisateurs existants. Les déploiements Canary et Blue-Green vous permettent de le faire, et vous pouvez les exécuter sur le plan de données NGINX Ingress Controller pour obtenir des mises à jour stables et prévisibles dans les environnements Kubernetes de niveau production.
Le tableau présente les champs des ressources NGINX VirtualServer et VirtualServerRoute qui correspondent aux annotations du contrôleur d’Ingress communautaire pour les déploiements canari.
Le contrôleur Ingress de la communauté évalue les annotations canari dans cet ordre de priorité :
nginx.ingress.kubernetes.io/canary-by-header
nginx.ingress.kubernetes.io/canary-by-cookie
nginx.ingress.kubernetes.io/canary-by-weight
Pour que NGINX Ingress Controller les évalue de la même manière, ils doivent apparaître dans cet ordre dans le manifeste NGINX VirtualServer ou VirtualServerRoute.
Contrôleur d'entrée communautaire | NGINX Ingress Controller |
---|---|
|
|
|
|
|
|
|
|
Dans les environnements de microservices, où les applications sont éphémères par nature et donc plus susceptibles de renvoyer des réponses d'erreur, les équipes DevOps utilisent largement les politiques de contrôle du trafic – telles que la coupure de circuit et la limitation du débit et de la connexion – pour éviter les conditions d'erreur lorsque les applications ne sont pas saines ou ne fonctionnent pas comme prévu.
Le tableau présente les champs des ressources NGINX VirtualServer et VirtualServerRoute correspondant aux annotations du contrôleur Ingress communautaire pour la limitation de débit, les erreurs HTTP personnalisées, un backend par défaut personnalisé et la réécriture d’URI.
Contrôleur d'entrée communautaire | NGINX Ingress Controller |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Comme le montre le tableau, au moment où nous rédigeons ceci, les ressources NGINX Ingress ne disposent pas de champs traduisant directement ces quatre annotations des contrôleurs Ingress communautaires. Vous devez donc utiliser des extraits. Nous prévoyons d’ajouter la prise en charge directe de ces quatre annotations via les ressources Policy dans les prochaines versions du contrôleur NGINX Ingress.
nginx.ingress.kubernetes.io/limit-connections
nginx.ingress.kubernetes.io/limit-rate
nginx.ingress.kubernetes.io/limit-rate-after
nginx.ingress.kubernetes.io/limit-whitelist
Manipuler les en-têtes HTTP s’avère utile dans de nombreux cas, car ils contiennent des informations supplémentaires cruciales pour les systèmes impliqués dans une transaction HTTP. Par exemple, le contrôleur Ingress communautaire vous permet d’activer et de configurer les en-têtes cross‑origin resource sharing (CORS), utilisés par les applications AJAX lorsque le code JavaScript côté client d’un navigateur se connecte à une application ou un serveur web en arrière-plan.
Le tableau présente les champs des ressources NGINX VirtualServer et VirtualServerRoute liés aux annotations du contrôleur Ingress communautaire pour la gestion des en-têtes.
Contrôleur d'entrée communautaire | NGINX Ingress Controller |
---|---|
|
|
Il existe d’autres fonctionnalités de proxy et d’équilibrage de charge que vous souhaiterez peut-être configurer dans NGINX Ingress Controller en fonction du cas d’utilisation spécifique. Ces fonctionnalités incluent la définition de l’algorithme d’équilibrage de charge ainsi que les paramètres de délai d’expiration et de mise en mémoire tampon pour les connexions proxy.
Le tableau présente les instructions du champ upstream
des ressources NGINX VirtualServer et VirtualServerRoute, qui correspondent aux annotations du contrôleur Ingress communautaire pour l’équilibrage de charge NGINX personnalisé, les délais d’attente du proxy, la mise en tampon du proxy et le routage des connexions vers l’adresse IP et le port Cluster d’un service.
Contrôleur d'entrée communautaire | NGINX Ingress Controller |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Un service mesh est particulièrement utile dans un environnement de confiance zéro strict, où les applications distribuées au sein d’un cluster communiquent de manière sécurisée en s’authentifiant mutuellement. Que se passerait-il si nous devions imposer le même niveau de sécurité au trafic entrant et sortant du cluster (trafic nord-sud) ?
Nous pouvons configurer l’authentification mTLS au niveau de la couche Ingress Controller afin que les systèmes d’extrémité des connexions externes s’authentifient mutuellement en présentant un certificat valide.
Le tableau présente les champs des ressources Policy NGINX correspondant aux annotations du contrôleur Ingress communautaire pour l’authentification par certificat client et l’authentification par certificat backend.
Contrôleur d'entrée communautaire | NGINX Ingress Controller |
---|---|
|
|
|
|
Le tableau présente les champs des ressources Policy NGINX, exclusives au contrôleur Ingress NGINX basé sur NGINX Plus, qui correspondent aux annotations des contrôleurs Ingress communautaires pour la persistance de session (affinité).
Contrôleur d'entrée communautaire | NGINX Ingress Controller |
---|---|
|
|
La deuxième option pour migrer du contrôleur Ingress communautaire vers le contrôleur Ingress NGINX consiste à utiliser uniquement les annotations et les ConfigMaps dans la ressource Ingress Kubernetes standard, et éventuellement à s’appuyer sur un traitement de type « master/minion ». Vous conservez ainsi toute la configuration dans l’objet Ingress.
Note : Avec cette méthode, ne modifiez pas le champ spec
de la ressource Ingress.
Le tableau suivant décrit les annotations du contrôleur Ingress de la communauté qui correspondent directement aux annotations prises en charge par NGINX Ingress Controller.
1Le contrôleur Ingress communautaire utilise Lua pour implémenter certains de ses algorithmes d’équilibrage de charge. NGINX Ingress Controller n’a pas d’équivalent pour tous.
2Redirige le trafic HTTP vers HTTPS. Le contrôleur Ingress communautaire implémente cela avec du code Lua, tandis que le contrôleur Ingress NGINX utilise les conditions if
NGINX natives.
Le tableau suivant décrit les annotations du contrôleur d’entrée de la communauté qui correspondent directement aux annotations prises en charge par le contrôleur d’entrée NGINX basé sur NGINX Plus.
Contrôleur d'entrée communautaire | Contrôleur d'entrée NGINX basé sur NGINX Plus |
---|---|
|
|
Note: Le contrôleur d'entrée NGINX basé sur NGINX Plus dispose d'annotations supplémentaires pour les fonctionnalités que le contrôleur d'entrée de la communauté ne prend pas du tout en charge, notamment les contrôles de santé actifs et l'authentification à l'aide de jetons Web JSON (JWT).
Le tableau suivant mappe les clés ConfigMap du contrôleur d'entrée de la communauté à leurs clés ConfigMap du contrôleur d'entrée NGINX directement correspondantes. Notez qu’une poignée de noms de clés ConfigMap sont identiques. De plus, le contrôleur d’entrée de la communauté et le contrôleur d’entrée NGINX disposent tous deux de clés ConfigMaps que l’autre n’a pas (non affichées dans le tableau).
Vous pouvez migrer du contrôleur Ingress communautaire vers le contrôleur NGINX Ingress en utilisant soit des ressources NGINX Ingress personnalisées, soit la ressource Ingress Kubernetes standard avec annotations et ConfigMaps. La première option offre un éventail plus large de fonctionnalités réseau, elle convient donc mieux aux environnements Kubernetes en production.
Cet article est un extrait de notre eBook complet, Gérer le trafic Kubernetes avec F5 NGINX : Un guide pratique . Téléchargez-le gratuitement dès aujourd'hui .
Essayez dès aujourd'hui le contrôleur d'entrée NGINX basé sur NGINX Plus dans le cadre d'un essai gratuit de 30 jours ou contactez-nous pour discuter de vos cas d'utilisation .
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."