2.3. Différences entre Service Mesh et Istio


Avertissement

You are viewing documentation for a Red Hat OpenShift Service Mesh release that is no longer supported.

Les plans de contrôle Service Mesh version 1.0 et 1.1 ne sont plus pris en charge. Pour plus d'informations sur la mise à niveau de votre plan de contrôle Service Mesh, voir Mise à niveau de Service Mesh.

Pour plus d'informations sur l'état de l'assistance d'une version particulière de Red Hat OpenShift Service Mesh, consultez la page Cycle de vie du produit.

Une installation de Red Hat OpenShift Service Mesh diffère des installations de la communauté Istio en amont de plusieurs façons. Les modifications apportées à Red Hat OpenShift Service Mesh sont parfois nécessaires pour résoudre des problèmes, fournir des fonctionnalités supplémentaires ou gérer les différences lors du déploiement sur OpenShift Container Platform.

La version actuelle de Red Hat OpenShift Service Mesh diffère de la version actuelle de la communauté Istio en amont de la manière suivante :

2.3.1. Installations multi-locataires

Alors qu'Istio en amont adopte une approche à locataire unique, Red Hat OpenShift Service Mesh prend en charge plusieurs plans de contrôle indépendants au sein du cluster. Red Hat OpenShift Service Mesh utilise un opérateur multilocataire pour gérer le cycle de vie du plan de contrôle.

Red Hat OpenShift Service Mesh installe un plan de contrôle multitenant par défaut. Vous spécifiez les projets qui peuvent accéder au Service Mesh, et vous isolez le Service Mesh des autres instances du plan de contrôle.

2.3.1.1. Multitenancy ou installations en grappe

La principale différence entre une installation multitenant et une installation à l'échelle d'un cluster est l'étendue des privilèges utilisés par istod. Les composants n'utilisent plus les ressources du contrôle d'accès basé sur les rôles (RBAC) à l'échelle du cluster ClusterRoleBinding.

Chaque projet de la liste ServiceMeshMemberRoll members aura un RoleBinding pour chaque compte de service associé au déploiement du plan de contrôle et chaque déploiement du plan de contrôle ne surveillera que ces projets membres. Chaque projet membre se voit ajouter une étiquette maistra.io/member-of, où la valeur member-of correspond au projet contenant l'installation du plan de contrôle.

Red Hat OpenShift Service Mesh configure chaque projet membre pour assurer l'accès au réseau entre lui-même, le plan de contrôle et les autres projets membres. La configuration exacte diffère en fonction de la façon dont le réseau défini par logiciel (SDN) de OpenShift Container Platform est configuré. Voir À propos d'OpenShift SDN pour plus de détails.

Si le cluster OpenShift Container Platform est configuré pour utiliser le plugin SDN :

  • NetworkPolicy: Red Hat OpenShift Service Mesh crée une ressource NetworkPolicy dans chaque projet membre permettant l'entrée de tous les pods depuis les autres membres et le plan de contrôle. Si vous supprimez un membre de Service Mesh, cette ressource NetworkPolicy est supprimée du projet.

    Note

    Cela limite également les entrées aux seuls projets membres. Si vous avez besoin de l'entrée de projets non membres, vous devez créer un site NetworkPolicy pour permettre le passage de ce trafic.

  • Multitenant: Red Hat OpenShift Service Mesh joint le NetNamespace de chaque projet membre au NetNamespace du projet du plan de contrôle (l'équivalent de l'exécution de oc adm pod-network join-projects --to control-plane-project member-project). Si vous retirez un membre du Service Mesh, son NetNamespace est isolé du plan de contrôle (l'équivalent de l'exécution de oc adm pod-network isolate-projects member-project).
  • Subnet: Aucune configuration supplémentaire n'est effectuée.

2.3.1.2. Ressources en grappe

Upstream Istio dispose de deux ressources de type " cluster scoped " sur lesquelles il s'appuie. Les ressources MeshPolicy et ClusterRbacConfig ne sont pas compatibles avec un cluster multitenant et ont été remplacées comme décrit ci-dessous.

  • ServiceMeshPolicy remplace MeshPolicy pour la configuration des politiques d'authentification à l'échelle du plan de contrôle. Elle doit être créée dans le même projet que le plan de contrôle.
  • ServicemeshRbacConfig remplace ClusterRbacConfig pour la configuration du contrôle d'accès basé sur les rôles à l'échelle du plan de contrôle. Il doit être créé dans le même projet que le plan de contrôle.

2.3.2. Différences entre Istio et Red Hat OpenShift Service Mesh

