Accueil les sujets Qu'est-ce qu'Istio ? Qu'est-ce qu'Istio ?
Istio est une couche de maillage de services open source configurable qui se connecte, surveille et sécurise les conteneurs dans un cluster Kubernetes.
Arrière-plan noir et bleu
Qu'est-ce qu'Istio ?

Istio est une couche de maillage de service open source configurable qui se connecte, surveille et sécurise les conteneurs dans un cluster Kubernetes. À ce jour, Istio ne fonctionne en mode natif qu'avec Kubernetes, mais sa nature open source permet à quiconque d'écrire des extensions permettant à Istio de fonctionner sur n'importe quel logiciel de cluster. Aujourd'hui, nous allons nous concentrer sur l'utilisation d'Istio avec Kubernetes, son cas d'utilisation le plus populaire.

Kubernetes est un outil d'orchestration de conteneurs, et une unité centrale 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 comporter une dizaine de nœuds différents, chacun représentant des microservices différents. Kubernetes gère la disponibilité et la consommation de ressources des nœuds, en ajoutant des pods à mesure que la demande augmente grâce au pod autoscaler. Istio injecte des conteneurs supplémentaires dans le pod pour renforcer la sécurité, la gestion et la surveillance.

Étant un logiciel open source, Istio peut fonctionner sur n'importe quel fournisseur de cloud public qui le prend en charge et sur n'importe quel cloud privé si les administrateurs y consentent.

La vidéo suivante explique plus en détail les concepts de base d'Istio :

Le maillage des services du réseau

Lorsque des entreprises passent aux microservices, elles doivent prendre en charge des dizaines, voire des centaines d'applications spécifiques. La gestion séparée de ces points d'extrémité implique de prendre en charge un grand nombre de machines virtuelles ou VM, y compris la demande. Un logiciel de cluster tel que Kubernetes peut créer des pods et les faire évoluer, mais Kubernetes ne fournit pas de routage, de règles de trafic, ni d'outils de surveillance ou de débogage puissants.

C'est ici qu'intervient le maillage de services.

À mesure que le nombre de services augmente, le nombre de moyens de communication potentiels progresse de manière exponentielle. 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 offre un moyen unique de configurer ces voies de communication en créant une politique pour la communication.

