BLOG | NGINX

Automatisez l'équilibrage de charge TCP vers les services Kubernetes sur site avec NGINX

NGINX-Partie-de-F5-horiz-black-type-RGB
Miniature de Chris Akker
Chris Akker
Publié le 22 août 2023

Vous êtes un développeur d’applications moderne. Vous utilisez une collection d’outils open source et peut-être certains outils commerciaux pour écrire, tester, déployer et gérer de nouvelles applications et de nouveaux conteneurs. Vous avez choisi Kubernetes pour exécuter ces conteneurs et pods dans des environnements de développement, de test, de préparation et de production. Vous avez adhéré aux architectures et aux concepts des microservices, de la Cloud Native Computing Foundation et d’autres normes industrielles modernes.

Au cours de ce voyage, vous avez découvert que Kubernetes est effectivement puissant. Mais vous avez probablement aussi été surpris de constater à quel point cela peut être difficile, inflexible et frustrant. La mise en œuvre et la coordination des modifications et des mises à jour des routeurs, des pare-feu, des équilibreurs de charge et d’autres périphériques réseau peuvent devenir écrasantes, en particulier dans votre propre centre de données ! C’est suffisant pour faire pleurer un développeur.

La manière dont vous gérez ces défis dépend en grande partie de l’endroit et de la manière dont vous exécutez Kubernetes (en tant que service géré ou sur site). Cet article aborde l’équilibrage de charge TCP, un domaine clé où les choix de déploiement ont un impact sur la facilité d’utilisation.

Équilibrage de charge TCP avec Kubernetes géré (également appelé l'option facile)

Si vous utilisez un service géré comme un fournisseur de cloud public pour Kubernetes, une grande partie de ces tâches réseau fastidieuses sont gérées pour vous. Avec une seule commande ( kubectl apply -f loadbalancer.yaml ), le type de service LoadBalancer vous fournit une adresse IP publique, un enregistrement DNS et un équilibreur de charge TCP. Par exemple, vous pouvez configurer Amazon Elastic Load Balancer pour distribuer le trafic vers des pods contenant NGINX Ingress Controller et, à l'aide de cette commande, ne pas avoir à vous inquiéter lorsque les backends changent. C'est si facile que nous parions que vous le prenez pour acquis !

Équilibrage de charge TCP avec Kubernetes sur site (également appelé l'option difficile)

Avec les clusters sur site, c’est un scénario totalement différent. Vous ou vos pairs du réseau devez fournir les éléments de réseautage. Vous vous demandez peut-être : « Pourquoi est-il si difficile d’amener les utilisateurs vers mes applications Kubernetes ? » La réponse est simple mais un peu choquante : Le type de service LoadBalancer, la porte d’entrée de votre cluster, n’existe pas réellement.

Pour exposer vos applications et services en dehors du cluster, votre équipe réseau a probablement besoin de tickets, d’approbations, de procédures et peut-être même d’examens de sécurité, le tout avant de reconfigurer son équipement. Ou alors vous devrez peut-être tout faire vous-même, ralentissant ainsi considérablement le rythme de livraison des applications. Pire encore, vous n’osez pas apporter de modifications aux services Kubernetes, car si le NodePort change, le trafic pourrait être bloqué ! Et nous savons tous à quel point les utilisateurs aiment recevoir des erreurs 500. Votre patron l’apprécie probablement encore moins.

Une meilleure solution pour l'équilibrage de charge TCP sur site : Équilibreur de charge NGINX pour Kubernetes

Vous pouvez transformer « l’option difficile » en « option facile » avec notre nouveau projet : Équilibreur de charge NGINX pour Kubernetes . Ce projet gratuit est un contrôleur Kubernetes qui surveille NGINX Ingress Controller et met automatiquement à jour une instance NGINX Plus externe configurée pour l'équilibrage de charge. De conception très simple, il est simple à installer et à utiliser. Avec cette solution en place, vous pouvez mettre en œuvre l'équilibrage de charge TCP dans les environnements sur site, garantissant que les nouvelles applications et les nouveaux services sont immédiatement détectés et disponibles pour le trafic, sans avoir besoin d'intervenir.

Architecture et flux

L'équilibreur de charge NGINX pour Kubernetes se trouve à l'intérieur d'un cluster Kubernetes. Il est enregistré auprès de Kubernetes pour surveiller le service nginx-ingress (NGINX Ingress Controller). En cas de modification des backends, NGINX Loadbalancer for Kubernetes collecte les adresses IP des travailleurs et les numéros de port TCP NodePort, puis envoie les adresses IP : ports à NGINX Plus via l' API NGINX Plus . Les serveurs en amont NGINX sont mis à jour sans rechargement requis , et NGINX Plus équilibre la charge du trafic vers les serveurs en amont et les NodePorts Kubernetes appropriés. Des instances NGINX Plus supplémentaires peuvent être ajoutées pour atteindre une haute disponibilité .

Diagramme de l'équilibreur de charge NGINX en action

Un aperçu de NGINX Loadbalancer pour Kubernetes en action

Dans la capture d'écran ci-dessous, il y a deux fenêtres qui montrent que NGINX Loadbalancer pour Kubernetes est déployé et fait son travail :

  1. Type de service – LoadBalancer (pour nginx-ingress )
  2. IP externe – Se connecte aux serveurs NGINX Plus
  3. Ports – NodePort est mappé à 443:30158 avec les serveurs NGINX en amont correspondants (comme indiqué dans le tableau de bord en temps réel de NGINX Plus)
  4. Journaux – Indique que NGINX Loadbalancer pour Kubernetes envoie correctement les données à NGINX Plus

Note : Dans cet exemple, les nœuds de travail Kubernetes sont 10.1.1.8 et 10.1.1.10

Capture d'écran de NGINX Loadbalancer pour Kubernetes en action

Commencez dès aujourd'hui

Si vous êtes frustré par les défis de mise en réseau à la périphérie de votre cluster Kubernetes, essayez le projet et faites-nous savoir ce que vous en pensez. Le code source de NGINX Loadbalancer pour Kubernetes est open source (sous la licence Apache 2.0) avec toutes les instructions d'installation disponibles sur GitHub .  

Pour nous faire part de vos commentaires, laissez-nous un commentaire dans le dépôt ou envoyez-nous un message sur le Slack de la communauté NGINX .


« 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."