Harmonisez vos services avec Istio : Résoudre les problèmes de complexité au niveau du réseau

04-05-2018 / Katharine Mikula

Développé grâce à la collaboration entre Google et IBM, Istio est une technologie de logiciel libre qui offre un contrôle opérationnel et des indications comportementales dans le service maillé d’une application dans son ensemble. Se trouvant juste au-dessus de la couche applicative, les services maillés consistent en une couche de réseau réservée abstraite des microservices eux-mêmes. En surveillant le service maillé, Istio permet la communication, indépendante de la plateforme, entre les microservices et qui ne demande pas de changement dans le code du service. Istio cherche à relayer les demandes d’origine aux microservices de destination, de manière fiable, sécuritaire et rapide en s’appuyant sur l’intelligence des mandataires indépendants.

Au sein du service maillé, Istio offre un seul plan de gestion qui surveille le plan des données sous-jacent. Le plan des données consiste en des voies de communication, elles-mêmes entre les microservices, qui eux, sont composés de mandataires Envoy. Avec un modèle de sidecar, un mandataire Envoy s’attachera conceptuellement à un « pod » de conteneur d’origine et dirigera les messages vers le service maillé au-dessus. Le message sera récupéré par le mandataire Envoy respectif du microservice de destination. En faisant cela, un mandataire Envoy inclura de nombreuses fonctionnalités intégrées, telles que la découverte dynamique de service, l’équilibrage de charge, la cessation du protocole TLS, la procuration HTTP/2 & gRPC, des coupe-circuits, des bilans de santé, des mises en œuvre de mises en place avec répartition de trafic, injection de fautes et paramètres enrichis basés sur le pourcentage. Les mandataires Envoy sont capables d’assumer la découverte de service, le bilan de santé, le routage, l’équilibrage de charge, l’authentification, l’autorisation et l’observabilité. Développés en langage C++, les Envoy sont des mandataires qui se transportent néanmoins facilement et qui permettent la communication robuste entre les conteneurs distincts ainsi qu’entre les machines virtuelles (MV) sur de multiples environnements infonuagiques indépendants de la sensibilisation aux services.

Le comportement des mandataires Envoy à l’intérieur du plan des données est dicté par le plan de contrôle, qui consiste en une couche automatisée superposée au-dessus du plan des données. Le plan de contrôle d’Istio établit des politiques distinctes qui dictent la façon dont le mandataire Envoy devrait se comporter. Le plan de contrôle est divisé en trois panneaux qui surveillent chacun une dimension de communication séparée.

Pilot

C’est Pilot qui gère le contrôle du trafic. Il donne les règles selon lesquelles les mandataires peuvent s’attacher aux conteneurs et les diriger afin de détourner le trafic vers les applications en déploiement. Pilot fourni aux moniteurs des plans de reprise après une panne et d’injection de fautes ; vous pouvez donc tester facilement et atténuer les défaillances. En plus, il offre des fonctionnalités telles que des coupe-circuits et des réessais, qui peuvent être appliquées à chaque service sans avoir à réécrire le code individuellement. Essentiellement, Pilot soustrait les services de mécanismes de découverte spécifiques à la plateforme et les synthétise en un format standard se consommant facilement par les sidecars qui se conforment aux API du plan des données Envoy.

Istio Auth

Tandis que Pilot dirige le flux de trafic, Istio Auth bâtit les voies exigées dans l’administration des certificats de protocole TLS pour assurer la communication de service-à-service et valider l’authentification des utilisateurs finaux. Il peut mettre à niveau le trafic non crypté et imposer les politiques basées sur l’identité du service plutôt que sur les contrôles des réseaux. Istio Auth assure la sécurité sans ajouter d’exigences pour que les développeurs outrepassent la fonctionnalité.

Mixer