Un maillage de services instrumente les services et dirige le trafic de communication selon une configuration prédéfinie. Cela signifie qu'au lieu de configurer un conteneur en cours d'exécution (ou d'écrire du code pour le faire), un administrateur peut fournir une configuration au maillage de services et lui faire effectuer ce travail. Auparavant, cela devait toujours se faire avec les serveurs web et la communication de service à service.

La façon la plus courante de faire cela 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 de communication entre les services et les conteneurs.

Istio et Kubernetes

Comme nous l'avons mentionné précédemment, Istio se superpose à Kubernetes, en ajoutant des conteneurs qui sont pratiquement invisibles pour le programmeur et l'administrateur. Appelés conteneurs side-car, ils agissent comme une personne intermédiaire qui dirige le trafic et surveille les interactions entre les composants. La combinaison des deux fonctionne de trois manières : configuration, surveillance et gestion.

Configuration

La principale méthode pour définir la configuration avec Kubernetes est la commande kubectl, communément appelée "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 qui fonctionnent avec Kubernetes. Les outils d'Istio peuvent gérer et visualiser l'état de santé des applications et vous fournir plus d'informations que la simple surveillance générale des clusters et des nœuds fournie par Kubernetes.

Gestion

Étant donné que l'interface d'Istio est pratiquement identique à celle de Kubernetes, sa gestion ne nécessite quasiment aucun travail supplémentaire. Par ailleurs, Istio permet à l'utilisateur de créer des politiques qui ont un impact sur l'ensemble du cluster Kubernetes et le gèrent, ce qui réduit le temps de gestion de chaque cluster tout en évitant d'avoir recours à un code de gestion personnalisé.

Avantages d'Istio

Le maillage de services présente de nombreux avantages, notamment l'amélioration du débogage, de la surveillance, du routage, de la sécurité et des possibilités d'exploitation. Autrement dit, avec Istio, il faudra moins d'efforts pour gérer un groupe plus large de services.

Amélioration du débogage

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 appels de service est défectueux, une série de défaillances en cascade se produit, entraînant une erreur 500, une erreur 400, voire l'absence totale de réponse.

Pour déboguer cet ensemble d'appels, vous pouvez utiliser quelque chose comme une trace de pile. Sur le front-end, les développeurs côté client peuvent voir quels éléments sont récupérés des serveurs Web, dans quel ordre, et les examiner. Les programmeurs front-end 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 quels sont ceux qui répondent le 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 les administrateurs informatiques peuvent vouloir observer le trafic pour voir la latence, le temps de service, les erreurs en pourcentage du trafic, etc. Souvent, ils veulent voir un tableau de bord. Un tableau de bord fournit une visualisation de la somme, ou de la moyenne, de ces paramètres au fil du temps, et permet peut-être d'accéder à 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 politique 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. Pour assurer le bon fonctionnement des services, une autre politique consiste à limiter le débit, ce qui empêchera le trafic excessif de saturer un service et préviendra les attaques par déni de service.

Routage et équilibrage de charge

Par défaut, Kubernetes fournit un équilibrage de charge de type 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. Cependant, il arrive qu'une entreprise déploie différentes versions d'un même service en production.

L'exemple le plus simple peut être un déploiement bleu/vert. Dans ce cas, le logiciel peut construire une version entièrement nouvelle de l'application en production sans y envoyer les utilisateurs. Après avoir lancé la nouvelle version, l'entreprise peut conserver les anciens serveurs afin de rétablir rapidement la situation en cas de panne.

Avec Istio, c'est aussi simple que d'utiliser le balisage dans un fichier de configuration. Les administrateurs peuvent également utiliser des étiquettes pour indiquer le type de service auquel se connecter et élaborer des règles basées sur les en-têtes. Ainsi, par exemple, les utilisateurs de la version bêta peuvent accéder à un pod Canary contenant la dernière et meilleure version, tandis que les utilisateurs réguliers accèdent à la version stable de production.

Coupure de circuit

Si un service est surchargé ou hors service, les nouvelles demandes échoueront tout en continuant à surcharger le système. Comme Istio surveille les erreurs et les retards, il peut imposer une pause (pour permettre à un service de se rétablir) après un nombre spécifique de demandes défini par la politique. Vous pouvez appliquer cette politique à l'ensemble du cluster en créant un petit fichier texte et en demandant à Istio de l'utiliser comme nouvelle politique.

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 puisse falsifier ou usurper un appel de service. L'AAA fournit aux professionnels de la sécurité et des opérations les outils dont ils ont besoin pour surveiller, avec moins de contraintes.

Simplification de l'administration

Les applications traditionnelles continuent d'avoir besoin des fonctions d'identification, de politique et de sécurité offertes par Istio. Les programmeurs et les administrateurs travaillent donc à un niveau d'abstraction inadéquat en réimplantant sans cesse les mêmes règles de sécurité pour chaque service. Istio leur permet de travailler au bon niveau, en définissant la politique du cluster à l'aide d'un panneau de contrôle unique. 

Solutions connexes
Red Hat OpenShift on IBM Cloud

Avec Red Hat OpenShift on IBM Cloud, les développeurs OpenShift disposent d'un moyen rapide et sécurisé de conteneuriser et déployer des charges de travail d'entreprise dans des clusters Kubernetes.

Explorer Red Hat OpenShift
IBM Cloud Satellite

Déployez et exécutez des applications de manière cohérente dans des environnements sur site, en périphérie et dans le cloud public, quel que soit le fournisseur de cloud, en utilisant un ensemble commun de services de cloud, notamment des chaînes d'outils, des bases de données et l'intelligence artificielle.

Explorer IBM Cloud Satellite
IBM Cloud Satellite

Déployez et exécutez des applications de manière cohérente dans des environnements sur site, en périphérie et dans le cloud public, quel que soit le fournisseur de cloud, en utilisant un ensemble commun de services de cloud, notamment des chaînes d'outils, des bases de données et l'intelligence artificielle.

Explorer IBM Cloud Satellite
Ressources Des conteneurs dans l'entreprise

Une nouvelle étude d'IBM montre que l'adoption des conteneurs et de Kubernetes est en plein essor.

Qu'est-ce que le mode « sans serveur » ?

Le mode sans serveur est un modèle de développement et d'exécution d'applications dans le cloud qui permet aux développeurs de créer et d'exécuter du code sans avoir à gérer de serveurs ou à payer pour une infrastructure cloud inactive.

Une informatique flexible, résiliente et sécurisée pour votre cloud hybride

Les conteneurs font partie d'une stratégie de cloud hybride qui vous permet de créer et de gérer des charges de travail depuis n'importe où.

Pour aller plus loin

Déployez des clusters Kubernetes à haute disponibilité et entièrement gérés avec Red Hat OpenShift on IBM Cloud, un service OpenShift géré qui tire parti de l'envergure et de la sécurité d'IBM Cloud pour automatiser les mises à jour, la mise à l'échelle et la mise à disposition. Red Hat OpenShift on 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.

Explorer Red Hat OpenShift on IBM Cloud