BLOG | NGINX

Contrôleurs d'entrée NGINX et NGINX Plus pour l'équilibrage de charge Kubernetes

NGINX-Partie-de-F5-horiz-black-type-RGB
Michael Pleshakov Miniature
Michel Pleshakov
Publié le 05 décembre 2016

L’exécution et la gestion d’applications de microservices dans des conteneurs à grande échelle sur un cluster de machines est une tâche difficile. Kubernetes vous aide à relever le défi en vous offrant une solution puissante pour l'orchestration des conteneurs. Il comprend plusieurs fonctionnalités importantes, telles que la tolérance aux pannes, la mise à l'échelle automatique, les mises à jour continues, le stockage, la découverte de services et l'équilibrage de charge.

Dans cet article de blog, nous expliquons comment utiliser NGINX Open Source ou NGINX Plus avec Ingress , le framework d'équilibrage de charge Kubernetes intégré pour le trafic HTTP. Ingress vous permet de configurer des règles qui contrôlent le routage du trafic externe vers les services de votre cluster Kubernetes. Vous pouvez choisir n’importe quel équilibreur de charge qui fournit un contrôleur d’entrée , qui est un logiciel que vous déployez dans votre cluster pour intégrer Kubernetes et l’équilibreur de charge. Nous vous montrons ici comment configurer l'équilibrage de charge pour une application de microservices avec Ingress et les contrôleurs Ingress que nous fournissons pour NGINX Plus et NGINX.

[Éditeur – Les contrôleurs précédemment séparés pour NGINX et NGINX Plus ont été fusionnés en un seul contrôleur d’entrée pour les deux.]

Dans cet article de blog, nous examinons uniquement l’équilibrage de charge HTTP pour Kubernetes avec Ingress. Pour en savoir plus sur les autres options d’équilibrage de charge, consultez Équilibrage de charge des services Kubernetes avec NGINX Plus sur notre blog.

Note: Des instructions complètes pour les procédures décrites dans cet article de blog sont disponibles dans notre référentiel GitHub . Cet article ne passe pas en revue toutes les étapes nécessaires, mais fournit plutôt des liens vers ces instructions.

Contrôleurs d'entrée pour NGINX et NGINX Plus

Avant de déployer l’exemple d’application et de configurer l’équilibrage de charge, nous devons choisir un équilibreur de charge et déployer le contrôleur d’entrée correspondant.

Un contrôleur Ingress est un logiciel qui intègre un équilibreur de charge particulier avec Kubernetes. Nous avons développé un contrôleur Ingress pour NGINX Open Source et NGINX Plus, désormais disponible sur notre référentiel GitHub . Il existe également d'autres implémentations créées par des tiers ; pour en savoir plus, visitez la page Ingress Controllers du référentiel GitHub pour Kubernetes.

Pour obtenir des instructions complètes sur le déploiement du contrôleur Ingress NGINX ou NGINX Plus dans votre cluster, consultez notre référentiel GitHub .

L'exemple d'application de microservices

Notre exemple d’application est une application Web de microservices typique composée de plusieurs services, chacun déployé séparément. L'application, appelée café , vous permet de commander soit du thé via le service à thé , soit du café via le service à café . Vous indiquez votre préférence de boisson avec l'URI de votre requête HTTP : Les URI se terminant par /tea vous donnent droit à du thé et les URI se terminant par /coffee vous donnent droit à du café. Les connexions à l'application doivent être sécurisées avec SSL/TLS.

Le diagramme ci-dessous illustre conceptuellement l'application, l'équilibreur de charge NGINX Plus jouant le rôle important de routage des requêtes client vers le service approprié ainsi que de sécurisation des connexions client avec SSL/TLS.

L'exemple d'application de microservices « café » fourni avec les contrôleurs d'entrée NGINX et NGINX Plus illustre l'équilibrage de charge de Kubernetes

Pour déployer l'application dans votre cluster, suivez les instructions de notre référentiel GitHub .

Configuration de l'équilibrage de charge Kubernetes via Ingress

Notre application de café nécessite que l'équilibreur de charge fournisse deux fonctions :

  • Routage basé sur l'URI de la requête (également appelé routage basé sur le chemin )
  • Terminaison SSL/TLS

Pour configurer l’équilibrage de charge avec Ingress, vous définissez des règles dans une ressource Ingress . Les règles spécifient comment acheminer le trafic externe vers les services de votre cluster.

Dans la ressource, vous pouvez définir plusieurs serveurs virtuels, chacun pour un nom de domaine différent. Un serveur virtuel correspond généralement à une seule application de microservices déployée dans le cluster. Pour chaque serveur, vous pouvez :

  • Spécifiez plusieurs règles basées sur le chemin. Le trafic est envoyé à différents services dans une application en fonction de l'URI de la demande.
  • Configurez la terminaison SSL/TLS en référençant un certificat et une clé SSL/TLS.

Vous pouvez trouver une explication plus détaillée d'Ingress, avec des exemples, sur la page de documentation d'Ingress .

Voici la ressource Ingress ( cafe‑ingress.yaml ) pour l'application café :

 