Dans le troisième panneau, Mixer offre la visibilité des microservices en collectant des mesures télémétriques et des procédés de communication automatisée transmettant les dimensions et autres données à partir de points distants ou inaccessibles à l’équipement de réception de surveillance et de rapports. Il collecte les données sous forme d’attributs de niveau, en utilisant les mandataires Envoy, et les convertit en microservices divers dans le service maillé intégré en introduisant le routage programmable dans une couche de gestion partagée. Il distribue la gestion en imposant le contrôle d’accès et les politiques d’utilisation. Mixer est une composante indépendante de la plateforme et inclut un modèle de module d’extension souple qui lui permet d’interagir avec des services de plateforme divers comme Prometheus et Google StackDriver.

Les conteneurs et le service maillé

Les conteneurs ont fourni des mécanismes extrêmement forts pour gérer les charges de travail des applications. En soustrayant le système d’exploitation des dépendances et des temps d’exécution, les conteneurs permettent aux applications d’être déployées, testées et mises à jour rapidement. Docker et Kubernetes sont devenus la norme pour l’orchestration de conteneurs, l’association qui en découle, entre un conteneur et une seule application a augmenté la souplesse pour déployer et mettre à l’échelle individuellement les microservices isolés de leur environnement. Par contre, cette souplesse vient au prix de la complexité qui devient de plus en plus évidente lors de l’évolution de l’application.

Le nombre impressionnant de microservices impliqués dans une application a fait de l’orchestration de conteneurs une affaire complexe, donnant lieu à une mise à l’échelle réduite. Les problèmes qui pouvaient être résolus d’un seul coup avec les applications monolithiques doivent être résolus individuellement avec les conteurs. L’incohérence qui en découle dans la résolution de problème mène à des solutions à pauvre observabilité et varie considérablement tant en langage qu’en temps d’exécution. Tandis que les applications basées sur les conteneurs tentent de se mettre à l’échelle, les imperfections du réseau dans des zones comme la découverte de service, l’équilibrage de charge, le contrôle de trafic, la tolérance aux fautes, la surveillance bout à bout, le routage dynamique pour l’expérimentation des caractéristiques, la visibilité des microservices, la conformité et la sécurité sont fortement amplifiées. Somme toute, le réseau est devenu si chaotique et les contraintes si sévères que cela a nécessité l’émergence du service maillé.

Essentiellement, le service maillé offre une approche décentralisée à la gestion des microservices en utilisant une couche d’abstraction réservée pour rendre la communication de service-à-service rapide, sécuritaire, fiable et observable. Istio automatise ce processus en changeant un ensemble dispersé de mandataires sidecar en un système distribué qui configure automatiquement la gestion systémique. En faisant cela, Istio augmente le caractère prévisible et la visibilité du comportement des microservices. Il crée finalement de l’ordre dans la complexité de l’architecture des microservices qui se manifeste par la capacité de Kubernetes à tirer pleinement profit et à déployer les microservices à l’échelle.

Même s’il n’a été annoncé qu’en mai dernier à Gluecon, Istio a déjà obtenu son lot de reconnaissance. Bien que Kubernetes ait fait ses preuves quant à sa robustesse et sa fiabilité en offrant une souplesse dans le déploiement d’application, la réalisation d’architectures basées sur les microservices est toutefois limitée par la complexité au niveau du réseau. Istio ajoute la visibilité au chaos qui se trouve dans les microservices à l’échelle. Si une application n’est aussi bonne que son réseau, Istio promet d’augmenter le potentiel des applications basées sur les microservices en orchestrant son réseau et en transcendant ses limites. Kelsey Hightower dit : « Kubernetes a changé la façon dont nous déployons les applications, Istio va changer la façon dont nous les gérons, les connectons et les sécurisons. » On ne peut que s’attendre à davantage d’Istio, tandis qu’il prend de la maturité en 2018. Pour en apprendre plus sur Kubernetes et les technologies infonuagiques, inscrivez-vous à l’un de nos ateliers.

New call-to-action