BLOG | NGINX

Réduisez la complexité avec Kubernetes de niveau production

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette de Jenn Gile
Jenn Gile
Publié le 05 février 2021

Rédacteur – Ce billet fait partie d’ une série en 10 parties :

  1. Réduisez la complexité avec Kubernetes de niveau production (ce post)
  2. Comment améliorer la résilience dans Kubernetes grâce à la gestion avancée du trafic
  3. Comment améliorer la visibilité dans Kubernetes
  4. Six façons de sécuriser Kubernetes à l'aide d'outils de gestion du trafic
  5. Guide pour choisir un contrôleur d'entrée, partie 1 : Identifiez vos besoins
  6. Guide pour choisir un contrôleur d'entrée, partie 2 : Risques et pérennité
  7. Guide pour choisir un contrôleur d'entrée, partie 3 : Open Source contre Par défaut vs. Commercial
  8. Guide pour choisir un contrôleur d'entrée, partie 4 : Options du contrôleur d'entrée NGINX
  9. Comment choisir un maillage de services
  10. Test des performances des contrôleurs d'entrée NGINX dans un environnement cloud Kubernetes dynamique

Vous pouvez également télécharger l’ensemble complet des blogs sous forme d’eBook gratuit – Taking Kubernetes from Test to Production .

2020 a été une année que peu d’entre nous oublieront. La fermeture brutale des écoles, des entreprises et des services publics nous a soudainement isolés de nos communautés et plongés dans l’incertitude quant à notre sécurité et notre stabilité financière. Imaginez maintenant un instant que cela se soit produit en 2000, ou même en 2010. Qu'est-ce qui serait différent ? Technologie . Sans les services numériques de haute qualité que nous considérons comme acquis – soins de santé, streaming vidéo, outils de collaboration à distance – une pandémie serait une expérience très différente. Qu’est-ce qui a rendu la technologie de 2020 si différente des décennies précédentes ? Conteneurs et microservices .

Les architectures de microservices , qui utilisent généralement des conteneurs et Kubernetes , stimulent la croissance et l’innovation des entreprises en réduisant les délais de mise sur le marché des expériences numériques. Qu'elles soient associées à des architectures traditionnelles ou de manière autonome, ces technologies d'application modernes permettent une évolutivité et une flexibilité supérieures, des déploiements plus rapides et même des économies de coûts.

Avant 2020, nous avons constaté que la plupart de nos clients avaient déjà commencé à adopter les microservices dans le cadre de leur stratégie de transformation numérique, mais la pandémie a véritablement accéléré la modernisation des applications. Notre enquête 2020 auprès des utilisateurs de NGINX a révélé que 60 % des répondants utilisent des microservices en production, contre 40 % en 2019, et que les conteneurs sont plus de deux fois plus populaires que les autres technologies d'applications modernes.