Une installation de Red Hat OpenShift Service Mesh diffère d'une installation d'Istio de plusieurs façons. Les modifications apportées à Red Hat OpenShift Service Mesh sont parfois nécessaires pour résoudre des problèmes, fournir des fonctionnalités supplémentaires ou gérer les différences lors du déploiement sur OpenShift Container Platform.

2.3.2.1. Outil de ligne de commande

L'outil de ligne de commande pour Red Hat OpenShift Service Mesh est oc. Red Hat OpenShift Service Mesh ne prend pas en charge istioctl.

2.3.2.2. Injection automatique

L'installation de la communauté Istio en amont injecte automatiquement le sidecar dans les pods des projets que vous avez étiquetés.

Red Hat OpenShift Service Mesh n'injecte pas automatiquement le sidecar dans les pods, mais vous demande d'opter pour l'injection à l'aide d'une annotation sans étiqueter les projets. Cette méthode nécessite moins de privilèges et n'entre pas en conflit avec d'autres capacités d'OpenShift telles que les pods de construction. Pour activer l'injection automatique, vous devez spécifier l'annotation sidecar.istio.io/inject comme décrit dans la section Injection automatique du sidecar.

2.3.2.3. Fonctionnalités du contrôle d'accès basé sur les rôles d'Istio

Le contrôle d'accès basé sur les rôles (RBAC) d'Istio fournit un mécanisme que vous pouvez utiliser pour contrôler l'accès à un service. Vous pouvez identifier les sujets par nom d'utilisateur ou en spécifiant un ensemble de propriétés et appliquer les contrôles d'accès en conséquence.

L'installation de la communauté Istio en amont inclut des options pour effectuer des correspondances exactes d'en-tête, des correspondances de caractères génériques dans les en-têtes, ou pour vérifier un en-tête contenant un préfixe ou un suffixe spécifique.

Red Hat OpenShift Service Mesh étend la capacité de faire correspondre les en-têtes de requête en utilisant une expression régulière. Spécifiez une clé de propriété de request.regex.headers avec une expression régulière.

Exemple d'en-tête de requête de correspondance de communauté Istio en amont

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: httpbin-client-binding
  namespace: httpbin
spec:
  subjects:
  - user: "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    properties:
      request.headers[<header>]: "value"

Red Hat OpenShift Service Mesh : correspondance des en-têtes de requête à l'aide d'expressions régulières

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: httpbin-client-binding
  namespace: httpbin
spec:
  subjects:
  - user: "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    properties:
      request.regex.headers[<header>]: "<regular expression>"

2.3.2.4. OpenSSL

Red Hat OpenShift Service Mesh remplace BoringSSL par OpenSSL. OpenSSL est une bibliothèque logicielle qui contient une implémentation open source des protocoles Secure Sockets Layer (SSL) et Transport Layer Security (TLS). Le binaire Red Hat OpenShift Service Mesh Proxy lie dynamiquement les bibliothèques OpenSSL (libssl et libcrypto) à partir du système d'exploitation Red Hat Enterprise Linux sous-jacent.

2.3.2.5. Modifications des composants

  • Une étiquette maistra-version a été ajoutée à toutes les ressources.
  • Toutes les ressources Ingress ont été converties en ressources OpenShift Route.
  • Grafana, Tracing (Jaeger), et Kiali sont activés par défaut et exposés à travers les routes OpenShift.
  • Godebug a été supprimé de tous les modèles
  • Les liens istio-multi ServiceAccount et ClusterRoleBinding ont été supprimés, ainsi que le lien istio-reader ClusterRole.

2.3.2.6. Envoyé, Service secret de découverte, et certificats

  • Red Hat OpenShift Service Mesh ne prend pas en charge les services basés sur QUIC.
  • Le déploiement de certificats TLS à l'aide de la fonctionnalité Secret Discovery Service (SDS) d'Istio n'est pas actuellement pris en charge dans Red Hat OpenShift Service Mesh. La mise en œuvre d'Istio dépend d'un conteneur nodeagent qui utilise des montages hostPath.

2.3.2.7. Plugin Istio Container Network Interface (CNI)

Red Hat OpenShift Service Mesh inclut le plugin CNI, qui vous offre une autre façon de configurer la mise en réseau des pods d'application. Le plugin CNI remplace la configuration du réseau init-container, ce qui élimine la nécessité d'accorder aux comptes de service et aux projets l'accès aux contraintes de contexte de sécurité (SCC) avec des privilèges élevés.

