Gestion des microservices en mode mesh avec Istio
En mode mesh avec Istio
Google, IBM et Lyft ont annoncé en mai dernier la release alpha d’Istio, un nouveau projet open- source qui fournit une manière uniforme de connecter, sécuriser, manager et monitorer des microservices. Istio encapsule la plupart des bonnes pratiques que Google a employées en production depuis des années pour exécuter des services à très large étendue ( massive- scale). Gestion des microservices en mode mesh
Trois grands acteurs technologiques, Google, IBM et Lyft, se sont associés pour créer une plate- forme mesh capable de gérer et surveiller leurs microservices. Rappelons que les microservices sont un concept à la mode visant à diviser les applications importantes en plus petites parties communiquant à travers des API. La technique est efficace et a fait ses preuves, mais ce fractionnement induit inéluctablement un problème de gestion et de surveillance. Google, IBM et Lyft ont donc eu l’idée de créer une plate- forme open source de gestion des microservices. Dénommée Istio, elle donne la possibilité de créer un réseau de services tels que l’authentification de service à service, l’équilibrage de charges ( load balancing), le monitoring, le reporting et la télémétrie. L’idée derrière ce projet est de fournir une couche réseau intermédiaire qui va se charger de la distribution, de la résilience, de la sécurité et du monitoring pour les communications entre les services. Pour satisfaire à tout cela, lstio s’appuie sur Envoy, le proxy développé par Lyft. Dès la version 0.1, Istio présente une intégration forte avec Kubernetes, Prometheus et Grafana pour le monitoring ainsi qu’avec Zipkin pour l’analyse et la traçabilité. La plate- forme Istio se positionne au niveau du réseau et communique avec un proxy afin de détecter les communications réseau entre les microservices. Elle utilise pour cela Envoy, le proxy de Lyft, comprenant d’autres outils intégrés de load balancing ou d’exploration. Dans un blog concernant le projet il est écrit que « les applications monolithiques sont décomposées en microservices et que les équipes logicielles doivent se soucier des défis liés à l’intégration des services dans les systèmes distribués. Elles doivent tenir compte de l’exploration du service, de l’équilibrage de charge, de la tolérance aux pannes, du monitoring de bout en bout, du routage dynamique. Et, peut- être le plus important, de la conformité et de la sécurité » .
Un projet évolutif
La réponse à ces défis se nommerait donc Istio ou, plus exactement, le concept de réseau mesh. Dans le domaine des télécoms, les réseaux mesh – réseaux maillés sans- fil – permettent d’obtenir une plus
grande granularité et une meilleure couverture. Ce principe appliqué aux microservices a déjà fait ses preuves chez Google au sein de ses différents services : Cloud PubSub et Cloud BigTable, Gmail, YouTube et autres. Istio ne supporte à ce jour que le service d’orchestration Kubernetes, mais le support d’autres environnements est d’ores et déjà évoqué. L’ouverture à d’autres solutions telles que Cloud Foundry, Mesos ou bare metal est prévue à court terme. D’autres grandes entreprises soutiennent le projet : Red Hat, Datawire, Tigera ou Weaveworks. Son concurrent est un projet de la CNCF ( Cloud Native Computing Foundation), maison mère de Kubernetes : Linkerd. Ce dernier supporte les environnements Docker et Mesosphere DC/ OS. Grâce à Envoy, un proxy développé par Lyft, et son service d’exploration intégré, Istio peut intercepter toutes les communications entre microservices. Ce maillage réseau offre une surveillance accrue, de par une couverture plus large et une plus grande granularité. La technologie est déjà largement exploitée dans le secteur des télécoms et par différents services Google. La plate- forme Istio permet en résumé de connecter, manager et sécuriser des microservices. Istio offre une méthode simple pour créer un réseau de services déployés avec de l’équilibre de charge, de l’authentification service- à- service et du monitoring, entre autres choses, sans nécessiter de modifier quoi que ce soit dans le code du service. Vous ajoutez le support d’Istio aux services en déployant un proxy special « sidecar » à travers votre environnement qui intercepte toutes les communications réseau entre les microservices, configuré et managé via la fonctionnalité de plan de contrôle d’Istio. Istio ne supporte pour l’instant le déploiement de service que sur Kubernetes, mais d’autres environnements seront supportés dans les versions futures.
Caractéristiques principales
Istio offre une solution complète pour satisfaire les divers besoins des applications microservices. Il comporte un grand nombre de fonctionnalités clefs uniformément à travers un réseau de services : • Gestion de trafic. Contrôle le flux du trafic et les appels d’API entre les services, rend les appels plus fiables et rend le réseau plus robuste face à des conditions adverses. • Observabilité. Apporte la compréhension des dépendances entre les services et la nature et le flux du trafic entre eux, fournissant l’aptitude à identifier rapidement les problèmes.