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.
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 .
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.
Pour déployer l'application dans votre cluster, suivez les instructions de notre référentiel GitHub .
Notre application de café nécessite que l'équilibreur de charge fournisse deux fonctions :
Pour configurer la répartition de charge avec Ingress, vous établissez des règles dans une ressource Ingress. Ces règles définissent la manière d'orienter le trafic externe vers les services présents dans votre cluster.
Dans la ressource, vous pouvez configurer plusieurs serveurs virtuels, chacun associé à un nom de domaine différent. Un serveur virtuel correspond en général à une application de microservices unique déployée dans le cluster. Pour chaque serveur, vous avez la possibilité de :
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 cafe :
En l'examinant ligne par ligne, nous voyons :
Dans les lignes 6 à 9, nous configurons la terminaison SSL/TLS :
Dans les lignes 13 à 21, nous définissons deux règles basées sur le chemin :
Pour déployer complètement les ressources Ingress et Secret dans le cluster, référez-vous à notre répertoire GitHub.
Une fois que nous déployons le contrôleur Ingress NGINX Plus, notre application, la ressource Ingress et la ressource Secret, vous pouvez 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é .
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.
Ingress assure un équilibrage de charge HTTP basique. Souvent, vos besoins d’équilibrage de charge sont plus complexes et Ingress ne les prend pas en charge. Pour répondre à ces besoins, nous avons ajouté plusieurs extensions au contrôleur Ingress. Vous pouvez ainsi continuer à utiliser les ressources Kubernetes pour configurer l’équilibrage de charge, sans intervenir directement sur l’équilibreur, tout en profitant de fonctionnalités avancées.
Pour une liste complète des extensions disponibles, consultez notre référentiel GitHub .
Nous vous offrons également un moyen de personnaliser la configuration NGINX via les ressources Kubernetes, en utilisant les Config Maps ou les annotations. Par exemple, vous pouvez ajuster 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.
Avec NGINX Plus, le contrôleur Ingress offre les avantages suivants en plus de ceux dont vous bénéficiez avec NGINX :
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."