Kubernetes est la norme de facto pour la gestion des applications conteneurisées, comme en témoigne l' enquête 2020 de la Cloud Native Computing Foundation (CNCF) , qui a révélé que 91 % des personnes interrogées utilisent Kubernetes, dont 83 % en production. Lors de l’adoption de Kubernetes, de nombreuses organisations sont préparées à des changements architecturaux substantiels, mais sont surprises par les impacts organisationnels de l’exécution de technologies d’application modernes à grande échelle. Si vous utilisez Kubernetes, vous avez probablement rencontré ces trois obstacles critiques pour votre entreprise :

  • Culture
    Même si les équipes d'application adoptent des approches modernes telles que le développement agile et DevOps, elles restent généralement soumises à la loi de Conway , qui stipule que « les organisations conçoivent des systèmes qui reflètent leur propre structure de communication ». En d’autres termes, les applications distribuées sont développées par des équipes distribuées qui fonctionnent de manière indépendante mais partagent des ressources. Bien que cette structure soit idéale pour permettre aux équipes de fonctionner rapidement, elle encourage également la création de silos. Les conséquences incluent une mauvaise communication (qui a ses propres conséquences), des vulnérabilités en matière de sécurité, une prolifération d’outils, des pratiques d’automatisation incohérentes et des conflits entre équipes.
  • Complexité
    Pour mettre en œuvre des technologies de microservices de niveau entreprise, les organisations doivent rassembler une suite de composants critiques qui offrent visibilité, sécurité et gestion du trafic. En règle générale, les équipes utilisent des plateformes d’infrastructure, des services cloud natifs et des outils open source pour répondre à ce besoin. Bien qu’il y ait une place pour chacune de ces stratégies, chacune présente des inconvénients qui peuvent contribuer à la complexité. Et trop souvent, différentes équipes au sein d’une même organisation choisissent des stratégies différentes pour satisfaire les mêmes exigences, ce qui entraîne une « dette opérationnelle ». De plus, les équipes choisissent des processus et des outils à un moment donné et continuent de les utiliser quelles que soient les exigences changeantes liées au déploiement et à l’exécution d’applications modernes pilotées par des microservices à l’aide de conteneurs.

    Le paysage interactif natif du cloud CNCF est une bonne illustration de la complexité de l’infrastructure nécessaire pour prendre en charge les applications basées sur les microservices. Les organisations doivent devenir compétentes dans un large éventail de technologies disparates, avec pour conséquences le verrouillage de l’infrastructure, l’informatique fantôme, la prolifération des outils et une courbe d’apprentissage abrupte pour ceux qui sont chargés de maintenir l’infrastructure.

  • Sécurité
    Les exigences de sécurité diffèrent considérablement pour les applications cloud natives et traditionnelles, car des stratégies telles que la sécurité cloisonnée ne sont pas viables dans Kubernetes. Le vaste écosystème et la nature distribuée des applications conteneurisées signifient que la surface d’attaque est beaucoup plus grande, et la dépendance aux applications SaaS externes signifie que les employés et les personnes extérieures ont beaucoup plus d’opportunités d’injecter du code malveillant ou d’exfiltrer des informations. De plus, les conséquences décrites dans les domaines de la culture et de la complexité (la prolifération des outils, en particulier) ont un impact direct sur la sécurité et la résilience de vos applications modernes. Utiliser différents outils dans votre écosystème pour résoudre le même problème n’est pas seulement inefficace : cela crée un énorme défi pour les équipes SecOps qui doivent apprendre à configurer correctement chaque composant.

La solution : Kubernetes de niveau production

Comme pour la plupart des problèmes organisationnels, la réponse pour surmonter les défis de Kubernetes est une combinaison de technologie et de processus. Nous allons nous concentrer sur le volet technologique pour le reste de cet article, mais gardez un œil sur les futurs blogs sur les processus et d’autres sujets.

Étant donné que Kubernetes est une technologie open source, il existe de nombreuses façons de la mettre en œuvre. Alors que certaines organisations préfèrent déployer leur propre Kubernetes vanilla, beaucoup trouvent de la valeur dans la combinaison de flexibilité, de prescriptivité et de support fournie par des services tels qu'Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift Container Platform et Rancher .

Les plateformes Kubernetes peuvent faciliter la mise en place et le fonctionnement ; cependant, elles se concentrent sur l'étendue des services plutôt que sur la profondeur. Ainsi, même si vous obtenez tous les services dont vous avez besoin en un seul endroit, il est peu probable qu’ils offrent les fonctionnalités dont vous avez besoin pour une véritable préparation à la production à grande échelle. En effet, ils ne se concentrent pas sur la mise en réseau et la sécurité avancées, ce qui est le point sur lequel nous voyons Kubernetes décevoir de nombreux clients.

Pour rendre Kubernetes de qualité production, vous devez ajouter trois composants supplémentaires dans cet ordre :

  1. Un niveau d'entrée/sortie évolutif pour faire entrer et sortir le trafic du cluster
    Ceci est accompli avec un contrôleur Ingress , qui est un équilibreur de charge spécialisé qui fait abstraction de la complexité du réseau Kubernetes et établit des ponts entre les services d'un cluster Kubernetes et ceux situés à l'extérieur de celui-ci. Ce composant devient de niveau production lorsqu'il inclut des fonctionnalités qui augmentent la résilience (par exemple, des contrôles de santé avancés et des mesures Prometheus), permettent une évolutivité rapide (reconfiguration dynamique) et prennent en charge le libre-service (contrôle d'accès basé sur les rôles [RBAC]).

    Diagramme de topologie de l'environnement Kubernetes avec un contrôleur d'entrée générique fournissant un niveau d'entrée-sortie évolutif

  2. Sécurité intégrée pour se protéger contre les menaces dans l'ensemble du cluster
    Bien qu’une sécurité « à granularité grossière » puisse être suffisante à l’extérieur du cluster, une sécurité « à granularité fine » est requise à l’intérieur de celui-ci. Selon la complexité de votre cluster, il existe trois emplacements où vous devrez peut-être déployer un pare-feu d'application Web (WAF) flexible : sur le contrôleur d'entrée, en tant que proxy par service et en tant que proxy par pod. Cette flexibilité vous permet d’appliquer des contrôles plus stricts aux applications sensibles, telles que la facturation, et des contrôles plus souples lorsque le risque est plus faible.

    Diagramme de topologie d'un environnement Kubernetes avec un WAF déployé aux côtés d'un contrôleur d'entrée générique

  3. Un niveau de trafic est-ouest évolutif pour optimiser le trafic au sein du cluster
    Ce troisième composant est nécessaire une fois que vos applications Kubernetes ont dépassé le niveau de complexité et d’échelle que les outils de base peuvent gérer. À ce stade, vous avez besoin d’un maillage de services , qui est un outil d’orchestration offrant une gestion du trafic et une sécurité encore plus précises aux services d’application au sein du cluster. Un maillage de services est généralement chargé de gérer le routage des applications entre les applications conteneurisées, de fournir et d'appliquer des politiques TLS mutuelles de service à service (mTLS) autonomes et de fournir une visibilité sur la disponibilité et la sécurité des applications.

    Diagramme de topologie de l'environnement Kubernetes avec un WAF déployé aux côtés d'un contrôleur Ingress générique, ainsi qu'un maillage de services fournissant un niveau est-ouest évolutif

