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.
Amont Istio | Red 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 lienistio-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.
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 ressourceNetworkPolicy
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 ressourceNetworkPolicy
est supprimée du projet.NoteCela 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 auNetNamespace
du projet du plan de contrôle (l'équivalent de l'exécution deoc adm pod-network join-projects --to control-plane-project member-project
). Si vous retirez un membre du Service Mesh, sonNetNamespace
est isolé du plan de contrôle (l'équivalent de l'exécution deoc 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ègescluster-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ègesdedicated-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 dehttp
) -
Jaeger utilise Elasticsearch pour le stockage par défaut lorsque vous sélectionnez l'option de déploiement
production
oustreaming
. - 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.