Rédacteur – Ce billet fait partie d’ une série en 10 parties :
Vous pouvez également télécharger l’ensemble complet des blogs sous forme d’eBook gratuit – Taking Kubernetes from Test to Production .
Lorsque les organisations commencent à expérimenter Kubernetes, elles ne réfléchissent souvent pas beaucoup au choix du contrôleur Ingress . Ils pourraient penser que tous les contrôleurs Ingress sont identiques et que, dans l’intérêt d’une mise en service rapide, il est plus simple de s’en tenir au contrôleur Ingress par défaut pour le framework Kubernetes qu’ils ont choisi. Et il est vrai que presque tous les contrôleurs Ingress conviennent parfaitement aux environnements de test ou de production à faible volume. Mais à mesure que vous évoluez, votre choix de contrôleur Ingress devient plus important. C'est parce que les contrôleurs Ingress peuvent fournir bien plus que la fonctionnalité de base consistant à déplacer votre trafic du point A au point B.
De la gestion avancée du trafic à la visibilité en passant par la sécurité intégrée, un contrôleur Ingress peut être l’un des outils les plus puissants de votre pile Kubernetes. En fait, chez F5 NGINX, nous considérons qu’il s’agit de la base de tout déploiement Kubernetes de niveau production . Mais de nombreux développeurs et équipes Platform Ops ne réalisent pas toute la puissance d'un contrôleur Ingress, ni les conséquences du choix d'un contrôleur qui ne peut pas évoluer. Le choix d'un contrôleur Ingress qui n'est pas évolutif ou qui ne protège pas les environnements complexes peut vous empêcher de sortir Kubernetes des tests et de le mettre en production. Dans cette série de blogs, nous visons à vous renseigner sur les bases des contrôleurs Ingress et à vous expliquer comment faire un choix judicieux qui offre les fonctionnalités et la sécurité dont vous avez besoin, aujourd'hui et demain.
Un contrôleur Ingress est un équilibreur de charge spécialisé qui gère le trafic de couche 4 et 7 entrant dans les clusters Kubernetes, et potentiellement le trafic qui en sort. Pour que nous soyons tous sur la même longueur d'onde, voici les termes que nous utilisons chez NGINX (et ils sont en grande partie les mêmes dans l'ensemble du secteur) :
Par défaut, les applications exécutées dans les pods Kubernetes (conteneurs) ne sont pas accessibles depuis le réseau externe, mais uniquement depuis d'autres pods au sein du cluster Kubernetes. Kubernetes dispose d’un objet de configuration intégré pour l’équilibrage de charge HTTP, appelé Ingress , qui définit comment les entités extérieures à un cluster Kubernetes peuvent se connecter aux pods représentés par un ou plusieurs services Kubernetes.
Lorsque vous devez permettre un accès externe à vos services Kubernetes, vous créez une ressource Ingress pour définir les règles de connexion, notamment le chemin URI, le nom du service support et d’autres détails. Cependant, la ressource Ingress ne fonctionne pas sans autre intervention. Vous devez déployer et configurer une application contrôleur Ingress (via l’API Kubernetes) pour appliquer les règles spécifiées dans les ressources Ingress.
Kube-Proxy
par défaut, vous offrant des contrôles supplémentaires comme ceux fournis par les contrôleurs de distribution d'applications (ADC) et les proxys inverses dans les environnements non Kubernetes.Quand vient le moment de choisir un contrôleur Ingress, vous pouvez être tenté de partir d’une liste de fonctionnalités, mais vous risqueriez d’adopter un contrôleur Ingress riche en fonctions sans qu’il réponde vraiment aux besoins de votre entreprise. Prenez plutôt le temps d’étudier deux aspects qui déterminent son efficacité pour votre équipe et vos applications : les cas d’utilisation (les défis qu’il doit résoudre) et les ressources allouées (comment vous allez le financer). Nous développerons ces deux points dans la suite de ce blog.
Le cas d'utilisation principal d'un contrôleur Ingress est la gestion du trafic. Vous souhaitez donc probablement que le contrôleur Ingress gère un ou plusieurs de ces cas d'utilisation courants :
Mais vous n’êtes pas obligé de vous limiter à un seul rôle : la plupart des contrôleurs Ingress offrent bien plus que la gestion du trafic. En sollicitant le contrôleur Ingress pour résoudre plusieurs défis, vous réduisez la taille et la complexité de votre infrastructure, tout en déchargeant les exigences non fonctionnelles des applications vers le contrôleur Ingress. Découvrons quatre usages innovants des contrôleurs Ingress qui renforcent la sécurité, la souplesse et la scalabilité de vos déploiements Kubernetes, tout en optimisant l’usage de vos ressources.
L'absence de visibilité sur le cluster Kubernetes constitue un des principaux défis en environnement de production, rendant le dépannage et la résilience plus difficiles. Puisque les contrôleurs Ingress se situent à la périphérie de vos clusters Kubernetes et traitent chaque segment de trafic, ils sont idéalement placés pour fournir des informations qui vous aideront à résoudre, voire à prévenir, deux problèmes fréquents : la lenteur des applications et l'épuisement des ressources dans le cluster ou la plateforme Kubernetes. Pour que le contrôleur Ingress améliore la visibilité, il doit :
À moins que vous ne cherchiez à effectuer une manipulation de requête-réponse dans Kubernetes, il est très probable que le contrôleur Ingress puisse également servir de passerelle API. En fonction de son ensemble de fonctionnalités, un contrôleur Ingress peut être en mesure de fournir des fonctions de passerelle API de base, notamment la terminaison TLS, l’authentification client, la limitation du débit, le contrôle d’accès précis et le routage des requêtes aux couches 4 à 7.
Le déchargement de l’authentification des informations de connexion de vos services Kubernetes vers votre contrôleur Ingress peut résoudre deux problèmes.
Ce n’est pas que le contrôleur Ingress fasse office de pare-feu applicatif (WAF), mais plutôt que vous puissiez intégrer le WAF directement avec le contrôleur Ingress. Même si un WAF peut être déployé à divers endroits, à l’intérieur ou à l’extérieur de Kubernetes, pour la majorité des organisations, le choix le plus efficace reste de l’installer dans le même pod que le contrôleur Ingress. Ce scénario convient parfaitement lorsque SecOps ou DevSecOps pilotent les politiques de sécurité et qu’une approche fine, au niveau de chaque service ou URI, s’impose. Ainsi, vous pouvez utiliser l’API Kubernetes pour définir vos politiques et les associer aux services concernés. De plus, le contrôle d’accès basé sur les rôles (RBAC) offert par le contrôleur Ingress permet à SecOps d’appliquer les politiques à chaque écouteur, tandis que DevOps configure des politiques par ressource Ingress.
Chaque contrôleur Ingress entraîne un coût… même les gratuits et logiciels libres (vous avez peut-être entendu l'expression « gratuit comme un chiot »). Certains coûts se traduisent par des montants précis dans votre budget, d’autres dépendent du temps que votre équipe devra consacrer pour gérer les conséquences liées à votre choix de contrôleur Ingress (complexité accrue, manque de portabilité, et plus encore). Examinons les coûts – en temps et en argent – que vous devez considérer pour budgéter un contrôleur Ingress.
La budgétisation des effectifs peut s’avérer bien plus difficile que celle des postes à coûts fixes, en particulier lorsque vous essayez de financer un projet dans un espace inconnu. Vous devez poser des questions telles que :
Nous avons observé une tendance dans l’industrie vers la consolidation des outils et de la propriété sous le domaine des équipes NetOps. Bien que cela puisse contribuer grandement à simplifier votre pile et à améliorer la sécurité, nous préconisons une duplication réfléchie des outils en fonction des objectifs de l'équipe . Il est logique que l'équipe NetOps gère les outils de périmètre (comme les équilibreurs de charge externes), car ils se concentrent sur la plate-forme plus large, mais les équipes DevOps se soucient surtout des services déployés à proximité du code de l'application et ont besoin de plus d'agilité et d'un contrôle plus précis que ceux qu'elles obtiennent avec les outils NetOps. Les outils Kubernetes, y compris le contrôleur Ingress, ont les meilleures chances de succès lorsqu'ils sont sélectionnés par DevOps. Cela ne veut pas dire que vous devez accorder aux développeurs une totale liberté de choix en matière d’outils ! Une standardisation brutale des outils au sein de Kubernetes reste une bonne pratique.
Lorsque vous débutez avec Kubernetes, vous ne prévoyez souvent pas beaucoup de budget pour les outils ou le support. Si vous avez les ressources humaines nécessaires pour accompagner pleinement un contrôleur Ingress qui demande un suivi accru, un budget financier limité suffit… au départ. Mais à mesure que votre investissement dans Kubernetes grandit, vous pouvez constater des contraintes sur les fonctionnalités de l’outil, ou vouloir que votre équipe se concentre sur d’autres priorités. C’est à ce moment que vous préférez investir dans un outil plus simple d’utilisation, plus stable, offrant des fonctionnalités d’entreprise et un support dédié.
Lorsque vous êtes prêt à payer pour un contrôleur Ingress, sachez que le modèle de licence est important. Sur la base des modèles de tarification traditionnels en dehors de Kubernetes, la tarification des contrôleurs Ingress est souvent « par instance » ou « par proxy Ingress ». Bien qu'il existe des cas d'utilisation où cela a encore du sens dans Kubernetes, l'octroi d'une licence pour un contrôleur Ingress sur une base « par cluster » signifie plutôt que vous payez en fonction de la location de l'application plutôt que du « nombre de proxys ».
Voici nos recommandations pour différents scénarios :
Maintenant que vous avez une idée de vos besoins, l'étape suivante consiste à décider en équipe de votre tolérance aux risques qu'un contrôleur Ingress pourrait introduire et à déterminer comment vous aurez besoin du contrôleur Ingress pour évoluer à mesure que vous développez votre déploiement Kubernetes. Nous abordons ces sujets dans la deuxième partie .
« 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."