Istio, qu'est-ce que c'est ?
Istio est un Service Mesh Open Source qui permet de gérer le partage des données entre les microservices. Il complète Kubernetes et y ajoute des fonctionnalités pour contrôler le flux du trafic, appliquer les politiques et surveiller les communications dans un environnement de microservices. Il comprend des API qui facilitent l'intégration d'Istio à tous les systèmes de journalisation, d'application de politiques ou de télémétrie. De plus, il s'exécute dans divers environnements conteneurisés, virtualisés, sur site et dans le cloud.
Les architectures de microservices divisent le travail des applications d'entreprise en services modulaires, qui facilitent l'évolutivité et la maintenance. Toutefois, puisque la taille et la complexité des applications d'entreprise créées sur une architecture de microservices augmentent avec le temps, il devient plus difficile de les surveiller et de les gérer. Les Service Mesh peuvent résoudre les problèmes d'architecture en capturant ou en interceptant le trafic entre les services, et sont capables de créer ainsi que de modifier des requêtes ou de les rediriger vers d'autres services.
Composants et architecture d'Istio
L'architecture d'Istio repose sur deux plans : le plan de données et le plan de contrôle. Istio utilise des proxies Envoy performants et déployés en tant que sidecars, qui gèrent le trafic de tous les services au sein du Service Mesh. Dans le plan de données, les équipes de développement peuvent ajouter la prise en charge d'Istio à un service en déployant un proxy sidecar au sein de l'environnement. Ces proxies sidecar se situent à côté des microservices et acheminent les requêtes depuis et vers les autres proxies. Ensemble, ils forment un réseau maillé qui intercepte la communication réseau entre les microservices. Le plan de contrôle gère et configure les proxies pour diriger le trafic. Il configure également les composants de manière à appliquer des politiques et à recueillir des données de télémétrie.
Ressources Red Hat
Fonctions clés d'Istio
Gestion du trafic
Istio permet un contrôle précis du flux de trafic entre les services. Il dispose de capacités avancées de routage du trafic, notamment la prise en charge de différentes méthodes de test et de déploiement, parmi lesquelles :
- les tests A/B, qui consistent à comparer deux versions l'une par rapport à l'autre ;
- le déploiement canary, c'est-à-dire la réalisation d'un déploiement test à petite échelle ;
- le déploiement bleu/vert, qui implique de créer deux environnements identiques distincts pour réduire les temps d'arrêt et atténuer les risques.
Istio gère également l'équilibrage de charge au sein des instances de services, ce qui signifie que le trafic sortant d'un service est intercepté par son proxy sidecar. Le proxy transmet ensuite la requête vers la bonne destination en fonction des règles de routage définies dans le plan de contrôle.
Découverte et résilience des services
Istio inclut des fonctionnalités qui découvrent automatiquement les services au sein du Mesh. Il permet de réaliser des tests par injection de fautes afin de simuler des scénarios de panne et d'évaluer la manière dont un système réagit dans des circonstances inhabituelles. Il dispose également de mécanismes de résilience, tels que les nouvelles tentatives, les délais d'expiration et le système de « circuit breaker » (ou « coupe-circuit »). Le plan de contrôle assure le suivi de toutes les instances de services ainsi que de leur emplacement, et chaque nouvelle instance qui démarre s'enregistre automatiquement auprès du plan de contrôle.
Observabilité et extensibilité
Istio offre des fonctionnalités d'observabilité et d'extensibilité. Il permet notamment le traçage distribué par le biais d'intégrations avec des outils tels que Jaeger ou Zipkin, ainsi que des indicateurs de mesure et de la télémétrie avec Prometheus. Istio fournit aussi des tableaux de bord détaillés au niveau du service pour visualiser la communication entre les services. Les proxies sidecar collectent des indicateurs de mesure (nombre de requêtes, latence, taux d'erreur), puis les envoient au plan de contrôle ou aux outils de surveillance. Istio s'intègre également à des systèmes externes tels que des outils de surveillance, des systèmes de journalisation et des moteurs de politiques personnalisés, ce qui permet l'ajout de nouvelles capacités et fonctionnalités au Service Mesh.
Sécurité et application des politiques
Le protocole mTLS (mutual Transport Layer Security) assure la confidentialité et la sécurité entre deux applications en authentifiant mutuellement les deux parties. Dans un modèle TLS, l'authentification ne s'effectue que dans un sens : le serveur identifie le client. Avec le protocole mTLS, le client et le serveur ou le site web et le navigateur web s'authentifient mutuellement. Istio s'appuie sur le protocole mTLS pour sécuriser la communication entre les services et utilise également le contrôle d'accès basé sur les rôles (RBAC), des politiques de sécurisation des API, ainsi que la gestion des certificats et la rotation automatique des clés.
Istio centralise la configuration des politiques de services telles que les quotas, la limitation du débit, l'authentification et l'autorisation. Il permet de contrôler précisément les interactions entre les services par le biais de politiques d'accès, tandis que les politiques relatives à l'authentification, à la limitation du débit ou au contrôle d'accès sont appliquées au niveau du proxy, ce qui garantit la cohérence entre les services.
Mode Ambient
Le mode Ambient d'Istio est un nouveau mode de plan de données, parfois appelé « sidecarless », car les pods de charges de travail n'ont plus besoin des proxies sidecar dans le Mesh. Ces derniers sont remplacés par un plan de données intégré à l'infrastructure, qui assure la sécurité Zero Trust, la télémétrie et la gestion du trafic d'Istio. En éliminant ces sidecars, le mode Ambient réduit également les ressources d'infrastructure requises pour le processeur ainsi que la consommation de mémoire. Avec le mode normal d'Istio, un proxy Envoy accompagne chaque pod d'application, tandis qu'avec le mode Ambient, ce proxy n'est plus nécessaire et les pods ne contiennent que leur propre conteneur d'application.
Cas d'utilisation et exemples liés à Istio et aux Service Mesh
Il existe divers cas d'utilisation spécialisés pour le Service Mesh Istio. En voici quelques exemples qui illustrent la manière dont les Service Mesh peuvent aider une entreprise à atteindre ses objectifs.
Contrôle du trafic des microservices
Une grande plateforme d'e-commerce déploie fréquemment des mises à jour pour ses services, notamment son système de panier d'achat, ses options de paiement et son inventaire. Avec un Service Mesh, l'entreprise peut utiliser des déploiements canary pour lancer progressivement de nouvelles fonctions auprès d'un sous-ensemble d'utilisateurs. Elle peut également recourir aux déploiements bleu/vert pour transférer le trafic de l'ancienne à la nouvelle version sans temps d'arrêt ni perturbation de l'expérience utilisateur. Enfin, les tests A/B lui permettent d'acheminer une part donnée du trafic vers différentes versions du service.
Communication sécurisée entre les services
Une entreprise de services financiers traite des données utilisateur sensibles pour plusieurs services afin de gérer les comptes et de détecter les activités frauduleuses. Avec un Service Mesh, elle est en mesure de mettre en œuvre le protocole mTLS pour renforcer la sécurité et chiffrer la communication entre les services. Le Service Mesh lui permet également de procéder à un contrôle granulaire des accès basé sur les rôles afin d'améliorer l'interaction entre les services.
Résilience et tolérance aux pannes
Une plateforme de streaming vidéo souhaite garantir une lecture sans interruption, même en cas de panne ou de ralentissement d'un service. Un Service Mesh lui fournit des capacités de « circuit breaker » pour arrêter automatiquement l'envoi de requêtes aux services qui rencontrent des problèmes. Grâce aux nouvelles tentatives gérées par un backoff exponentiel, les requêtes en échec sont de nouveau envoyées selon un schéma intelligent. L'équilibrage de charge du Service Mesh permet de distribuer le trafic entre les instances de services dont le fonctionnement n'est pas perturbé.
Observabilité et surveillance
Une plateforme SaaS (Software-as-a-Service) qui exécute Kubernetes doit diagnostiquer des problèmes de latence dans plusieurs dizaines de microservices. Un Service Mesh permet d'effectuer un traçage distribué pour que les équipes de développement puissent suivre les requêtes entre les services. Il fournit également des données de télémétrie en temps réel, incluant les taux d'erreurs et les schémas de trafic.
Intégration d'une passerelle d'API
Une passerelle d'API est utilisée pour mettre les services à disposition des clients externes pendant que les services internes communiquent au sein du Mesh. Un Service Mesh permet de sécuriser la communication interne entre les services tout en autorisant le trafic externe via la passerelle d'API. Il applique également des politiques de manière uniforme pour assurer aux entreprises une application cohérente des règles, telles que la limitation du débit, au niveau des services internes.
Conformité réglementaire
Un fournisseur de soins de santé doit se conformer aux exigences de la loi HIPAA (Health Insurance Portability and Accountability Act) afin de sécuriser la transmission des données. Avec un Service Mesh, il peut appliquer des normes de chiffrement telles que TLS. Il bénéficie également de journaux d'audit détaillés concernant la communication entre les services à des fins de conformité et de documentation.
Environnements dynamiques
Une entreprise spécialisée dans les jeux redimensionne régulièrement ses services lors des pics d'utilisation ou à l'occasion d'événements promotionnels. Un Service Mesh lui permet de découvrir automatiquement le trafic et de le diriger vers des instances de services nouvellement créées. Il garantit également des performances constantes lors des opérations de mise à l'échelle.
Avantages de Red Hat OpenShift Service Mesh pour Istio
Basée sur le projet Istio, la solution Red Hat® OpenShift® Service Mesh traite un grand nombre de problèmes et de cas d'utilisation dans une architecture de microservices en créant un point de contrôle centralisé au sein d'une application. Elle ajoute un niveau de transparence aux applications distribuées existantes sans modifier leur code. Le Mesh offre une manière simple de créer un réseau de services déployés permettant la découverte, l'équilibrage de charge, l'authentification entre les services, la récupération en cas de panne, l'utilisation d'indicateurs de mesure et la surveillance.
La solution Red Hat OpenShift Service Mesh est testée et optimisée pour Red Hat OpenShift. Elle est compatible avec des fonctions propres à OpenShift, telles que les opérateurs ainsi que les pipelines d'intégration et de distribution continues. Elle bénéficie de l'assistance adaptée aux entreprises de Red Hat et reçoit régulièrement des mises à jour et des correctifs pour plus de sécurité et de stabilité. La solution OpenShift Service Mesh fonctionne dans plusieurs clusters Red Hat OpenShift, ce qui favorise la cohérence entre les environnements de cloud hybride et multicloud. Elle permet aux entreprises de gérer des Service Mesh distincts pour différentes équipes ou charges de travail grâce à un système multi-client. Enfin, ses fonctions de sécurité appliquent le protocole mTLS par défaut pour tous les services et s'intègrent à la fonction OAuth de Red Hat OpenShift pour sécuriser l'authentification et les autorisations.
Le blog officiel de Red Hat
Découvrez les dernières informations concernant notre écosystème de clients, partenaires et communautés.