1.5. Différences entre Service Mesh et Istio


Red Hat OpenShift Service Mesh diffère d'une installation d'Istio pour fournir des fonctionnalités supplémentaires ou pour gérer les différences lors du déploiement sur OpenShift Container Platform.

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

Les fonctionnalités suivantes sont différentes dans Service Mesh et Istio.

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

1.5.1.2. Installation et mise à niveau

Red Hat OpenShift Service Mesh ne prend pas en charge les profils d'installation Istio.

Red Hat OpenShift Service Mesh ne prend pas en charge les mises à niveau canari du maillage de services.

1.5.1.3. 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 devez 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 Container Platform telles que les pods de construction. Pour activer l'injection automatique, spécifiez l'étiquette sidecar.istio.io/inject, ou l'annotation, comme décrit dans la section Automatic sidecar injection.

Tableau 1.3. Paramètres de l'étiquette d'injection du sidecar et des annotations
 Amont IstioRed Hat OpenShift Service Mesh

Étiquette de l'espace de noms

prend en charge les "personnes habilitées" et les "personnes handicapées"

soutient "disabled"

Étiquette de la cosse

prend en charge "vrai" et "faux"

prend en charge "vrai" et "faux"

Annotation du pod

ne prend en charge que les "faux"

prend en charge "vrai" et "faux"

1.5.1.4. 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: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin-usernamepolicy
spec:
  action: ALLOW
  rules:
    - when:
        - key: 'request.regex.headers[username]'
          values:
            - "allowed.*"
  selector:
    matchLabels:
      app: httpbin

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

1.5.1.6. Charges de travail externes

Red Hat OpenShift Service Mesh ne prend pas en charge les charges de travail externes, telles que les machines virtuelles exécutées en dehors d'OpenShift sur des serveurs bare metal.

1.5.1.7. Prise en charge des machines virtuelles

Vous pouvez déployer des machines virtuelles sur OpenShift en utilisant OpenShift Virtualization. Ensuite, vous pouvez appliquer une politique de maillage, telle que mTLS ou AuthorizationPolicy, à ces machines virtuelles, comme n'importe quel autre pod faisant partie d'un maillage.

1.5.1.8. 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, le traçage distribué (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.

1.5.1.9. Filtres Envoy

Red Hat OpenShift Service Mesh ne prend pas en charge la configuration EnvoyFilter, sauf lorsqu'elle est explicitement documentée. En raison du couplage étroit avec les API Envoy sous-jacentes, la compatibilité ascendante ne peut pas être maintenue. Les correctifs EnvoyFilter sont très sensibles au format de la configuration Envoy qui est générée par Istio. Si la configuration générée par Istio change, il est possible que l'application du correctif EnvoyFilter soit interrompue.

1.5.1.10. Services Envoy

Red Hat OpenShift Service Mesh ne prend pas en charge les services basés sur QUIC.

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

1.5.1.12. Paramètres mTLS globaux

Red Hat OpenShift Service Mesh crée une ressource PeerAuthentication qui active ou désactive l'authentification mutuelle TLS (mTLS) au sein du maillage.

1.5.1.13. Passerelles

Red Hat OpenShift Service Mesh installe des passerelles d'entrée et de sortie par défaut. Vous pouvez désactiver l'installation des passerelles dans la ressource ServiceMeshControlPlane (SMCP) en utilisant les paramètres suivants :

  • spec.gateways.enabled=false pour désactiver les passerelles d'entrée et de sortie.
  • spec.gateways.ingress.enabled=false pour désactiver les passerelles d'entrée.
  • spec.gateways.egress.enabled=false pour désactiver les passerelles de sortie.
Note

L'opérateur annote les passerelles par défaut pour indiquer qu'elles sont générées et gérées par l'opérateur Red Hat OpenShift Service Mesh.

1.5.1.14. Configurations multicluster

La prise en charge de Red Hat OpenShift Service Mesh pour les configurations multicluster est limitée à la fédération de maillages de services sur plusieurs clusters.

1.5.1.15. Demandes de signature de certificat personnalisées (CSR)

Vous ne pouvez pas configurer Red Hat OpenShift Service Mesh pour traiter les CSR via l'autorité de certification (CA) de Kubernetes.

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

1.5.1.16.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>. Consultez la documentation d'OpenShift Container Platform pour plus d'informations sur le fonctionnement des noms d'hôtes par défaut et sur la façon dont cluster-admin peut les personnaliser. Si vous utilisez Red Hat OpenShift Dedicated, reportez-vous au rôle dedicated-admin de Red Hat OpenShift Dedicated.

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

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

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

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

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

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

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