Lors de la sélection de ces composants, privilégiez la portabilité et la visibilité. Les composants indépendants de la plate-forme réduisent la complexité et améliorent la sécurité, avec moins d’outils pour que vos équipes puissent apprendre et sécuriser, et un déplacement plus facile des charges de travail en fonction des besoins de votre entreprise. L’importance de la visibilité et du suivi est difficile à surestimer. Les intégrations avec des outils populaires tels que Grafana et Prometheus créent une vue unifiée de votre infrastructure, garantissant que votre équipe détecte les problèmes avant qu'ils ne soient découverts par vos clients. En outre, il existe d’autres technologies complémentaires qui ne sont pas nécessairement requises pour Kubernetes de niveau production, mais qui font partie intégrante du développement d’applications modernes. Par exemple, lorsque les organisations sont prêtes à moderniser les applications traditionnelles, l’une des premières étapes consiste à créer des microservices avec une passerelle API .

Comment NGINX peut vous aider

Nos solutions Kubernetes sont indépendantes de la plateforme et incluent les trois composants dont vous avez besoin pour activer Kubernetes de niveau production : NGINX Ingress Controller comme niveau d'entrée-sortie, NGINX App Protect comme WAF et NGINX Service Mesh comme niveau est-ouest.

Diagramme de topologie de l'environnement Kubernetes avec NGINX App Protect WAF déployé avec un contrôleur d'entrée NGINX et NGINX Service Mesh

Ces solutions peuvent faire de Kubernetes votre meilleur ami en vous permettant d'intervenir dans quatre domaines clés :

  • Automatisation – Mettez vos applications sur le marché plus rapidement et en toute sécurité
    Déployez, faites évoluer, sécurisez et mettez à jour des applications à l'aide des capacités de routage du trafic et d'intégration d'applications de NGINX Ingress Controller associées au déploiement automatique des side-cars NGINX Plus de NGINX Service Mesh.
  • Sécurité – Protégez vos clients et votre entreprise contre les menaces existantes et émergentes
    Réduisez les points de défaillance potentiels en déployant NGINX App Protect n'importe où dans le cluster tout en utilisant NGINX Service Mesh et NGINX Ingress Controller pour gérer et appliquer le chiffrement de bout en bout entre les services.
  • Performance – Offrez les expériences numériques attendues par vos clients et utilisateurs
    Gérez sans effort les pics de trafic et les menaces de sécurité sans compromettre les performances avec les solutions NGINX qui surpassent les autres WAF, contrôleurs d'entrée et équilibreurs de charge.
  • Insight – Faites évoluer votre entreprise et servez mieux vos clients
    Obtenez des informations ciblées sur les performances et la disponibilité des applications à partir de NGINX Ingress Controller et de NGINX Service Mesh, avec des traces approfondies pour comprendre comment les demandes sont traitées dans vos applications de microservices.

Se préparer à la production avec NGINX

NGINX Ingress Controller est disponible sous forme d'essai gratuit de 30 jours , qui inclut NGINX App Protect pour sécuriser vos applications conteneurisées. Nous vous recommandons d'ajouter le service NGINX Service Mesh toujours gratuit (disponible en téléchargement sur f5.com ) pour tirer le meilleur parti de votre essai. Aujourd'hui, vous pouvez apporter votre propre licence (BYOL) sur le cloud de votre choix.


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