2.3.2.8. Routes pour les passerelles Istio

Les routes OpenShift pour les passerelles Istio sont automatiquement gérées dans Red Hat OpenShift Service Mesh. Chaque fois qu'une passerelle Istio est créée, mise à jour ou supprimée dans le service mesh, une route OpenShift est créée, mise à jour ou supprimée.

Un composant du plan de contrôle de Red Hat OpenShift Service Mesh appelé Istio OpenShift Routing (IOR) synchronise l'itinéraire de la passerelle. Pour plus d'informations, voir Création automatique d'itinéraires.

2.3.2.8.1. Domaines fourre-tout

Les domaines fourre-tout ("*") ne sont pas pris en charge. Si un tel domaine est trouvé dans la définition de la passerelle, Red Hat OpenShift Service Mesh will créera la route, mais s'appuiera sur OpenShift pour créer un nom d'hôte par défaut. Cela signifie que la route nouvellement créée not sera une route "catch all" ("*"), au lieu de cela, elle aura un nom d'hôte de la forme <route-name>[-<project>].<suffix>. Voir la documentation d'OpenShift pour plus d'informations sur le fonctionnement des noms d'hôtes par défaut et sur la façon dont un administrateur de cluster peut les personnaliser.

2.3.2.8.2. Sous-domaines

Les sous-domaines (par exemple : "*.domain.com") sont pris en charge. Cependant, cette capacité n'est pas activée par défaut dans OpenShift Container Platform. Cela signifie que Red Hat OpenShift Service Mesh will crée la route avec le sous-domaine, mais qu'elle ne sera effective que si OpenShift Container Platform est configuré pour l'activer.

2.3.2.8.3. Sécurité de la couche transport

Transport Layer Security (TLS) est pris en charge. Cela signifie que, si la passerelle contient une section tls, la route OpenShift sera configurée pour prendre en charge TLS.

Ressources supplémentaires

2.3.3. Kiali et maille de service

L'installation de Kiali via le Service Mesh sur OpenShift Container Platform diffère des installations communautaires de Kiali de plusieurs façons. Ces modifications sont parfois nécessaires pour résoudre des problèmes, fournir des fonctionnalités supplémentaires ou gérer les différences lors du déploiement sur OpenShift Container Platform.

  • Kiali a été activé par défaut.
  • L'entrée a été activée par défaut.
  • Des mises à jour ont été apportées au ConfigMap de Kiali.
  • Des mises à jour ont été apportées aux paramètres ClusterRole pour Kiali.
  • Ne modifiez pas le ConfigMap, car vos modifications pourraient être écrasées par le Service Mesh ou les opérateurs Kiali. Les fichiers gérés par l'opérateur Kiali portent une étiquette ou une annotation kiali.io/. La mise à jour des fichiers de l'opérateur doit être limitée aux utilisateurs disposant des privilèges cluster-admin. Si vous utilisez Red Hat OpenShift Dedicated, la mise à jour des fichiers de l'opérateur doit être limitée aux utilisateurs disposant des privilèges dedicated-admin.

2.3.4. Traçage distribué et maillage des services

L'installation de la plateforme de traçage distribuée avec le Service Mesh sur OpenShift Container Platform diffère des installations communautaires de Jaeger de plusieurs façons. Ces modifications sont parfois nécessaires pour résoudre des problèmes, fournir des fonctionnalités supplémentaires ou gérer les différences lors du déploiement sur OpenShift Container Platform.

  • Le traçage distribué a été activé par défaut pour Service Mesh.
  • L'entrée a été activée par défaut pour le Service Mesh.
  • Le nom du port Zipkin a été changé en jaeger-collector-zipkin (au lieu de http)
  • Jaeger utilise Elasticsearch pour le stockage par défaut lorsque vous sélectionnez l'option de déploiement production ou streaming.
  • La version communautaire d'Istio fournit une route générique "tracing". Red Hat OpenShift Service Mesh utilise une route "jaeger" qui est installée par l'opérateur de la plateforme de traçage distribuée Red Hat OpenShift et qui est déjà protégée par OAuth.
  • Red Hat OpenShift Service Mesh utilise un sidecar pour le proxy Envoy, et Jaeger utilise également un sidecar, pour l'agent Jaeger. Ces deux sidecars sont configurés séparément et ne doivent pas être confondus l'un avec l'autre. Le sidecar du proxy crée des travées liées au trafic d'entrée et de sortie du pod. Le sidecar agent reçoit les spans émis par l'application et les envoie au collecteur Jaeger.
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.