1.18. Connexion des mailles de service
Federation est un modèle de déploiement qui vous permet de partager des services et des charges de travail entre des mailles séparées gérées dans des domaines administratifs distincts.
1.18.1. Vue d'ensemble de la Fédération
La fédération est un ensemble de fonctions qui vous permettent de connecter des services entre des mailles distinctes, ce qui permet d'utiliser les fonctions du Service Mesh telles que l'authentification, l'autorisation et la gestion du trafic dans plusieurs domaines administratifs distincts.
La mise en œuvre d'un maillage fédéré vous permet d'exécuter, de gérer et d'observer un maillage de services unique fonctionnant sur plusieurs clusters OpenShift. Red Hat OpenShift Service Mesh federation adopte une approche fondée sur l'opinion pour une mise en œuvre multi-clusters de Service Mesh qui suppose minimal la confiance entre les mailles.
La fédération de mailles de services suppose que chaque maille est gérée individuellement et conserve son propre administrateur. Par défaut, aucune communication n'est autorisée et aucune information n'est partagée entre les mailles. Le partage d'informations entre les mailles se fait sur la base d'un consentement explicite. Rien n'est partagé dans un maillage fédéré s'il n'a pas été configuré pour le partage. Les fonctions de support telles que la génération de certificats, les métriques et la collecte de traces restent locales dans leurs mailles respectives.
Vous configurez le site ServiceMeshControlPlane
sur chaque maille de service pour créer des passerelles d'entrée et de sortie spécifiques à la fédération et pour spécifier le domaine de confiance pour la maille.
La fédération implique également la création de fichiers de fédération supplémentaires. Les ressources suivantes sont utilisées pour configurer la fédération entre deux ou plusieurs mailles.
- Une ressource ServiceMeshPeer déclare la fédération entre une paire de mailles de services.
- Une ressource ExportedServiceSet déclare qu'un ou plusieurs services du réseau maillé sont disponibles pour être utilisés par un réseau maillé homologue.
- Une ressource ImportedServiceSet indique quels services exportés par une maille homologue seront importés dans la maille.
1.18.2. Caractéristiques de la Fédération
Les caractéristiques de l'approche fédérée de Red Hat OpenShift Service Mesh pour rejoindre les maillages sont les suivantes :
- Prend en charge les certificats racine communs pour chaque maille.
- Prend en charge des certificats racine différents pour chaque maille.
- Les administrateurs de maillage doivent configurer manuellement les chaînes de certificats, les points d'extrémité de découverte de services, les domaines de confiance, etc. pour les mailles situées en dehors du maillage fédéré.
N'exportez/importez que les services que vous souhaitez partager entre les mailles.
- Par défaut, les informations sur les charges de travail déployées ne sont pas partagées avec les autres mailles de la fédération. Un service peut être exported pour le rendre visible à d'autres mailles et permettre des requêtes de charges de travail en dehors de sa propre maille.
- Un service qui a été exporté peut être imported vers une autre maille, ce qui permet aux charges de travail de cette maille d'envoyer des demandes au service importé.
- Cryptage permanent des communications entre les mailles.
- Permet de configurer l'équilibrage de la charge entre les charges de travail déployées localement et les charges de travail déployées dans une autre maille de la fédération.
Lorsqu'une maille est reliée à une autre maille, elle peut effectuer les opérations suivantes :
- Fournir au réseau fédéré des informations de confiance le concernant.
- Découvrez les informations de confiance sur le maillage fédéré.
- Fournir des informations au maillage fédéré sur ses propres services exportés.
- Découvrir des informations sur les services exportés par le maillage fédéré.
1.18.3. Sécurité de la Fédération
La fédération Red Hat OpenShift Service Mesh adopte une approche fondée sur l'opinion pour une mise en œuvre multi-clusters de Service Mesh qui suppose une confiance minimale entre les mailles. La sécurité des données est intégrée dans les fonctionnalités de la fédération.
- Chaque maille est considérée comme un locataire unique, avec une administration unique.
- Vous créez un domaine de confiance unique pour chaque maille de la fédération.
- Le trafic entre les mailles fédérées est automatiquement crypté à l'aide de la sécurité mutuelle de la couche transport (mTLS).
- Le graphique de Kiali n'affiche que votre maillage et les services que vous avez importés. Vous ne pouvez pas voir les autres mailles ou services qui n'ont pas été importés dans votre maille.
1.18.4. Limites de la Fédération
L'approche fédérée de Red Hat OpenShift Service Mesh pour joindre les mailles a les limitations suivantes :
- La fédération de maillages n'est pas prise en charge sur OpenShift Dedicated.
1.18.5. Conditions préalables de la Fédération
L'approche fédérée de Red Hat OpenShift Service Mesh pour joindre les mailles a les prérequis suivants :
- Deux ou plusieurs clusters OpenShift Container Platform 4.6 ou supérieur.
- La fédération a été introduite dans Red Hat OpenShift Service Mesh 2.1 ou une version ultérieure. Vous devez avoir l'opérateur Red Hat OpenShift Service Mesh 2.1 ou ultérieur installé sur chaque maille que vous souhaitez fédérer.
-
Vous devez avoir une version 2.1 ou plus récente de
ServiceMeshControlPlane
déployée sur chaque maille que vous voulez fédérer. - Vous devez configurer les répartiteurs de charge prenant en charge les services associés aux passerelles de fédération pour qu'ils prennent en charge le trafic TLS brut. Le trafic de la fédération se compose de HTTPS pour la découverte et de TCP crypté brut pour le trafic de service.
-
Les services que vous souhaitez exposer à un autre maillage doivent être déployés avant de pouvoir les exporter et les importer. Il ne s'agit toutefois pas d'une exigence stricte. Vous pouvez spécifier des noms de services qui n'existent pas encore pour l'exportation/importation. Lorsque vous déployez les services nommés dans les adresses
ExportedServiceSet
etImportedServiceSet
, ils sont automatiquement mis à disposition pour l'exportation/l'importation.
1.18.6. Planification de votre fédération de maillage
Avant de commencer à configurer votre fédération de maillage, vous devez prendre le temps de planifier votre mise en œuvre.
- Combien de mailles envisagez-vous d'intégrer dans une fédération ? Vous voudrez probablement commencer avec un nombre limité de mailles, peut-être deux ou trois.
Quelle convention de dénomination prévoyez-vous d'utiliser pour chaque maille ? Le fait de disposer d'une convention de dénomination prédéfinie facilitera la configuration et le dépannage. Les exemples de cette documentation utilisent des couleurs différentes pour chaque maille. Vous devez décider d'une convention de dénomination qui vous aidera à déterminer qui possède et gère chaque maille, ainsi que les ressources de fédération suivantes :
- Noms des groupes
- Noms de réseaux de clusters
- Noms de mailles et espaces de noms
- Passerelles d'entrée de la fédération
- Passerelles de sortie de la fédération
Domaines de confiance en matière de sécurité
NoteChaque maille de la fédération doit avoir son propre domaine de confiance.
Quels services de chaque maillage prévoyez-vous d'exporter vers le maillage fédéré ? Chaque service peut être exporté individuellement, ou vous pouvez spécifier des étiquettes ou utiliser des caractères génériques.
- Souhaitez-vous utiliser des alias pour les espaces de noms des services ?
- Souhaitez-vous utiliser des alias pour les services exportés ?
Quels sont les services exportés que chaque maille prévoit d'importer ? Chaque maille n'importe que les services dont elle a besoin.
- Souhaitez-vous utiliser des alias pour les services importés ?
1.18.7. Fédération de maillage entre clusters
Pour connecter une instance d'OpenShift Service Mesh avec une instance fonctionnant dans un cluster différent, la procédure n'est pas très différente de celle utilisée pour connecter deux meshs déployés dans le même cluster. Cependant, la passerelle d'entrée d'un maillage doit être accessible depuis l'autre maillage. Une façon de s'en assurer est de configurer le service de passerelle comme un service LoadBalancer
si le cluster supporte ce type de service.
Le service doit être exposé par l'intermédiaire d'un équilibreur de charge qui fonctionne à la couche 4 du modèle OSI.
1.18.7.1. Exposer l'entrée de la fédération sur des clusters fonctionnant sur du métal nu
Si le cluster fonctionne sur du métal nu et prend entièrement en charge les services LoadBalancer
, l'adresse IP indiquée dans le champ .status.loadBalancer.ingress.ip
de l'objet Service
de la passerelle d'entrée doit être spécifiée comme l'une des entrées du champ .spec.remote.addresses
de l'objet ServiceMeshPeer
.
Si le cluster ne prend pas en charge les services LoadBalancer
, l'utilisation d'un service NodePort
peut être une option si les nœuds sont accessibles depuis le cluster qui exécute l'autre maille. Dans l'objet ServiceMeshPeer
, indiquez les adresses IP des nœuds dans le champ .spec.remote.addresses
et les ports de nœud du service dans les champs .spec.remote.discoveryPort
et .spec.remote.servicePort
.
1.18.7.2. Exposer l'entrée de la fédération sur des clusters fonctionnant sur IBM Power et IBM zSystems
Si le cluster fonctionne sur une infrastructure IBM Power ou IBM zSystems et prend entièrement en charge les services LoadBalancer
, l'adresse IP figurant dans le champ .status.loadBalancer.ingress.ip
de l'objet Service
de la passerelle d'entrée doit être spécifiée comme l'une des entrées du champ .spec.remote.addresses
de l'objet ServiceMeshPeer
.
Si le cluster ne prend pas en charge les services LoadBalancer
, l'utilisation d'un service NodePort
peut être une option si les nœuds sont accessibles depuis le cluster qui exécute l'autre maille. Dans l'objet ServiceMeshPeer
, indiquez les adresses IP des nœuds dans le champ .spec.remote.addresses
et les ports de nœud du service dans les champs .spec.remote.discoveryPort
et .spec.remote.servicePort
.
1.18.7.3. Exposer l'entrée de la fédération sur Amazon Web Services (AWS)
Par défaut, les services LoadBalancer dans les clusters fonctionnant sur AWS ne prennent pas en charge l'équilibrage de charge L4. Pour que la fédération Red Hat OpenShift Service Mesh fonctionne correctement, l'annotation suivante doit être ajoutée au service de passerelle d'entrée :
service.beta.kubernetes.io/aws-load-balancer-type : nlb
Le nom de domaine entièrement qualifié figurant dans le champ .status.loadBalancer.ingress.hostname
de l'objet Service
de la passerelle d'entrée doit être spécifié comme l'une des entrées du champ .spec.remote.addresses
de l'objet ServiceMeshPeer
.
1.18.7.4. Exposer l'entrée de la fédération sur Azure
Sur Microsoft Azure, il suffit de définir le type de service sur LoadBalancer
pour que la fédération mesh fonctionne correctement.
L'adresse IP figurant dans le champ .status.loadBalancer.ingress.ip
de l'objet "ingress gateway" (passerelle d'entrée) Service
doit être spécifiée comme l'une des entrées du champ .spec.remote.addresses
de l'objet ServiceMeshPeer
.
1.18.7.5. Exposer l'entrée de la fédération sur Google Cloud Platform (GCP)
Sur Google Cloud Platform, il suffit de définir le type de service sur LoadBalancer
pour que la fédération de maillage fonctionne correctement.
L'adresse IP figurant dans le champ .status.loadBalancer.ingress.ip
de l'objet "ingress gateway" (passerelle d'entrée) Service
doit être spécifiée comme l'une des entrées du champ .spec.remote.addresses
de l'objet ServiceMeshPeer
.
1.18.8. Liste de contrôle pour la mise en œuvre de la fédération
La fédération de maillages de services implique les activités suivantes :
❏ Configurez le réseau entre les clusters que vous allez fédérer.
- ❏ Configurer les équilibreurs de charge prenant en charge les services associés aux passerelles de fédération pour prendre en charge le trafic TLS brut.
- ❏ Installation de l'opérateur Red Hat OpenShift Service Mesh version 2.1 ou ultérieure dans chacun de vos clusters.
-
❏ Déployer une version 2.1 ou ultérieure de
ServiceMeshControlPlane
sur chacun de vos clusters. ❏ Configurer le SMCP pour la fédération pour chaque maille que vous voulez fédérer :
- ❏ Créez une passerelle de sortie de fédération pour chaque maille avec laquelle vous allez vous fédérer.
- ❏ Créez une passerelle d'entrée de fédération pour chaque maille avec laquelle vous allez vous fédérer.
- ❏ Configurer un domaine de confiance unique.
-
❏ Fédérer deux ou plusieurs mailles en créant une ressource
ServiceMeshPeer
pour chaque paire de mailles. -
❏ Exporter des services en créant une ressource
ExportedServiceSet
pour rendre les services disponibles d'un maillage à un maillage homologue. -
❏ Importer des services en créant une ressource
ImportedServiceSet
pour importer des services partagés par un pair maillé.
1.18.9. Configuration d'un plan de contrôle Service Mesh pour la fédération
Avant de pouvoir fédérer une maille, vous devez configurer le site ServiceMeshControlPlane
pour la fédération de mailles. Comme toutes les mailles membres de la fédération sont égales et que chaque maille est gérée indépendamment, vous devez configurer le SMCP pour la maille each qui participera à la fédération.
Dans l'exemple suivant, l'administrateur de red-mesh
configure le SMCP pour la fédération avec green-mesh
et blue-mesh
.
Exemple de SMCP pour red-mesh
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: red-mesh namespace: red-mesh-system spec: version: v2.3 runtime: defaults: container: imagePullPolicy: Always gateways: additionalEgress: egress-green-mesh: enabled: true requestedNetworkView: - green-network routerMode: sni-dnat service: metadata: labels: federation.maistra.io/egress-for: egress-green-mesh ports: - port: 15443 name: tls - port: 8188 name: http-discovery #note HTTP here egress-blue-mesh: enabled: true requestedNetworkView: - blue-network routerMode: sni-dnat service: metadata: labels: federation.maistra.io/egress-for: egress-blue-mesh ports: - port: 15443 name: tls - port: 8188 name: http-discovery #note HTTP here additionalIngress: ingress-green-mesh: enabled: true routerMode: sni-dnat service: type: LoadBalancer metadata: labels: federation.maistra.io/ingress-for: ingress-green-mesh ports: - port: 15443 name: tls - port: 8188 name: https-discovery #note HTTPS here ingress-blue-mesh: enabled: true routerMode: sni-dnat service: type: LoadBalancer metadata: labels: federation.maistra.io/ingress-for: ingress-blue-mesh ports: - port: 15443 name: tls - port: 8188 name: https-discovery #note HTTPS here security: trust: domain: red-mesh.local
Paramètres | Description | Valeurs | Valeur par défaut |
---|---|---|---|
spec: cluster: name: | Nom de la grappe. Vous n'êtes pas obligé de spécifier un nom de cluster, mais cela peut être utile pour le dépannage. | String | N/A |
spec: cluster: network: | Nom du réseau du cluster. Vous n'êtes pas obligé de spécifier un nom pour le réseau, mais cela peut être utile pour la configuration et le dépannage. | String | N/A |
1.18.9.1. Comprendre les passerelles de fédération
Vous utilisez un site gateway pour gérer le trafic entrant et sortant de votre maillage, ce qui vous permet de spécifier le trafic qui doit entrer ou sortir du maillage.
Vous utilisez des passerelles d'entrée et de sortie pour gérer le trafic entrant et sortant du maillage de services (trafic nord-sud). Lorsque vous créez un maillage fédéré, vous créez des passerelles d'entrée et de sortie supplémentaires pour faciliter la découverte des services entre les mailles fédérées, la communication entre les mailles fédérées et pour gérer le flux de trafic entre les mailles de service (trafic est-ouest).
Pour éviter les conflits de noms entre les mailles, vous devez créer des passerelles de sortie et d'entrée distinctes pour chaque maille. Par exemple, red-mesh
aura des passerelles de sortie distinctes pour le trafic allant vers green-mesh
et blue-mesh
.
Paramètres | Description | Valeurs | Valeur par défaut |
---|---|---|---|
spec: gateways: additionalEgress: <egressName>: | Définir une passerelle de sortie supplémentaire pour each mesh peer dans la fédération. | ||
spec: gateways: additionalEgress: <egressName>: enabled: | Ce paramètre permet d'activer ou de désactiver la sortie de la fédération. |
|
|
spec: gateways: additionalEgress: <egressName>: requestedNetworkView: | Réseaux associés aux services exportés. |
Définir la valeur de | |
spec: gateways: additionalEgress: <egressName>: routerMode: | Le mode routeur à utiliser par la passerelle. |
| |
spec: gateways: additionalEgress: <egressName>: service: metadata: labels: federation.maistra.io/egress-for: | Spécifiez une étiquette unique pour la passerelle afin d'empêcher le trafic fédéré de passer par les passerelles système par défaut du cluster. | ||
spec: gateways: additionalEgress: <egressName>: service: ports: |
Permet de spécifier les adresses |
Le port | |
spec: gateways: additionalIngress: | Définir une passerelle d'entrée supplémentaire pour each mesh peer dans la fédération. | ||
spec: gateways: additionalIgress: <ingressName>: enabled: | Ce paramètre permet d'activer ou de désactiver l'entrée de la fédération. |
|
|
spec: gateways: additionalIngress: <ingressName>: routerMode: | Le mode routeur à utiliser par la passerelle. |
| |
spec: gateways: additionalIngress: <ingressName>: service: type: | Le service de passerelle d'entrée doit être exposé par l'intermédiaire d'un équilibreur de charge qui fonctionne à la couche 4 du modèle OSI et qui est accessible au public. |
| |
spec: gateways: additionalIngress: <ingressName>: service: type: |
Si le cluster ne prend pas en charge les services |
| |
spec: gateways: additionalIngress: <ingressName>: service: metadata: labels: federation.maistra.io/ingress-for: | Spécifiez une étiquette unique pour la passerelle afin d'empêcher le trafic fédéré de passer par les passerelles système par défaut du cluster. | ||
spec: gateways: additionalIngress: <ingressName>: service: ports: |
Permet de spécifier les adresses |
Le port | |
spec: gateways: additionalIngress: <ingressName>: service: ports: nodePort: |
Utilisé pour spécifier l'adresse |
S'il est spécifié, il est requis en plus de |
Dans l'exemple suivant, l'administrateur configure le SMCP pour la fédération avec le site green-mesh
à l'aide d'un service NodePort
.
Exemple de SMCP pour NodePort
gateways: additionalIngress: ingress-green-mesh: enabled: true routerMode: sni-dnat service: type: NodePort metadata: labels: federation.maistra.io/ingress-for: ingress-green-mesh ports: - port: 15443 nodePort: 30510 name: tls - port: 8188 nodePort: 32359 name: https-discovery
1.18.9.2. Comprendre les paramètres du domaine de confiance de la fédération
Chaque maille de la fédération doit avoir son propre domaine de confiance. Cette valeur est utilisée lors de la configuration de la fédération de mailles dans la ressource ServiceMeshPeer
.
kind: ServiceMeshControlPlane metadata: name: red-mesh namespace: red-mesh-system spec: security: trust: domain: red-mesh.local
Paramètres | Description | Valeurs | Valeur par défaut |
---|---|---|---|
spec: security: trust: domain: | Utilisé pour spécifier un nom unique pour le domaine de confiance de la maille. Les domaines doivent être uniques pour chaque maille de la fédération. |
| N/A |
Procédure à partir de la console
Suivez cette procédure pour éditer le site ServiceMeshControlPlane
avec la console web d'OpenShift Container Platform. Cet exemple utilise le site red-mesh
comme exemple.
- Connectez-vous à la console web d'OpenShift Container Platform en tant qu'utilisateur ayant le rôle d'administrateur de cluster.
-
Naviguez jusqu'à Operators
Installed Operators. -
Cliquez sur le menu Project et sélectionnez le projet dans lequel vous avez installé le plan de contrôle Service Mesh. Par exemple,
red-mesh-system
. - Cliquez sur l'opérateur Red Hat OpenShift Service Mesh.
-
Dans l'onglet Istio Service Mesh Control Plane, cliquez sur le nom de votre
ServiceMeshControlPlane
, par exemplered-mesh
. -
Sur la page Create ServiceMeshControlPlane Details, cliquez sur
YAML
pour modifier votre configuration. -
Modifiez votre
ServiceMeshControlPlane
pour ajouter les passerelles d'entrée et de sortie de la fédération et pour spécifier le domaine de confiance. - Cliquez sur Save.
Procédure à partir du CLI
Suivez cette procédure pour créer ou modifier le site ServiceMeshControlPlane
à l'aide de la ligne de commande. Cet exemple utilise le site red-mesh
.
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
. Entrez la commande suivante. Saisissez ensuite votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité.$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
Accédez au projet dans lequel vous avez installé le plan de contrôle Service Mesh, par exemple red-mesh-system.
$ oc project red-mesh-system
-
Modifiez le fichier
ServiceMeshControlPlane
pour ajouter les passerelles d'entrée et de sortie de la fédération et pour spécifier le domaine de confiance. Exécutez la commande suivante pour modifier le plan de contrôle Service Mesh où
red-mesh-system
est l'espace de noms du système etred-mesh
est le nom de l'objetServiceMeshControlPlane
:$ oc edit -n red-mesh-system smcp red-mesh
Entrez la commande suivante, où
red-mesh-system
est l'espace de noms du système, pour voir l'état de l'installation du plan de contrôle Service Mesh.$ oc get smcp -n red-mesh-system
L'installation est terminée avec succès lorsque la colonne READY indique que tous les composants sont prêts.
NAME READY STATUS PROFILES VERSION AGE red-mesh 10/10 ComponentsReady ["default"] 2.1.0 4m25s
1.18.10. Rejoindre un maillage fédéré
Vous déclarez la fédération entre deux mailles en créant une ressource ServiceMeshPeer
. La ressource ServiceMeshPeer
définit la fédération entre deux mailles, et vous l'utilisez pour configurer la découverte de la maille homologue, l'accès à la maille homologue, et les certificats utilisés pour valider les clients de l'autre maille.
Les mailles sont fédérées sur une base un à un, de sorte que chaque paire de pairs nécessite une paire de ressources ServiceMeshPeer
spécifiant la connexion de fédération à l'autre maille de service. Par exemple, la fédération de deux mailles nommées red
et green
nécessiterait deux fichiers ServiceMeshPeer
.
-
Sur le système de maillage rouge, créez un site
ServiceMeshPeer
pour le maillage vert. -
Sur le système de maillage vert, créez un site
ServiceMeshPeer
pour le maillage rouge.
La fédération de trois maillages nommés red
, blue
et green
nécessiterait six fichiers ServiceMeshPeer
.
-
Sur le système de maillage rouge, créez un site
ServiceMeshPeer
pour le maillage vert. -
Sur le système de maillage rouge, créez un site
ServiceMeshPeer
pour le maillage bleu. -
Sur le système de maillage vert, créez un site
ServiceMeshPeer
pour le maillage rouge. -
Sur le système de maillage vert, créez un site
ServiceMeshPeer
pour le maillage bleu. -
Sur le système de maillage bleu, créez un site
ServiceMeshPeer
pour le maillage rouge. -
Sur le système de maillage bleu, créez un site
ServiceMeshPeer
pour le maillage vert.
La configuration de la ressource ServiceMeshPeer
comprend les éléments suivants :
- Adresse de la passerelle d'entrée de l'autre maille, utilisée pour la découverte et les demandes de service.
- Les noms des passerelles d'entrée et de sortie locales utilisées pour les interactions avec le réseau homologue spécifié.
- L'ID du client utilisé par l'autre maillage lorsqu'il envoie des demandes à ce maillage.
- Le domaine de confiance utilisé par l'autre maillage.
-
Le nom d'un site
ConfigMap
contenant un certificat racine utilisé pour valider les certificats des clients dans le domaine de confiance utilisé par l'autre maillage.
Dans l'exemple suivant, l'administrateur de red-mesh
configure la fédération avec green-mesh
.
Exemple de ressource ServiceMeshPeer pour red-mesh
kind: ServiceMeshPeer apiVersion: federation.maistra.io/v1 metadata: name: green-mesh namespace: red-mesh-system spec: remote: addresses: - ingress-red-mesh.green-mesh-system.apps.domain.com gateways: ingress: name: ingress-green-mesh egress: name: egress-green-mesh security: trustDomain: green-mesh.local clientID: green-mesh.local/ns/green-mesh-system/sa/egress-red-mesh-service-account certificateChain: kind: ConfigMap name: green-mesh-ca-root-cert
Paramètres | Description | Valeurs |
---|---|---|
metadata: name: | Nom de la maille homologue avec laquelle cette ressource configure la fédération. | String |
metadata: namespace: | Espace de noms du système pour ce maillage, c'est-à-dire l'endroit où le plan de contrôle du maillage de services est installé. | String |
spec: remote: addresses: | Liste des adresses publiques des passerelles d'entrée des mailles homologues qui traitent les demandes de cette maille. | |
spec: remote: discoveryPort: | Le port sur lequel les adresses traitent les demandes de découverte. | La valeur par défaut est 8188 |
spec: remote: servicePort: | Le port sur lequel les adresses traitent les demandes de service. | La valeur par défaut est 15443 |
spec: gateways: ingress: name: |
Nom de l'entrée sur ce maillage qui répond aux demandes reçues du maillage homologue. Par exemple, | |
spec: gateways: egress: name: |
Nom de la sortie sur ce maillage qui traite les demandes envoyées au maillage homologue. Par exemple, | |
spec: security: trustDomain: | Le domaine de confiance utilisé par la maille homologue. | <peerMeshName>.local |
spec: security: clientID: | L'identifiant du client utilisé par la maille homologue lors d'un appel à cette maille. | <peerMeshTrustDomain>/ns/<peerMeshSystem>/sa/<peerMeshEgressGatewayName>-service-account |
spec: security: certificateChain: kind: ConfigMap name: |
Le type (par exemple, ConfigMap) et le nom d'une ressource contenant le certificat racine utilisé pour valider le(s) certificat(s) de client et de serveur présenté(s) à ce maillage par le maillage homologue. La clé de l'entrée de la carte de configuration contenant le certificat doit être | kind : ConfigMap name : <peerMesh>-ca-root-cert |
1.18.10.1. Création d'une ressource ServiceMeshPeer
Conditions préalables
- Deux ou plusieurs clusters OpenShift Container Platform 4.6 ou supérieur.
- Les clusters doivent déjà être en réseau.
- Les répartiteurs de charge supportant les services associés aux passerelles de fédération doivent être configurés pour supporter le trafic TLS brut.
-
Chaque cluster doit avoir une version 2.1 ou plus récente de
ServiceMeshControlPlane
configurée pour supporter la fédération déployée. -
Un compte avec le rôle
cluster-admin
.
Procédure à partir du CLI
Suivez cette procédure pour créer une ressource ServiceMeshPeer
à partir de la ligne de commande. Cet exemple montre la création par red-mesh
d'une ressource homologue pour green-mesh
.
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
. Entrez la commande suivante. Saisissez ensuite votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité.$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
Accédez au projet dans lequel vous avez installé le plan de contrôle, par exemple,
red-mesh-system
.$ oc project red-mesh-system
Créez un fichier
ServiceMeshPeer
basé sur l'exemple suivant pour les deux maillages que vous souhaitez fédérer.Exemple de ressource ServiceMeshPeer pour le maillage rouge vers le maillage vert
kind: ServiceMeshPeer apiVersion: federation.maistra.io/v1 metadata: name: green-mesh namespace: red-mesh-system spec: remote: addresses: - ingress-red-mesh.green-mesh-system.apps.domain.com gateways: ingress: name: ingress-green-mesh egress: name: egress-green-mesh security: trustDomain: green-mesh.local clientID: green-mesh.local/ns/green-mesh-system/sa/egress-red-mesh-service-account certificateChain: kind: ConfigMap name: green-mesh-ca-root-cert
Exécutez la commande suivante pour déployer la ressource, où
red-mesh-system
est l'espace de noms du système etservicemeshpeer.yaml
inclut un chemin complet vers le fichier que vous avez modifié :$ oc create -n red-mesh-system -f servicemeshpeer.yaml
Pour confirmer que la connexion entre la maille rouge et la maille verte est établie, vérifiez l'état de la maille verte
ServiceMeshPeer
dans l'espace de noms du système de la maille rouge :$ oc -n red-mesh-system get servicemeshpeer green-mesh -o yaml
Exemple de connexion ServiceMeshPeer entre la maille rouge et la maille verte
status: discoveryStatus: active: - pod: istiod-red-mesh-b65457658-9wq5j remotes: - connected: true lastConnected: "2021-10-05T13:02:25Z" lastFullSync: "2021-10-05T13:02:25Z" source: 10.128.2.149 watch: connected: true lastConnected: "2021-10-05T13:02:55Z" lastDisconnectStatus: 503 Service Unavailable lastFullSync: "2021-10-05T13:05:43Z"
Le champ
status.discoveryStatus.active.remotes
indique que l'istiod de la maille homologue (dans cet exemple, la maille verte) est connecté à l'istiod de la maille courante (dans cet exemple, la maille rouge).Le champ
status.discoveryStatus.active.watch
indique qu'istiod dans le maillage actuel est connecté à istiod dans le maillage homologue.Si vous consultez le site
servicemeshpeer
nomméred-mesh
dansgreen-mesh-system
, vous trouverez des informations sur les deux mêmes connexions du point de vue de la maille verte.Lorsque la connexion entre deux mailles n'est pas établie, le statut
ServiceMeshPeer
l'indique dans le champstatus.discoveryStatus.inactive
.Pour plus d'informations sur la raison de l'échec d'une tentative de connexion, consultez le journal Istiod, le journal d'accès de la passerelle de sortie gérant le trafic de sortie pour le pair et la passerelle d'entrée gérant le trafic d'entrée pour le maillage actuel dans le maillage du pair.
Par exemple, si la maille rouge ne peut pas se connecter à la maille verte, vérifiez les journaux suivants :
- istiod-red-mesh dans red-mesh-system
- egress-green-mesh in red-mesh-system
- ingress-red-mesh in green-mesh-system
1.18.11. Exporter un service à partir d'un maillage fédéré
L'exportation de services permet à une maille de partager un ou plusieurs de ses services avec un autre membre de la maille fédérée.
Vous utilisez une ressource ExportedServiceSet
pour déclarer les services d'une maille que vous mettez à la disposition d'un autre pair dans la maille fédérée. Vous devez déclarer explicitement chaque service à partager avec un pair.
- Vous pouvez sélectionner les services par espace de noms ou par nom.
- Vous pouvez utiliser des caractères génériques pour sélectionner des services, par exemple pour exporter tous les services d'un espace de noms.
-
Vous pouvez exporter des services en utilisant un alias. Par exemple, vous pouvez exporter le service
foo/bar
en tant quecustom-ns/bar
. -
Vous ne pouvez exporter que des services visibles dans l'espace de noms du système de maillage. Par exemple, un service dans un autre espace de noms avec un label
networking.istio.io/exportTo
défini sur '.' ne serait pas un candidat à l'exportation. - Pour les services exportés, les services cibles ne verront que le trafic provenant de la passerelle d'entrée, et non du demandeur initial (c'est-à-dire qu'ils ne verront pas l'identifiant du client de la passerelle de sortie de l'autre maille ou de la charge de travail à l'origine de la demande)
L'exemple suivant concerne les services que red-mesh
exporte vers green-mesh
.
Exemple de ressource ExportedServiceSet
kind: ExportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: green-mesh namespace: red-mesh-system spec: exportRules: # export ratings.mesh-x-info as ratings.bookinfo - type: NameSelector nameSelector: namespace: red-mesh-info name: red-ratings alias: namespace: info name: ratings # export any service in red-mesh-info namespace with label export-service=true - type: LabelSelector labelSelector: namespace: red-mesh-info selector: matchLabels: export-service: "true" aliases: # export all matching services as if they were in the info namespace - namespace: "*" name: "*" alias: namespace: info
Paramètres | Description | Valeurs |
---|---|---|
metadata: name: | Nom du ServiceMeshPeer auquel vous exposez ce service. |
Doit correspondre à la valeur |
metadata: namespace: | Nom du projet/espace de noms contenant cette ressource (devrait être l'espace de noms du système pour le maillage) . | |
spec: exportRules: - type: | Type de règle qui régira l'exportation pour ce service. La première règle correspondante trouvée pour le service sera utilisée pour l'exportation. |
|
spec: exportRules: - type: NameSelector nameSelector: namespace: name: |
Pour créer une règle | |
spec: exportRules: - type: NameSelector nameSelector: alias: namespace: name: |
Pour créer une règle | |
spec: exportRules: - type: LabelSelector labelSelector: namespace: <exportingMesh> selector: matchLabels: <labelKey>: <labelValue> |
Pour créer une règle | |
spec: exportRules: - type: LabelSelector labelSelector: namespace: <exportingMesh> selector: matchLabels: <labelKey>: <labelValue> aliases: - namespace: name: alias: namespace: name: |
Pour créer une règle |
Exporter les services portant le nom "ratings" de tous les espaces de noms de la maille rouge vers la maille bleue.
kind: ExportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: blue-mesh namespace: red-mesh-system spec: exportRules: - type: NameSelector nameSelector: namespace: "*" name: ratings
Exporter tous les services de l'espace de noms west-data-center vers green-mesh
kind: ExportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: green-mesh namespace: red-mesh-system spec: exportRules: - type: NameSelector nameSelector: namespace: west-data-center name: "*"
1.18.11.1. Création d'un ExportedServiceSet
Vous créez une ressource ExportedServiceSet
pour déclarer explicitement les services que vous souhaitez mettre à la disposition d'un homologue maillé.
Les services sont exportés en tant que <export-name>.<export-namespace>.svc.<ServiceMeshPeer.name>-exports.local
et seront automatiquement acheminés vers le service cible. Il s'agit du nom sous lequel le service exporté est connu dans le maillage d'exportation. Lorsque la passerelle d'entrée reçoit une demande destinée à ce nom, elle est acheminée vers le service exporté. Par exemple, si un service nommé ratings.red-mesh-info
est exporté vers green-mesh
sous le nom ratings.bookinfo
, le service sera exporté sous le nom ratings.bookinfo.svc.green-mesh-exports.local
, et le trafic reçu par la passerelle d'entrée pour ce nom d'hôte sera acheminé vers le service ratings.red-mesh-bookinfo
.
Conditions préalables
-
Le cluster et
ServiceMeshControlPlane
ont été configurés pour la fédération de maillage. -
Un compte avec le rôle
cluster-admin
.
Vous pouvez configurer des services pour l'exportation même s'ils n'existent pas encore. Lorsqu'un service correspondant à la valeur spécifiée dans le ExportedServiceSet est déployé, il est automatiquement exporté.
Procédure à partir du CLI
Suivez cette procédure pour créer un site ExportedServiceSet
à partir de la ligne de commande.
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
. Entrez la commande suivante. Saisissez ensuite votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité.$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
Accédez au projet dans lequel vous avez installé le plan de contrôle Service Mesh ; par exemple,
red-mesh-system
.$ oc project red-mesh-system
Créez un fichier
ExportedServiceSet
basé sur l'exemple suivant oùred-mesh
exporte des services versgreen-mesh
.Exemple de ressource ExportedServiceSet de la maille rouge à la maille verte
apiVersion: federation.maistra.io/v1 kind: ExportedServiceSet metadata: name: green-mesh namespace: red-mesh-system spec: exportRules: - type: NameSelector nameSelector: namespace: red-mesh-info name: ratings alias: namespace: info name: red-ratings - type: NameSelector nameSelector: namespace: red-mesh-info name: reviews
Exécutez la commande suivante pour télécharger et créer la ressource
ExportedServiceSet
dans l'espace de noms red-mesh-system.$ oc create -n <ControlPlaneNamespace> -f <ExportedServiceSet.yaml>
Par exemple :
$ oc create -n red-mesh-system -f export-to-green-mesh.yaml
-
Créez des
ExportedServiceSets
supplémentaires si nécessaire pour chaque pair de maillage dans votre maillage fédéré. Pour valider les services que vous avez exportés de
red-mesh
pour les partager avecgreen-mesh
, exécutez la commande suivante :$ oc get exportedserviceset <PeerMeshExportedTo> -o yaml
Par exemple :
$ oc get exportedserviceset green-mesh -o yaml
Exécutez la commande suivante pour valider les services que red-mesh exporte pour les partager avec green-mesh :
$ oc get exportedserviceset <PeerMeshExportedTo> -o yaml
Par exemple :
$ oc -n red-mesh-system get exportedserviceset green-mesh -o yaml
Exemple de validation des services exportés de la maille rouge qui sont partagés avec la maille verte.
status: exportedServices: - exportedName: red-ratings.info.svc.green-mesh-exports.local localService: hostname: ratings.red-mesh-info.svc.cluster.local name: ratings namespace: red-mesh-info - exportedName: reviews.red-mesh-info.svc.green-mesh-exports.local localService: hostname: reviews.red-mesh-info.svc.cluster.local name: reviews namespace: red-mesh-info
Le tableau
status.exportedServices
répertorie les services qui sont actuellement exportés (ces services correspondent aux règles d'exportation deExportedServiceSet object
). Chaque entrée du tableau indique le nom du service exporté et des détails sur le service local exporté.Si un service que vous vous attendiez à voir exporté est manquant, vérifiez que l'objet Service existe, que son nom ou ses étiquettes correspondent au
exportRules
défini dans l'objetExportedServiceSet
et que l'espace de noms de l'objet Service est configuré en tant que membre du maillage de services à l'aide de l'objetServiceMeshMemberRoll
ouServiceMeshMember
.
1.18.12. Importer un service dans un maillage fédéré
L'importation de services vous permet de spécifier explicitement quels services exportés d'un autre maillage doivent être accessibles dans votre maillage de services.
Vous utilisez une ressource ImportedServiceSet
pour sélectionner les services à importer. Seuls les services exportés par un pair maillé et explicitement importés sont disponibles dans le maillage. Les services que vous n'importez pas explicitement ne sont pas disponibles dans le maillage.
- Vous pouvez sélectionner les services par espace de noms ou par nom.
- Vous pouvez utiliser des caractères génériques pour sélectionner des services, par exemple pour importer tous les services qui ont été exportés vers l'espace de noms.
- Vous pouvez sélectionner les services à exporter à l'aide d'un sélecteur d'étiquettes, qui peut être global pour le maillage ou limité à un espace de noms membre spécifique.
-
Vous pouvez importer des services en utilisant un alias. Par exemple, vous pouvez importer le service
custom-ns/bar
en tant queother-mesh/bar
. -
Vous pouvez spécifier un suffixe de domaine personnalisé, qui sera ajouté au
name.namespace
d'un service importé pour son nom de domaine complet ; par exemple,bar.other-mesh.imported.local
.
L'exemple suivant concerne l'importation par green-mesh
d'un service exporté par red-mesh
.
Exemple ImportedServiceSet
kind: ImportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: red-mesh #name of mesh that exported the service namespace: green-mesh-system #mesh namespace that service is being imported into spec: importRules: # first matching rule is used # import ratings.info as ratings.bookinfo - type: NameSelector importAsLocal: false nameSelector: namespace: info name: ratings alias: # service will be imported as ratings.info.svc.red-mesh-imports.local namespace: info name: ratings
Paramètres | Description | Valeurs |
---|---|---|
metadata: name: | Nom du ServiceMeshPeer qui a exporté le service vers le maillage fédéré. | |
metadata: namespace: | Nom de l'espace de noms contenant la ressource ServiceMeshPeer (espace de noms du système maillé). | |
spec: importRules: - type: | Type de règle qui régira l'importation du service. La première règle correspondante trouvée pour le service sera utilisée pour l'importation. |
|
spec: importRules: - type: NameSelector nameSelector: namespace: name: |
Pour créer une règle | |
spec: importRules: - type: NameSelector importAsLocal: |
La valeur |
|
spec: importRules: - type: NameSelector nameSelector: namespace: name: alias: namespace: name: |
Pour créer une règle |
Importer le service "info/ratings" du maillage rouge dans le maillage bleu
kind: ImportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: red-mesh namespace: blue-mesh-system spec: importRules: - type: NameSelector importAsLocal: false nameSelector: namespace: info name: ratings
Importer tous les services de l'espace de noms west-data-center du red-mesh dans le green-mesh. Ces services seront accessibles en tant que <name>.west-data-center.svc.red-mesh-imports.local
kind: ImportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: red-mesh namespace: green-mesh-system spec: importRules: - type: NameSelector importAsLocal: false nameSelector: namespace: west-data-center name: "*"
1.18.12.1. Création d'un ImportedServiceSet
Vous créez une ressource ImportedServiceSet
pour déclarer explicitement les services que vous souhaitez importer dans votre maillage.
Les services sont importés avec le nom <exported-name>.<exported-namespace>.svc.<ServiceMeshPeer.name>.remote
qui est un service "caché", visible uniquement dans l'espace de noms de la passerelle egress et associé au nom d'hôte du service exporté. Le service sera disponible localement sous le nom <export-name>.<export-namespace>.<domainSuffix>
, où domainSuffix
est svc.<ServiceMeshPeer.name>-imports.local
par défaut, sauf si importAsLocal
est défini à true
, auquel cas domainSuffix
est svc.cluster.local
. Si importAsLocal
est défini à false
, le suffixe de domaine dans la règle d'importation sera appliqué. Vous pouvez traiter l'importation locale comme n'importe quel autre service dans le maillage. Il passe automatiquement par la passerelle de sortie, où il est redirigé vers le nom distant du service exporté.
Conditions préalables
-
Le cluster et
ServiceMeshControlPlane
ont été configurés pour la fédération de maillage. -
Un compte avec le rôle
cluster-admin
.
Vous pouvez configurer des services pour l'importation même s'ils n'ont pas encore été exportés. Lorsqu'un service correspondant à la valeur spécifiée dans ImportedServiceSet est déployé et exporté, il est automatiquement importé.
Procédure à partir du CLI
Suivez cette procédure pour créer un site ImportedServiceSet
à partir de la ligne de commande.
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
. Entrez la commande suivante. Saisissez ensuite votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité.$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
Accédez au projet dans lequel vous avez installé le plan de contrôle Service Mesh ; par exemple,
green-mesh-system
.$ oc project green-mesh-system
Créez un fichier
ImportedServiceSet
basé sur l'exemple suivant oùgreen-mesh
importe des services précédemment exportés parred-mesh
.Exemple de ressource ImportedServiceSet de la maille rouge à la maille verte
kind: ImportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: red-mesh namespace: green-mesh-system spec: importRules: - type: NameSelector importAsLocal: false nameSelector: namespace: info name: red-ratings alias: namespace: info name: ratings
Exécutez la commande suivante pour télécharger et créer la ressource
ImportedServiceSet
dans l'espace de noms green-mesh-system.$ oc create -n <ControlPlaneNamespace> -f <ImportedServiceSet.yaml>
Par exemple :
$ oc create -n green-mesh-system -f import-from-red-mesh.yaml
-
Créez des ressources
ImportedServiceSet
supplémentaires si nécessaire pour chaque pair de maillage dans votre maillage fédéré. Pour valider les services que vous avez importés dans
green-mesh
, exécutez la commande suivante :$ oc get importedserviceset <PeerMeshImportedInto> -o yaml
Par exemple :
$ oc get importedserviceset green-mesh -o yaml
Exécutez la commande suivante pour valider les services importés dans un maillage.
$ oc get importedserviceset <PeerMeshImportedInto> -o yaml
Exemple de validation de l'importation dans la maille verte des services exportés de la maille rouge à l'aide de la section status de l'espace de noms
importedserviceset/red-mesh' object in the 'green-mesh-system
:$ oc -n green-mesh-system get importedserviceset/red-mesh -o yaml
status: importedServices: - exportedName: red-ratings.info.svc.green-mesh-exports.local localService: hostname: ratings.info.svc.red-mesh-imports.local name: ratings namespace: info - exportedName: reviews.red-mesh-info.svc.green-mesh-exports.local localService: hostname: "" name: "" namespace: ""
Dans l'exemple précédent, seul le service d'évaluation est importé, comme l'indiquent les champs remplis sous
localService
. Le service de critiques est disponible pour l'importation, mais il n'est pas importé pour l'instant parce qu'il ne correspond à aucunimportRules
dans l'objetImportedServiceSet
.
1.18.13. Configuration d'un maillage fédéré pour le basculement
Le basculement est la capacité de basculer automatiquement et de manière transparente vers un système de sauvegarde fiable, par exemple un autre serveur. Dans le cas d'un maillage fédéré, vous pouvez configurer un service dans un maillage pour qu'il bascule vers un service dans un autre maillage.
Vous configurez la Fédération pour le basculement en définissant les paramètres importAsLocal
et locality
dans une ressource ImportedServiceSet
, puis en configurant une ressource DestinationRule
qui configure le basculement du service vers la localité spécifiée dans la ressource ImportedServiceSet
.
Conditions préalables
- Deux ou plusieurs clusters OpenShift Container Platform 4.6 ou plus, déjà mis en réseau et fédérés.
-
ExportedServiceSet
déjà créées pour chaque pair de maillage dans le maillage fédéré. -
ImportedServiceSet
déjà créées pour chaque pair de maillage dans le maillage fédéré. -
Un compte avec le rôle
cluster-admin
.
1.18.13.1. Configuration d'un ImportedServiceSet pour le basculement
L'équilibrage de charge pondéré par la localité permet aux administrateurs de contrôler la distribution du trafic vers les points d'extrémité en fonction des localités d'où le trafic provient et où il aboutit. Ces localités sont spécifiées à l'aide d'étiquettes arbitraires qui désignent une hiérarchie de localités sous la forme {région}/{zone}/{sous-zone}.
Dans les exemples de cette section, le site green-mesh
est situé dans la région us-east
et le site red-mesh
est situé dans la région us-west
.
Exemple ImportedServiceSet
ressource du maillage rouge au maillage vert
kind: ImportedServiceSet apiVersion: federation.maistra.io/v1 metadata: name: red-mesh #name of mesh that exported the service namespace: green-mesh-system #mesh namespace that service is being imported into spec: importRules: # first matching rule is used # import ratings.info as ratings.bookinfo - type: NameSelector importAsLocal: true nameSelector: namespace: info name: ratings alias: # service will be imported as ratings.info.svc.red-mesh-imports.local namespace: info name: ratings #Locality within which imported services should be associated. locality: region: us-west
Nom | Description | Type |
---|---|---|
région : | Région dans laquelle les services importés sont situés. | chaîne de caractères |
sous-zone : | Sous-zone dans laquelle se trouvent les services importés. Si la sous-zone est spécifiée, la zone doit également l'être. | chaîne de caractères |
zone : | Zone dans laquelle les services importés sont situés. Si la zone est spécifiée, la région doit également l'être. | chaîne de caractères |
Procédure
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
et entrez la commande suivante :$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
Passez au projet dans lequel vous avez installé le plan de contrôle Service Mesh et entrez la commande suivante :
oc project <smcp-system>
Par exemple,
green-mesh-system
.$ oc project green-mesh-system
Modifiez le fichier
ImportedServiceSet
, où<ImportedServiceSet.yaml>
comprend le chemin d'accès complet au fichier que vous souhaitez modifier, en entrant la commande suivante :$ oc edit -n <smcp-system> -f <ImportedServiceSet.yaml>
Par exemple, si vous souhaitez modifier le fichier qui importe du système à mailles rouges vers le système à mailles vertes, comme indiqué dans l'exemple précédent
ImportedServiceSet
.$ oc edit -n green-mesh-system -f import-from-red-mesh.yaml
Modifier le fichier :
-
Définir
spec.importRules.importAsLocal
àtrue
. -
Définissez
spec.locality
comme étantregion
,zone
, ousubzone
. - Enregistrez vos modifications.
-
Définir
1.18.13.2. Configuration d'une règle de destination pour le basculement
Créez une ressource DestinationRule
qui configure les éléments suivants :
- Détection des valeurs aberrantes pour le service. Cette fonction est nécessaire pour que le basculement fonctionne correctement. En particulier, elle configure les mandataires sidecar pour qu'ils sachent quand les points d'extrémité d'un service ne sont pas sains, ce qui déclenche éventuellement un basculement vers la localité suivante.
- Politique de basculement entre les régions. Cela permet de s'assurer que le basculement au-delà d'une région se déroulera de manière prévisible.
Procédure
Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle
cluster-admin
. Entrez la commande suivante. Saisissez ensuite votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité.$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
Passez au projet dans lequel vous avez installé le plan de contrôle Service Mesh.
oc project <smcp-system>
Par exemple,
green-mesh-system
.$ oc project green-mesh-system
Créez un fichier
DestinationRule
basé sur l'exemple suivant où, si green-mesh est indisponible, le trafic doit être acheminé depuis green-mesh dans la régionus-east
vers red-mesh dansus-west
.Exemple
DestinationRule
apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: default-failover namespace: info spec: host: "ratings.info.svc.cluster.local" trafficPolicy: loadBalancer: localityLbSetting: enabled: true failover: - from: us-east to: us-west outlierDetection: consecutive5xxErrors: 3 interval: 10s baseEjectionTime: 1m
Déployez le fichier
DestinationRule
, où<DestinationRule>
comprend le chemin complet de votre fichier, en entrant la commande suivante :oc create -n <application namespace> -f <DestinationRule.yaml>
Par exemple :
$ oc create -n info -f green-mesh-us-west-DestinationRule.yaml
1.18.14. Supprimer un service du maillage fédéré
Si vous devez supprimer un service du maillage fédéré, par exemple s'il est devenu obsolète ou s'il a été remplacé par un autre service, vous pouvez le faire.
1.18.14.1. Pour supprimer un service d'une seule maille
Supprimer l'entrée du service de la ressource ImportedServiceSet
pour l'homologue maillé qui ne doit plus accéder au service.
1.18.14.2. Pour supprimer un service de l'ensemble du maillage fédéré
Supprimer l'entrée du service de la ressource ExportedServiceSet
pour la maille qui possède le service.
1.18.15. Supprimer une maille du maillage fédéré
Si vous devez retirer une maille de la fédération, vous pouvez le faire.
-
Modifier la ressource
ServiceMeshControlPlane
de la maille supprimée pour supprimer toutes les passerelles d'entrée de fédération pour les mailles homologues. Pour chaque pair de maillage avec lequel le maillage supprimé a été fédéré :
-
Supprimer la ressource
ServiceMeshPeer
qui relie les deux mailles. -
Modifiez la ressource
ServiceMeshControlPlane
de la maille homologue pour supprimer la passerelle de sortie qui dessert la maille supprimée.
-
Supprimer la ressource