Qu'est-ce que Istio? Le maillage de service Kubernetes expliqué

Les architectures de microservices résolvent certains problèmes mais en introduisent d'autres. La division des applications en services indépendants simplifie le développement, les mises à jour et la mise à l'échelle. En même temps, il vous donne beaucoup plus de pièces mobiles à connecter et à sécuriser. La gestion de tous les services réseau - répartition de charge, gestion du trafic, authentification et autorisation, etc. - peut devenir extrêmement complexe. 

Il existe un terme collectif pour cet espace en réseau entre les services de votre cluster Kubernetes: un maillage de services . Un projet Google, Istio, consiste à vous donner un moyen de gérer le maillage de services de votre cluster avant qu'il ne se transforme en ronce de ronce.

Qu'est-ce qu'un service mesh?

Avec n'importe quel groupe d'applications en réseau, il existe une multitude de comportements courants qui ont tendance à surgir autour d'eux. Équilibrage de charge, par exemple: il y a peu de cas où un groupe de services en réseau n'en a pas besoin. De même, être capable de tester A / B différentes combinaisons de services, ou de configurer une authentification de bout en bout à travers des chaînes de services. Ces comportements sont collectivement appelés un  maillage de services.

La gestion du maillage de services ne doit pas être laissée aux services eux-mêmes. Aucun d'entre eux n'est bien placé pour faire quelque chose d'aussi haut, et cela ne devrait vraiment pas être leur travail de toute façon. Mieux vaut avoir un système séparé qui se situe entre les services et le réseau avec lequel ils parlent. Ce système fournirait deux fonctions clés:

  1. Évitez que les services eux-mêmes n'aient à gérer les détails de la gestion du trafic réseau: équilibrage de charge, routage, tentatives, etc.
  2. Fournissez une couche d'abstraction pour les administrateurs, ce qui facilite la prise de décisions de haut niveau sur le trafic réseau dans le cluster: contrôles de stratégie, métriques et journalisation, découverte de services, communications interservices sécurisées via TLS, etc.

Composants de maillage de service Istio

Istio fonctionne comme un maillage de services en fournissant deux éléments d'architecture de base pour votre cluster, un plan de données et un plan de contrôle .

Le plan de données gère le trafic réseau entre les services du maillage. Tout ce trafic est intercepté et redirigé par un système de proxy réseau. Dans le cas d'Istio, le proxy est fourni par un projet open source appelé Envoy. Un deuxième composant du plan de données, Mixer, rassemble la télémétrie et les statistiques d'Envoy et le flux du trafic de service à service.

Le plan de contrôle, le cœur d'Istio, gère et sécurise le plan de données. Il configure à la fois les proxys Envoy et les mélangeurs qui appliquent les stratégies réseau pour les services, par exemple qui peut parler à qui et quand. Le plan de contrôle fournit également une couche d'abstraction programmatique pour le plan de données et tous ses comportements.

Trois autres services Istio complètent le mix:

Pilote Istio

Istio Pilot prend les règles de comportement du trafic fournies par le plan de contrôle et les convertit en configurations appliquées par Envoy, en fonction de la façon dont ces éléments sont gérés localement. Pilot permettra à Istio de travailler avec différents systèmes d'orchestration en plus de Kubernetes, mais de se comporter de manière cohérente entre eux. 

Citadelle d'Istio

Citadel contrôle l'authentification et la gestion des identités entre les services.

Galère Istio

Gallery prend les configurations spécifiées par l'utilisateur pour Istio et les convertit en configurations valides pour les autres composants du plan de contrôle. C'est un autre élément qui permet à Istio d'utiliser différents systèmes d'orchestration de manière transparente.

Capacités de maillage de service Istio

Le premier et le plus précieux avantage qu'offre Istio est l'abstraction, un moyen de gérer les complexités d'un maillage de services à distance. Vous pouvez apporter des modifications au maillage par programme en commandant Istio. Les services connectés au maillage n'ont pas besoin d'être reprogrammés de l'intérieur pour suivre les nouvelles politiques ou quotas réseau, et les espaces réseau entre eux n'ont pas besoin d'être touchés directement non plus.

De plus, Istio vous permet d'effectuer des modifications non destructives ou provisoires de la configuration réseau du cluster. Si vous souhaitez déployer une nouvelle mise en page réseau, en tout ou en partie, ou tester A / B la configuration actuelle par rapport à une nouvelle, Istio vous permet de le faire de manière descendante. Vous pouvez également annuler ces modifications si elles s'avèrent insalubres.

Un troisième avantage est l'observabilité. Istio fournit des statistiques détaillées et des rapports sur ce qui se passe entre les conteneurs et les nœuds de cluster. S'il y a un problème imprévu, si quelque chose ne respecte pas la politique ou si les modifications que vous avez apportées se révèlent contre-productives, vous serez en mesure de le découvrir rapidement.

Istio fournit également des moyens de répondre aux modèles courants que vous voyez dans un maillage de services. Un exemple est le modèle de disjoncteur, un moyen d'empêcher un service d'être bombardé de demandes si le back-end signale des problèmes et ne peut pas répondre aux demandes en temps opportun. Istio fournit un modèle de disjoncteur dans le cadre de sa bibliothèque standard d'applications de politique.

Enfin, alors qu'Istio fonctionne le plus directement et en profondeur avec Kubernetes, il est conçu pour être indépendant de la plateforme. Istio se connecte aux mêmes standards ouverts sur lesquels s'appuie Kubernetes. Istio peut également fonctionner de manière autonome sur des systèmes individuels ou sur d'autres systèmes d'orchestration tels que Mesos et Nomad.

Comment démarrer avec Istio

Si vous avez déjà de l'expérience avec Kubernetes, un bon moyen d'apprendre Istio est de prendre un cluster Kubernetes - pas déjà en production! - et d'y installer Istio via un graphique Helm. Vous pouvez ensuite déployer un exemple d'application qui présente les fonctionnalités Istio courantes telles que la gestion intelligente du trafic et la télémétrie. Cela devrait vous donner une expérience de base avec Istio avant de le déployer pour le service de maillage de service sur votre cluster d'applications.

Red Hat, qui a investi dans Istio dans le cadre du projet OpenShift basé sur Kubernetes, propose des didacticiels qui vous guideront à travers des scénarios de déploiement et de gestion Istio courants.