Découvrez Istio, une technologie ouverte qui permet aux développeurs de connecter, gérer et sécuriser en toute transparence des réseaux de différents microservices.
Istio est une couche de maillage de service open source configurable qui se connecte, surveille et sécurise les conteneurs dans une grappe Kubernetes. Au moment de la rédaction de cet article, Istio fonctionne uniquement en mode natif avec Kubernetes, mais sa nature open source permet à toute personne d'écrire des extensions afin qu'Istio s'exécute sur tout logiciel cluster. Aujourd'hui, nous allons nous concentrer sur l'utilisation d'Istio avec Kubernetes, son cas d'utilisation le plus courant.
Kubernetes est un outil d'orchestration de conteneur, et une unité de base de Kubernetes est un nœud. Un nœud est constitué d'un ou de plusieurs conteneurs, ainsi que de systèmes de fichiers ou d'autres composants. Une architecture de microservices peut avoir une douzaine de nœuds différents, chacun représentant différents microservices. Kubernetes gère la disponibilité et la consommation de ressources des nœuds, ajoutant des pods à mesure que la demande augmente, via le Pod Autoscaler. Istio injecte des conteneurs supplémentaires dans le pod pour renforcer la sécurité, la gestion et la surveillance.
Istio étant open source, il peut s'exécuter sur n'importe quel fournisseur de cloud public qui le prend en charge et tout cloud privé doté d'administrateurs de bonne volonté.
La vidéo suivante explique plus en détail les concepts de base d'Istio :
Lire l'e-book (1,4 Mo)
Lorsque des entreprises passent aux microservices, elles doivent prendre en charge des dizaines, voire des centaines d'applications spécifiques. La gestion de ces points de terminaison séparément signifie prendre en charge un grand nombre devirtuel machines ou VM, y compris la demande. Des logiciels cluster tels que Kubernetes peuvent créer des pods et augmenter leurs capacités, mais Kubernetes ne fournit pas de routage, de règles de trafic, ni d'outils puissants de surveillance ou de débogage.
Entrez le service de maillage.
L'augmentation du nombre de services entraîne l'accroissement exponentiel des modes de communication potentiels. Deux services n'ont que deux voies de communication. Trois services en ont six, tandis que 10 services en ont 90. Un maillage de services fournit un moyen unique de configurer ces voies de communication en créant des règles pour la communication.
Un maillage de services instrumente les services et dirige le trafic de communication selon une configuration prédéfinie. Donc, au lieu de configurer un conteneur en cours d'exécution (ou d'écrire du code pour ce faire), un administrateur peut fournir une configuration au maillage de services qui va s'en charger. C'était auparavant inéluctable avec les serveurs Web et la communication de service à service.
Le moyen le plus courant d'y procéder dans un cluster est d'utiliser le modèle « side-car ». Un side-car est un nouveau conteneur, à l'intérieur du pod, qui achemine et observe le trafic des communications entre les services et les conteneurs.
En savoir plus
Comme mentionné plus haut, Istio se superpose à Kubernetes, ajoutant des conteneurs qui sont pour l'essentiel invisibles pour le programmeur et l'administrateur. Appelés conteneurs « side-car », ils servent « d'intermédiaires », car ils dirigent le trafic et surveillent les interactions entre les composants. Les deux fonctionnent en combinaison de trois manières : configuration, surveillance et responsable.
Configuration
La méthode primaire pour défini configuration avec Kubernetes est la commande kubectl, communément "kubectl -f", où le fichier est un fichier YAML. Les utilisateurs d'Istio peuvent exécuter des types de fichiers YAML nouveaux et différents avec kubectl, ou utiliser la nouvelle commande ioctl, facultative.
Surveillance
Avec Istio, vous pouvez facilement surveiller l'état de vos applications s'exécutant avec Kubernetes. L'instrumentation d'Istio peut gérer et visualiser l'état des applications, offrant ainsi plus d'éclairages que la simple surveillance générale du cluster et des nœuds de Kubernetes.
Gestion
L'interface pour Istio étant pour l'essentiel la même que Kubernetes, sa gestion ne nécessite quasiment pas de gestion supplémentaire. En fait, Istio permet à l'utilisateur de créer des politiques qui ont un impact sur l'ensemble de la grappe Kubernetes et le gèrent, ce qui accélère la gestion de chaque grappe tout en éliminant l'utilisation de code de gestion personnalisé.
Red Hat OpenShift on IBM Cloud
IBM Cloud Kubernetes Service
IBM Cloud Satellite
Les principaux avantages d'un maillage de services sont les fonctionnalités d'amélioration du débogage, de la surveillance, du routage, de la sécurité et de l'optimisation. Grâce à Istio, il sera plus facile de gérer un plus grand groupe de services.
Débogage amélioré
Supposons qu'un service possède plusieurs dépendances. Le service pay_claim d'une compagnie d'assurances appelle le service deductible_amt, qui appelle le service is_member_covered, et ainsi de suite. Une chaîne de dépendances complexe peut avoir 10 ou 12 appels de service. Lorsque l'un de ces 12 services est défectueux, il se produit des échecs en cascade qui aboutissent à un erreur de type 500 ou 400, voire même à aucune réponse.
Pour déboguer cet ensemble d'appels, vous pouvez utiliser une trace de pile. Au niveau frontal, les développeurs côté client peuvent voir quels éléments sont extraits des serveurs Web, dans quel ordre, et les examiner. Les programmeurs frontaux peuvent obtenir un diagramme en cascade pour faciliter le débogage.
Ce que l'exemple ne montre pas, c'est ce qui se passe à l'intérieur du centre de données : comment callback=parselLotamaAudiences appelle quatre autres services Web et lesquels répondent plus lentement. Nous verrons plus loin comment Istio fournit des outils pour tracer des appels de fonction dans un diagramme très similaire à celui-ci.
Surveillance et observabilité
Les équipesDevOps et l'administration informatique peuvent vouloir observer le trafic pour identifier la latence, le temps de service, les erreurs en pourcentage du trafic, etc. Le plus souvent, un tableau de bord est idéal. Un tableau de bord fournit une visualisation de la somme, ou de la moyenne, de ces paramètres au fil du temps, peut-être avec la possibilité d'effectuer un descendre vers un « nœud », un service ou un pod spécifique. Kubernetes ne fournit pas cette fonctionnalité en natif.
Politique
Par défaut, Kubernetes permet à chaque pod d'envoyer du trafic à tous les autres pods. Istio permet aux administrateurs de créer une règle pour restreindre les services qui peuvent fonctionner les uns avec les autres. Ainsi, certains services peuvent uniquement appeler d'autres services qui sont de vraies dépendances. Une autre règle visant à maintenir le fonctionnement des services est une limite de débit qui va empêcher tout trafic excédentaire de bloquer un service et éviter les attaques par déni de service.
Routage et équilibrage de charge
Par défaut, Kubernetes fournit un équilibrage de charge circulaire. Si six pods fournissent un microservice, Kubernetes fournit un équilibreur de charge, ou « service », qui envoie les requêtes à chaque pod dans un ordre croissant, puis recommence. Toutefois, une entreprise déploiera parfois différentes versions du même service en production.
L'exemple le plus simple peut être un déploiement bleu/vert. Dans ce cas, le logiciel peut générer une version entièrement nouvelle de l'application en production sans lui envoyer d'utilisateurs de production. Après la promotion de la nouvelle version, l'entreprise peut conserver les anciens serveurs, afin d'accélérer le retour à la normale en cas de panne.
Avec Istio, c'est aussi simple que d'utiliser du balisage dans un fichier de configuration. Les administrateurs peuvent également utiliser des étiquettes pour indiquer le type de service auquel se connecter et établir des règles en fonction des en-têtes. Par exemple, les bêta-testeurs peuvent être acheminés vers un « pod canary » avec la génération optimale la plus récente, tandis que les utilisateurs classiques accèdent à la génération de production stable.
Coupe-circuit
Si un service est surchargé ou arrêté, les demandes supplémentaires échoueront tout en continuant à surcharger le système. Istio effectuant un suivi des erreurs et des retards, il peut forcer une pause, ce qui va permettre à un service de reprendre, après un nombre spécifique de demandes définies par une règle. Vous pouvez appliquer cette règle à l'ensemble du cluster en créant un petit fichier texte et en indiquant à Istio de l'utiliser en tant que nouvelle règle.
Sécurité
Istio fournit l'identité, la règle et le chiffrement par défaut, ainsi que l'authentification, l'autorisation et l'audit (AAA). Les pods gérés qui communiquent avec d'autres utiliseront le trafic chiffré, empêchant toute observation. Le service d'identité, associé au chiffrement, garantit qu'aucun utilisateur non autorisé ne peut falsifier ou « usurper », un appel de service. L'AAA fournit aux professionnels de la sécurité et des opérations les outils de surveillance requis, tout en consommant moins de ressources.
Administration simplifiée
Les applications traditionnelles ont toujours besoin des fonctionnalités d'identification, de règle et de sécurité offertes par Istio. Or les programmeurs et les administrateurs travaillent au mauvais niveau d'abstraction, en réimplémentant en permanence les mêmes règles de sécurité pour chaque service. Istio leur permet de travailler au niveau adéquat, en définissant une règle pour le cluster via un seul panneau de commande. Parallèlement, grâce aux contrôles d'accès, aux tableaux de bord et aux outils de débogage d'Istio décrits ci-dessous, vous pouvez facilement ajouter un plug-in à la ligne de commande, plutôt que d'aller sur une page Web.
Services de visualisation
Istio 1.1 inclut un nouveau additif appelé Kiali qui permet une visualisation basée sur le Web . Vous pouvez l'utiliser pour effectuer le suivi des demandes de service, accéder au détail ou même exporter l'historique des demandes de service en tant que JSON pour interroger et formater comme vous le souhaitez. Le graphique de charge de travail ci-dessous présente des dépendances générées en temps réel sur la base des services qui dépendent les uns des autres. Il est généré à partir d'observations réelles du trafic.
Suivi des appels de service
Le service Jaeger, composant d'Istio permet de suivre n'importe quel service. Dans cet exemple, nous avons effectué un suivi de la page produit. Chaque point de la première image représente un appel de service. En cliquant sur un point, nous pouvons explorer le diagramme en cascade pour suivre les demandes de services et les réponses exactes.
Il est également possible d'examiner plus précisément la page produit. On constate que les erreurs se trouvent dans la page produit-même, les détails sont donc bien corrects.
Tableaux de bord
Istio est fourni avec de nombreux tableaux de bord (prêts à l'emploi) pour surveiller la santé et les performances du système. Ils peuvent mesurer l'utilisation de l'unité centrale et de la mémoire, la demande de trafic, le nombre d'erreurs 400 et 500, le temps de traitement des demandes, etc. Mieux encore, afin d'y accéder, il suffit d'installer et d'exécuter Istio et d'ajouter Grafana, l'un des outils de tableau de bord open source inclus pour Istio. Istio propose également deux autre tableaux de bord : Kiali et Jaeger.
Le site Web Istio (lien externe à IBM) contient un grand nombre de documentations et d'instructions utiles pour commencer avec Istio.
Une plateforme de conteneurs d'entreprise, construite autour de Kubernetes et de technologies open source telles qu'Istio, fournit une orchestration dans plusieurs clouds publics et privés qui unifie vos environnements pour améliorer les performances commerciales et opérationnelles. Il s'agit d'un élément clé d'une stratégie de cloud hybride ouvert qui vous permet d'éviter de dépendre d'un fournisseur, de créer et d'exécuter des charges de travail n'importe où et de manière cohérente, ainsi que d'optimiser et de moderniser l'ensemble de votre informatique.
Pour aller plus loin :
Obtenez un compte IBM Cloud dès aujourd'hui.
D'un clic, déployez des clusters hautement disponibles et entièrement gérés.
Déployez des clusters sécurisés haute disponibilité dans un environnement Kubernetes natif.
Générer des applications rapidement, les exécuter n'importe où
Déployez simplement et de manière fluide le stockage d'entreprise par conteneurs dans des environnements de stockage sur site et dans le cloud.
Simplifiez la gestion informatique hybride complexe pour plus de visibilité, de maniabilité et de flexibilité.
Hybride. Ouvert. Résilient. Votre plateforme et partenaire pour la transformation numérique.