En l'examinant ligne par ligne, nous voyons :

  • À la ligne 4, nous nommons la ressource cafe‑ingress .
  • Dans les lignes 6 à 9, nous configurons la terminaison SSL/TLS :

    • À la ligne 9, nous référençons une ressource secrète par son nom cafe‑secret . Cette ressource contient le certificat et la clé SSL/TLS et doit être déployée avant la ressource Ingress.
    • À la ligne 8, nous appliquons le certificat et la clé à notre serveur virtuel cafe.example.com .
  • À la ligne 11, nous définissons un serveur virtuel avec le nom de domaine cafe.example.com .
  • Dans les lignes 13 à 21, nous définissons deux règles basées sur le chemin :

    • La règle définie dans les lignes 14 à 17 indique à l’équilibreur de charge de distribuer les requêtes avec l’URI /tea parmi les conteneurs du service tea , qui est déployé avec le nom tea-svc dans le cluster.
    • La règle définie dans les lignes 18 à 21 indique à l’équilibreur de charge de distribuer les requêtes avec l’URI /coffee parmi les conteneurs du service coffee , qui est déployé avec le nom coffee-svc dans le cluster.
    • Les deux règles demandent à l’équilibreur de charge de distribuer les requêtes sur le port 80 du service correspondant.

Pour obtenir des instructions complètes sur le déploiement des ressources Ingress et Secret dans le cluster, consultez notre référentiel GitHub .

Tester l'application

Une fois que nous avons déployé le contrôleur NGINX Plus Ingress, notre application, la ressource Ingress et la ressource Secret, nous pouvons tester l'application.

Lorsque nous faisons une demande de thé avec l'URI /tea , dans le navigateur, nous voyons une page générée par le service de thé .

L'exemple de microservice « thé » fourni avec les contrôleurs d'entrée NGINX et NGINX Plus pour l'équilibrage de charge Kubernetes renvoie une page d'index avec les détails de la demande

Nous espérons que vous ne serez pas trop déçu du fait que les services de thé et de café ne vous fournissent pas réellement de boissons, mais plutôt des informations sur les contenants dans lesquels ils fonctionnent et les détails de votre demande. Il s’agit notamment du nom d’hôte et de l’adresse IP du conteneur, de l’URI de la demande et de l’adresse IP du client. Chaque fois que nous actualisons la page, nous obtenons une réponse d'un conteneur différent.

Nous pouvons également nous connecter au tableau de bord de surveillance des activités en direct de NGINX Plus et voir les mesures d’équilibrage de charge en temps réel de NGINX Plus et de chaque conteneur de notre application.

Le tableau de bord de surveillance des activités en direct de NGINX Plus affiche les demandes d'équilibrage de charge de NGINX Plus entre les microservices de l'exemple d'application « café » fourni avec les contrôleurs NGINX et NGINX Plus Ingress pour l'équilibrage de charge Kubernetes

Extensions du contrôleur d'entrée

Ingress fournit une fonctionnalité d’équilibrage de charge HTTP de base. Cependant, il arrive souvent que les exigences d’équilibrage de charge de vos applications soient plus complexes et ne soient donc pas prises en charge par Ingress. Pour répondre à certaines de ces exigences, nous avons ajouté un certain nombre d’extensions au contrôleur Ingress. De cette façon, vous pouvez toujours profiter de l’utilisation des ressources Kubernetes pour configurer l’équilibrage de charge (au lieu de devoir configurer directement l’équilibreur de charge), mais en exploitant la possibilité d’utiliser des fonctionnalités d’équilibrage de charge avancées.

Pour une liste complète des extensions disponibles, consultez notre référentiel GitHub .

De plus, nous fournissons un mécanisme pour personnaliser la configuration NGINX au moyen de ressources Kubernetes, via des ressources Config Maps ou des annotations. Par exemple, vous pouvez personnaliser les valeurs des directives proxy_connect_timeout ou proxy_read_timeout .

Lorsque vos exigences d’équilibrage de charge vont au-delà de celles prises en charge par Ingress et nos extensions, nous suggérons une approche différente pour déployer et configurer NGINX Plus qui n’utilise pas le contrôleur Ingress. Lisez Équilibrage de charge des services Kubernetes avec NGINX Plus sur notre blog pour en savoir plus.

Avantages du NGINX Plus avec le contrôleur

Avec NGINX Plus, le contrôleur Ingress offre les avantages suivants en plus de ceux dont vous bénéficiez avec NGINX :

  • Stabilité dans un environnement hautement dynamique – Chaque fois qu’un changement se produit dans le nombre de pods de services exposés via Ingress, le contrôleur Ingress doit mettre à jour la configuration NGINX ou NGINX Plus pour refléter les changements. Avec NGINX Open Source, vous devez modifier le fichier de configuration manuellement et recharger la configuration. Avec NGINX Plus, vous pouvez utiliser l'API de reconfiguration dynamique pour mettre à jour la configuration sans recharger le fichier de configuration. Cela évite l'augmentation potentielle de l'utilisation de la mémoire et la surcharge globale du système qui peuvent se produire lorsque les rechargements de configuration sont très fréquents.
  • Statistiques en temps réel – NGINX Plus fournit des statistiques avancées en temps réel , auxquelles vous pouvez accéder via une API ou sur le tableau de bord intégré. Cela peut vous donner un aperçu des performances de NGINX Plus et de vos applications.
  • Persistance de session – Lorsque vous activez la persistance de session, NGINX Plus s’assure que toutes les demandes du même client sont toujours transmises au même conteneur backend à l’aide de la méthode du cookie collant .

Résumé

Kubernetes fournit un équilibrage de charge HTTP intégré pour acheminer le trafic externe vers les services du cluster avec Ingress. NGINX et NGINX Plus s'intègrent à l'équilibrage de charge Kubernetes, prenant entièrement en charge les fonctionnalités Ingress et fournissant également des extensions pour prendre en charge les exigences d'équilibrage de charge étendues.

Pour tester NGINX Plus et le contrôleur Ingress, démarrez votre essai gratuit de 30 jours dès aujourd'hui 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."