Note de la rédaction – Cet article est un extrait de notre livre numérique complet, « Gestion du trafic Kubernetes avec F5 NGINX : guide pratique ». Téléchargez-le gratuitement dès aujourd’hui.
De nombreuses organisations qui mettent en place Kubernetes pour la première fois commencent par utiliser le contrôleur Ingress NGINX développé et maintenu par la communauté Kubernetes (kubernetes/ingress-nginx). Toutefois, à mesure que leurs déploiements Kubernetes gagnent en maturité, certaines organisations constatent qu’elles ont besoin de fonctionnalités avancées ou souhaitent bénéficier d’un support commercial tout en conservant NGINX comme plan de données.
Une option consiste à migrer vers le contrôleur Ingress NGINX développé et maintenu par F5 NGINX (nginxinc/kubernetes-ingress). Nous fournissons ici des instructions complètes afin de vous éviter certaines complications liées aux différences entre les deux projets.
Vous ne savez pas exactement ce qui distingue ces options ? Consultez l’article « Guide pour choisir un contrôleur Ingress, 4e partie : les options de contrôleur Ingress NGINX » sur notre blog.
Afin de distinguer les deux projets dans la suite de cet article, nous désignons le contrôleur Ingress NGINX géré par la communauté Kubernetes (kubernetes/ingress-nginx) comme le « contrôleur Ingress communautaire » et celui géré par F5 NGINX (nginxinc/kubernetes-ingress) comme le « contrôleur Ingress NGINX ».
Il existe deux façons de migrer du contrôleur Ingress communautaire vers NGINX Ingress Controller :
- Option 1 : migrer à l’aide des ressources NGINX Ingress
Il s’agit de la solution optimale, car les ressources NGINX Ingress prennent en charge l’ensemble plus étendu de fonctionnalités réseau Ingress nécessaires aux environnements Kubernetes de production. Pour en savoir plus sur les ressources NGINX Ingress, regardez notre webinaire, « Déploiements Kubernetes avancés avec NGINX Ingress Controller ». - Option 2 : migrer à l’aide de la ressource Ingress Kubernetes
Cette option est recommandée si vous souhaitez utiliser la ressource standard Ingress Kubernetes pour définir les règles d’équilibrage de charge Ingress.
Option 1 : migrer à l’aide des ressources Ingress NGINX
Avec cette option de migration, vous utilisez la ressource Ingress standard de Kubernetes pour définir les fonctionnalités de base et les ressources Ingress NGINX pour enrichir votre configuration avec des fonctionnalités accrues et une plus grande facilité 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 parties de la configuration à différentes équipes (telles que les équipes AppDev et de sécurité), tout en renforçant la sécurité et la validation de la configuration.
Configuration de la terminaison SSL et du routage HTTP basé sur les chemins
Le tableau établit la correspondance entre la configuration de la terminaison SSL et du routage de couche 7 basé sur les chemins dans le champ « spec » de la ressource Ingress Kubernetes standard et celle du champ « spec » de la ressource NGINX VirtualServer. La syntaxe et l’indentation diffèrent légèrement entre les deux ressources, mais celles-ci assurent les mêmes fonctions Ingress de base.
| Ressource Ingress Kubernetes | Ressource VirtualServer NGINX |
|---|---|
|
|
Configuration de l’équilibrage de charge TCP/UDP et du relais TLS
Avec le contrôleur Ingress communautaire, un objet d’API Kubernetes de type « ConfigMap » est le seul moyen d’exposer des 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. Les ressources TransportServer sont utilisées conjointement avec les ressources « GlobalConfiguration » pour contrôler les connexions entrantes et sortantes.
Pour plus d’informations, consultez l’article « Prise en charge des services TCP, UDP et TLS Passthrough dans les ressources NGINX Ingress » sur notre blog.
Convertir les annotations du contrôleur Ingress communautaire en ressources Ingress NGINX
Les déploiements Kubernetes de niveau production nécessitent souvent d’étendre les règles Ingress de base afin de mettre en œuvre des cas d’usage avancés, notamment les déploiements Canary et bleu-vert, la limitation du trafic, la manipulation du trafic entrant et sortant, et bien plus encore.
Le contrôleur Ingress communautaire met en œuvre bon nombre de ces cas d’utilisation à l’aide d’annotations Kubernetes. Cependant, nombre de ces annotations reposent sur des extensions Lua personnalisées propres à des définitions très spécifiques de ressources Ingress NGINX et ne conviennent donc pas à la mise en œuvre de fonctionnalités avancées dans un environnement de production stable et bénéficiant d’un support.
Dans les sections suivantes, nous expliquons comment convertir les annotations du contrôleur Ingress communautaire en ressources du contrôleur NGINX Ingress.
- Déploiements Canary
- Contrôle du trafic
- Manipulation des en-têtes
- Mise en proxy et équilibrage de charge
- Authentification mTLS
- Persistance de session (exclusivité NGINX Plus)
Déploiements canaris
Même lorsque vous déployez fréquemment des modifications de code sur vos charges de travail conteneurisées en production, vous devez continuer à servir vos utilisateurs existants. Les déploiements Canary et bleu-vert vous permettent de le faire. Vous pouvez les effectuer sur le plan de données de NGINX Ingress Controller afin de garantir des mises à jour stables et prévisibles dans des environnements Kubernetes adaptés à la production.
Le tableau présente les champs des ressources NGINX « VirtualServer et VirtualServerRoute » qui correspondent aux annotations du contrôleur Ingress communautaire pour les déploiements Canary.
Le contrôleur Ingress communautaire évalue les annotations de déploiement canari selon l’ordre de priorité suivant :
nginx.ingress.kubernetes.io/canary-by-headernginx.ingress.kubernetes.io/canary-by-cookienginx.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 Ingress communautaire | Contrôleur Ingress NGINX |
|---|---|
|
|
|
|
|
|
|
|
Contrôle du trafic
Dans les environnements de microservices, où les applications sont par nature éphémères et donc plus susceptibles de renvoyer des réponses d’erreur, les équipes DevOps ont largement recours à des politiques de contrôle du trafic, telles que les coupe-circuits et la limitation du débit et du nombre de connexions, afin d’éviter les erreurs lorsque les applications sont défaillantes ou ne fonctionnent pas comme prévu.
Le tableau présente les champs des ressources NGINX « VirtualServer et VirtualServerRoute » qui correspondent aux annotations du contrôleur Ingress communautaire pour la limitation du débit, les erreurs HTTP personnalisées, un backend par défaut personnalisé et la réécriture d’URI.
| Community Ingress Controller | NGINX Ingress Controller |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Comme indiqué dans le tableau, à l’heure où nous écrivons ces lignes, les ressources Ingress de NGINX ne comportent aucun champ permettant de transposer directement les quatre annotations suivantes du contrôleur Ingress communautaire ; vous devez donc utiliser des extraits de configuration. La prise en charge directe de ces quatre annotations au moyen de ressources « Policy » est prévue dans de prochaines versions de NGINX Ingress Controller.
nginx.ingress.kubernetes.io/limit-connectionsnginx.ingress.kubernetes.io/limit-ratenginx.ingress.kubernetes.io/limit-rate-afternginx.ingress.kubernetes.io/limit-whitelist
Manipulation des en-têtes
La manipulation des en-têtes HTTP est utile dans de nombreux cas, car ils contiennent des informations supplémentaires importantes et pertinentes pour les systèmes impliqués dans une transaction HTTP. Par exemple, le contrôleur Ingress communautaire permet d’activer et de configurer les en-têtes de partage de ressources entre origines (CORS), utilisés avec les applications AJAX lorsque le code JavaScript frontal exécuté dans un navigateur se connecte à une application backend ou à un serveur web.
Le tableau présente les champs des ressources NGINX « VirtualServer et VirtualServerRoute » qui correspondent aux annotations du contrôleur Ingress communautaire relatives à la manipulation des en-têtes.
| Contrôleur Ingress communautaire | Contrôleur Ingress NGINX |
|---|---|
|
|
Proxy et équilibrage de charge
Selon votre cas d’usage, vous pouvez configurer d’autres fonctionnalités de proxy et de répartition de charge dans NGINX Ingress Controller. Celles-ci comprennent notamment le choix de l’algorithme de répartition de charge, ainsi que la configuration des délais d’expiration et de la mise en mémoire tampon pour les connexions faisant l’objet d’un proxy.
Le tableau présente les directives du champ upstream des ressources VirtualServer et VirtualServerRoute de NGINX qui correspondent aux annotations du contrôleur Ingress communautaire pour l’équilibrage de charge NGINX personnalisé, les délais d’expiration du proxy, la mise en mémoire tampon du proxy et le routage des connexions vers l’adresse IP du cluster et le port d’un service.
| Contrôleur Ingress communautaire | Contrôleur Ingress NGINX |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Authentification mTLS
Un maillage de services est particulièrement utile dans un environnement strict de confiance zéro, où les applications distribuées au sein d’un cluster communiquent de manière sécurisée en s’authentifiant mutuellement. Et 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 du contrôleur Ingress afin que les systèmes situés aux extrémités des connexions externes s’authentifient mutuellement en présentant un certificat valide.
Le tableau présente les champs des ressources Policy de NGINX qui correspondent aux annotations du contrôleur Ingress communautaire pour l’authentification par certificat client et l’authentification par certificat du serveur backend.
| Contrôleur Ingress communautaire | Contrôleur Ingress NGINX |
|---|---|
|
|
|
|
Persistance de session (exclusivité NGINX Plus)
Le tableau présente les champs des ressources Policy NGINX qui sont propres à NGINX Ingress Controller basé sur NGINX Plus et qui correspondent aux annotations du contrôleur Ingress communautaire relatives à la persistance de session (affinité).
| Contrôleur Ingress communautaire | Contrôleur Ingress NGINX |
|---|---|
|
|
Option 2 : migrer à l’aide de la ressource Ingress de Kubernetes
La deuxième option pour migrer du contrôleur Ingress communautaire vers NGINX Ingress Controller consiste à utiliser uniquement des annotations et des ConfigMaps dans la ressource Ingress standard de Kubernetes, et éventuellement à s’appuyer sur un traitement de type « maître/minion ». Ainsi, toute la configuration reste dans l’objet Ingress.
Remarque : Avec cette méthode, ne modifiez pas le champ spec de la ressource Ingress.
Configuration avancée avec des annotations
Le tableau suivant présente les annotations du contrôleur Ingress communautaire qui correspondent directement aux annotations prises en charge par NGINX Ingress Controller.
| Community Ingress Controller | NGINX Ingress Controller | NGINX Directive |
|---|---|---|
| N/A | ||
| Default:
|
||
|
||
|
||
|
||
|
||
|
||
|
||
| N/A | ||
|
|
N/A2 |
1Le contrôleur Ingress communautaire utilise Lua pour implémenter certains de ses algorithmes d’équilibrage de charge. NGINX Ingress Controller ne dispose pas d’un équivalent pour chacun d’entre eux.
2Redirige le trafic HTTP vers HTTPS. Le contrôleur Ingress communautaire met en œuvre cette fonctionnalité avec du code Lua, tandis que NGINX Ingress Controller utilise les conditions if natives de NGINX.
Le tableau suivant présente les annotations du contrôleur Ingress communautaire qui correspondent directement aux annotations prises en charge par le contrôleur Ingress NGINX basé sur NGINX Plus.
| Contrôleur Ingress communautaire | Contrôleur Ingress NGINX basé sur NGINX Plus |
|---|---|
|
|
Remarque : le contrôleur Ingress NGINX basé sur NGINX Plus dispose d’annotations supplémentaires pour des fonctionnalités que le contrôleur Ingress communautaire ne prend pas du tout en charge, notamment les contrôles d’intégrité actifs et l’authentification à l’aide de jetons Web JSON (JWT).
Configuration globale avec les ConfigMaps
Le tableau suivant établit la correspondance entre les clés ConfigMap du contrôleur Ingress communautaire et les clés ConfigMap équivalentes du contrôleur Ingress NGINX. Notez que certains noms de clés ConfigMap sont identiques. Par ailleurs, le contrôleur Ingress communautaire et le contrôleur Ingress NGINX possèdent chacun des clés ConfigMap qui n’existent pas chez l’autre (non indiquées dans le tableau).
Résumé
Vous pouvez migrer du contrôleur Ingress communautaire vers NGINX Ingress Controller en utilisant soit des ressources NGINX Ingress personnalisées, soit la ressource Ingress standard de Kubernetes avec des annotations et des ConfigMaps. La première option prend en charge un éventail plus large de fonctionnalités réseau et convient donc mieux aux environnements Kubernetes de production.
Cet article est un extrait de notre e-book complet, « Gestion du trafic Kubernetes avec F5 NGINX : guide pratique ». Téléchargez-le gratuitement dès aujourd’hui.
Essayez par vous-même le contrôleur Ingress NGINX basé sur NGINX Plus grâce à un essai gratuit de 30 jours dès aujourd’hui, ou contactez-nous pour discuter de vos cas d’utilisation.
À propos de l’auteur

Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.
Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.
Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.
Caches partagés avec les clusters de cache NGINX Plus, partie 1
Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.
Introduction aux microservices
Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.