Istio
cloud leadspace
Qu'est-ce qu'Istio ?

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 :

Les conteneurs dans l'entreprise - La nouvelle recherche IBM documente l'essor de l'adoption des conteneurs et de Kubernetes.

Lire l'e-book (1,4 Mo)


Le maillage de services réseau

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.

Une informatique flexible, résiliente et sécurisée pour votre cloud hybride - Les conteneurs, Kubernetes et Istio font partie d'une stratégie de cloud hybride ouvert qui vous permet de créer et de gérer des charges de travail depuis n'importe où.

En savoir plus


Istio et Kubernetes

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é.

Produits à la une

Red Hat OpenShift on IBM Cloud

IBM Cloud Kubernetes Service

IBM Cloud Satellite


Avantages

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 équipes

DevOps 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.


Exemples

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.

 


Tutoriels Istio

Le site Web Istio (lien externe à IBM) contient un grand nombre de documentations et d'instructions utiles pour commencer avec Istio. 


Istio et IBM Cloud

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 :

  • Déployez des grappes Kubernetes hautement disponibles et entièrement gérés avec Red Hat OpenShift on IBM Cloud, un service OpenShift géré qui tire parti de l'échelle et de la sécurité d'IBM Cloud pour automatiser les mises à jour, la mise à l'échelle et l'approvisionnement. Red Hat OpenShift sur IBM Cloud comprend une fonctionnalité OpenShift Service Mesh qui utilise le plan de contrôle Istio pour contrôler les connexions entre les services conteneurisés, appliquer des politiques, observer les comportements, etc.
  • Améliorez le contrôle de vos applications conteneurisées avec  IBM Cloud Kubernetes Service qui assure l'installation transparente d'Istio, les mises à jour automatiques et la gestion du cycle de vie des composants du plan de contrôle, ainsi que l'intégration avec les outils de journalisation et de surveillance de la plateforme.
  • Déployez et exécutez des applications dans des environnements sur site, d'informatique en périphérie et de cloud public, quel que soit le fournisseur, grâce à  IBM Cloud Satellite, une solution de cloud distribué géré.
  • Simplifiez et consolidez vos lacs de données en déployant de manière transparente le stockage d'entreprise en conteneur dans les environnements sur site et dans le cloud public avec les  solutions de stockage dans le cloud hybride IBM.
  • Simplifiez la gestion complexe de l'informatique hybride grâce aux  services gérés du Cloud IBM
  • .

Obtenez un compte IBM Cloud  dès aujourd'hui.


Solutions connexes

Red Hat OpenShift

D'un clic, déployez des clusters hautement disponibles et entièrement gérés.


Kubernetes Service

Déployez des clusters sécurisés haute disponibilité dans un environnement Kubernetes natif.


Cloud Satellite Solutions

Générer des applications rapidement, les exécuter n'importe où


Solutions de stockage dans le cloud hybride

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.


Cloud Managed Services

Simplifiez la gestion informatique hybride complexe pour plus de visibilité, de maniabilité et de flexibilité.


Solutions IBM Cloud

Hybride. Ouvert. Résilient. Votre plateforme et partenaire pour la transformation numérique.