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 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 :
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 :
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 obtenir des instructions complètes sur le déploiement des ressources Ingress et Secret dans le cluster, consultez notre référentiel GitHub .
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é .
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 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.
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."