Maillage de service sur Red Hat OpenShift on IBM Cloud
Ce tutoriel peut entraîner des coûts. Utilisez l'Estimateur de coûts pour générer une estimation du coût en fonction de votre utilisation projetée.
Ce tutoriel vous explique comment installer Red Hat OpenShift Service Mesh avec des microservices pour un exemple d'application appelé BookInfo dans un cluster Red Hat OpenShift on IBM Cloud Vous apprendrez également à configurer une passerelle Ingress Istio pour exposer un service en dehors du maillage de service, à effectuer la gestion du trafic pour configurer des tâches importantes telles que les tests A/B et les déploiements canary, à sécuriser la communication de votre microservice et à utiliser les métriques, la journalisation et le traçage pour observer les services.
Basé sur le projet open source Istio, Red Hat OpenShift Service Mesh ajoute une couche transparente sur les applications distribuées existantes. Red Hat OpenShift Service Mesh fournit une plateforme pour l'analyse comportementale et le contrôle opérationnel de vos microservices en réseau dans un maillage de services. Avec Red Hat OpenShift, vous pouvez connecter, sécuriser et surveiller les microservices dans votre cluster Red Hat OpenShift on IBM Cloud.
Istio est une plateforme ouverte permettant de connecter, sécuriser, contrôler et observer des microservices, également connus sous le nom de maillage de services, sur des plateformes cloud telles que Kubernetes dans Red Hat OpenShift on IBM Cloud
Objectifs
- Installer Red Hat OpenShift Service Mesh dans votre cluster
- Déployer l'exemple d'application BookInfo
- Utiliser des métriques, la journalisation et le traçage pour observer des services
- Configurer la passerelle Ingress Istio
- Effectuer une gestion de trafic simple, par exemple des tests A/B et des déploiements canary
- Sécuriser votre maillage à l'aide de mTLS
- L'administrateur provisionne un cluster Red Hat OpenShift on IBM Cloud et installe l'opérateur Service Mesh ainsi que d'autres opérateurs de télémétrie.
- L'administrateur crée un espace de nom (projet)
istio-systemet créeServiceMeshControlPlane. - L'administrateur crée un espace de nom
bookinfoavec l'injection de composant sidecar activée et déploie l'application BookInfo (avec vos microservices séparés) dans le maillage de service. - L'administrateur expose l'application pour le trafic externe avec la passerelle Ingress Istio.
- L'utilisateur accède de manière sécurisée (HTTPS) à l'application via un navigateur.
- L'administrateur surveille l'état de santé et les performances des microservices à l'aide de métriques, de traces et de journaux.
Avant de commencer
Pour ce tutoriel, vous devez disposer des éléments suivants :
- IBM Cloud CLI,
- du plug-in IBM Cloud Kubernetes Service (
kubernetes-service),
- du plug-in IBM Cloud Kubernetes Service (
- d'
ocpour l'interaction avec OpenShift.
Vous trouverez des instructions de téléchargement et d'installation de ces outils pour votre environnement d'exploitation dans le document Démarrer avec les tutoriels.
Pour éviter l'installation de ces outils, vous pouvez utiliser Cloud Shell à partir de la console IBM Cloud. Utilisez oc version pour vérifier que la version de l'interface de ligne de commande Red Hat OpenShift
on IBM Cloud correspond à votre version de cluster (4.13.x). S'ils ne correspondent pas, installez la version correspondante en suivant Ces instructions.
Créer un cluster Red Hat OpenShift on IBM Cloud
Avec Red Hat OpenShift on IBM Cloud, vous disposez d'un moyen rapide et sécurisé de conteneuriser et de déployer des charges de travail d'entreprise dans des clusters. les clusters Red Hat OpenShift on IBM Cloud s'appuient sur l'orchestration de conteneurs Kubernetes qui offre cohérence et flexibilité pour vos opérations de cycle de vie du développement.
Dans cette section, vous allez mettre à disposition un cluster Red Hat OpenShift on IBM Cloud dans une (1) zone avec deux (2) noeuds worker :
- Connectez-vous à votre compte IBM Cloud et créez un cluster Red Hat OpenShift on IBM Cloud à partir de la page de création de cluster Red Hat OpenShift on IBM Cloud.
- Définissez le service d'orchestration sur la version 4.13.x de Red Hat OpenShift on IBM Cloud
- Sélectionnez votre autorisation OCP.
- Sous Infrastructure, choisissez Classique ou VPC.
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure VPC, vous devez créer un cloud privé virtuel et un sous-réseau avant de créer le cluster Kubernetes. Créez ou inspectez une VPC souhaitée en gardant à l'esprit les éléments
suivants (voir les instructions fournies sous Création d'un cluster VPC standard):
- Un sous-réseau pouvant être utilisé dans le cadre de ce tutoriel, notez la zone et le nom de ce sous-réseau
- Une passerelle publique est connectée au sous-réseau
- Sélectionnez le VPC désiré
- Sélectionnez un service Cloud Object Storage existant ou créez-en, le cas échéant, puis sélectionnez :
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure VPC, vous devez créer un cloud privé virtuel et un sous-réseau avant de créer le cluster Kubernetes. Créez ou inspectez une VPC souhaitée en gardant à l'esprit les éléments
suivants (voir les instructions fournies sous Création d'un cluster VPC standard):
- Sous Emplacement :
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure VPC
- Sélectionnez un Groupe de ressources
- Désélectionnez les zones non applicables
- Dans la zone souhaitée, vérifiez le nom du sous-réseau désiré et s'il n'y en a pas, cliquez sur le crayon d'édition pour en sélectionner un
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure classique, suivez les instructions de la page Création d'un cluster classique standard.
- Sélectionnez un Groupe de ressources
- Sélectionnez une Géographie
- Sélectionnez Zone unique pour l'option Disponibilité
- Choisissez un Centre de données
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure VPC
- Sous Pool de noeuds worker :
- Sélectionnez 4 unités centrales virtuelles, 16 Go de RAM comme version
- Sélectionnez 2 Noeuds worker par centre de données pour ce tutoriel (pour l'option classique uniquement : conservez l'option Chiffrer le disque local)
- Sous Resource details,Set Cluster name to
-myopenshiftcluster en remplaçant<your-initials>par vos propres initiales. - Cliquez sur Créer pour mettre à disposition un cluster Red Hat OpenShift on IBM Cloud.
Notez le groupe de ressources sélectionné ci-dessus. Il sera utilisé pour toutes les ressources dans ce tutoriel.
Accès au cluster à l'aide d'IBM Cloud Shell
Le site Red Hat OpenShift on IBM Cloud CLI de la plate-forme de conteneurs propose des commandes
pour gérer vos applications, ainsi que des outils de niveau inférieur pour interagir avec chaque composant de votre système. L'interface de ligne de commande est disponible en utilisant la commande oc.
Pour éviter d'installer les outils de ligne de commande, il est recommandé d'utiliser IBM Cloud Shell.
L'interpréteur de commandes IBM Cloud est un espace de travail d'interpréteur de commandes cloud accessible par l'intermédiaire de votre navigateur. Il est préconfiguré avec l'interface de ligne de commande complète d'IBM Cloud et de nombreux plug-in et outils permettant de gérer les applications, les ressources et l'infrastructure.
Au cours de cette étape, vous utiliserez l'interpréteur de commandes IBM Cloud et configurerez oc pour pointer vers le cluster qui vous a été affecté.
- Lorsque le cluster est prêt, sur la page de présentation du cluster, cliquez sur OpenShift web console pour ouvrir la console. Assurez-vous de ne pas fermer cette fenêtre.
- Sur la console Web, cliquez sur le menu déroulant figurant sous votre nom en haut à droite de votre écran et sélectionnez Copy Login Command et cliquez sur le lien Display Token.
- Copiez le texte sous Log in with this token.
- Dans une nouvelle fenêtre/un nouvel onglet de navigateur, ouvrez IBM Cloud Shell pour démarrer une nouvelle session. Dès le démarrage de la session, vous devez automatiquement être connecté à l'interface de ligne de commande IBM Cloud. Assurez-vous de ne pas fermer cette fenêtre..
- Vérifiez la version de l'interface de ligne de commande OpenShift :
oc version - La version doit être au minimum 4.13.x, sinon installez la dernière version en suivant ces instructions.
- Collez la commande de connexion que vous avez copiée depuis la console Web et appuyez sur Entrée. Une fois connecté à l'aide de la commande
oc login, exécutez la commande ci-dessous pour voir tous les espaces de nom figurant dans votre cluster.oc get ns - Depuis votre Cloud Shell, créez un projet appelé "bookinfo" avec la commande
oc new-project. Le projet va contenir l'application créée après l'installation du maillage de service.
Dans Red Hat OpenShift, un projet est un espace de nom Kubernetes avec des annotations supplémentaires.oc new-project bookinfo
Installation du maillage de service Service Mesh - Istio
Dans cette section, vous allez installer le maillage de service Service Mesh - Istio dans le cluster. L'installation du maillage de service implique l'installation des opérateurs Elasticsearch, Jaeger, Kiali et Service Mesh, la création et la
gestion d'une ressource ServiceMeshControlPlane pour déployer le plan de contrôle et la création d'une ressource ServiceMeshMemberRoll pour spécifier les espaces de nom associés au maillage de service.
Certains projets comportent plusieurs opérateurs. Veillez à installer ceux spécifiés ci-dessous
Elasticsearch, basé sur le projet open source Elasticsearch, vous permet de configurer et de gérer un cluster Elasticsearch pour le traçage et la journalisation avec Jaeger.
Jaeger, basé sur le projet open source Jaeger, vous permet d'effectuer le traçage pour surveiller et résoudre les incidents liés aux transactions dans des systèmes distribués complexes.
Kiali, basé sur le projet open source Kiali, fournit l'observabilité pour votre maillage de service. Avec Kiali, vous pouvez visualiser des configurations, surveiller le trafic et afficher et analyser des traces dans une même console.
Red Hat OpenShift Service Mesh- Basé sur le projet open source Istio, il vous permet de connecter, sécuriser, contrôler et observer les microservices qui composent vos applications.
Installation des opérateurs
- Dans le panneau de gauche de la console Web Red Hat OpenShift, sélectionnez Administrateur dans la liste déroulante.
- Sélectionnez Opérateurs, puis OperatorHub.
- Recherchez l'opérateur OpenShift Elasticsearch, cliquez sur la vignette, cliquez sur Installer, laissez la sélection par défaut et cliquez sur Installer.
- Répétez les étapes 2 et 3 ci-dessus pour l'installation des opérateurs suivants.
- Plateforme de traçage répartie Red Hat OpenShift
- Opérateur Kiali (fourni par Red Hat)
- Red Hat OpenShift Service Mesh.
Cette procédure installe les opérateurs dans le projet openshift-operators par défaut et met les opérateurs à disposition pour tous les projets du cluster.
Déployer le plan de contrôle Red Hat OpenShift Plan de contrôle Service Mesh
L'opérateur Red Hat OpenShift Service Mesh operator utilise une ressource ServiceMeshControlPlane pour déterminer comment installer Istio et quels composants vous voulez. Créons maintenant cette ressource.
- Créez un projet en cliquant sur Accueil dans le panneau de gauche de la console Web, puis sur Projets et enfin sur Créer un projet.
- Entrez
istio-systemdans la zone Nom, puis cliquez sur Créer. - Accédez à Opérateurs, puis cliquez sur Opérateurs installés.
- Sélectionnez
istio-systemdans le menu Projet sur la barre supérieure. - Cliquez sur Red Hat OpenShift Service Mesh. Si vous ne le voyez pas, attendez deux minutes et actualisez la page.
- Dans l'onglet Détails, sous la vignette Istio Service Mesh Control Plane, cliquez sur Créer une instance ou Créer ServiceMeshControlPlane.
- Cliquez ensuite sur Créer. L'opérateur crée des pods, des services et des composants de plan de contrôle de maillage de service en fonction de vos paramètres de configuration.
- Pour vous assurer que le plan de contrôle de Service Mesh est correctement installé, cliquez sur basic sous
Namedans la liste. Sur la page suivante, vous devriez voir Composants prêts. De plus, lorsque vous accédez à la section Conditions de la page, vous devez voir la raisonComponentsReadyet un messageAll component deployments are Available.
Création d'une ressource ServiceMeshMemberRoll
Une ressource ServiceMeshMemberRoll est utilisée pour indiquer les espaces de nom associés au maillage de service.
- Accédez à nouveau à Opérateurs → Opérateurs installés.
- Cliquez sur Red Hat OpenShift Service Mesh.
- Dans l'onglet Détails, sous la vignette Istio Service Mesh Member Roll, cliquez sur Créer une instance ou Créer ServiceMeshMemberRoll puis sélectionnez Vue YAML
- Remplacez
your-projectparbookinfoet supprimez la dernière ligne (- another-of-your-projects). Après les modifications, le YAML devrait ressembler à ceci :apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: - bookinfo - Cliquez ensuite sur Créer.
L'installation d'Istio dans votre cluster a abouti.
Déploiement de l'application BookInfo sur le maillage de service
L' application BookInfo affiche des informations sur un livre, à l'instar d'une entrée de catalogue d'une librairie en ligne. La page contient une description du livre, des détails du livre (ISBN, nombre de pages, etc.), ainsi que quelques critiques du livre.
L'application Bookinfo est divisée en quatre microservices distincts :
- productpage. Le microservice productpage appelle les détails et passe en revue les microservices afin d'alimenter la page.
- Détails. Le microservice details contient des informations sur le livre.
- reviews. Le microservice reviews contient des critiques du livre. Il appelle également le microservice ratings.
- ratings. Le microservice ratings contient des informations sur le classement des livres qui accompagnent une critique de livre.
Il existe 3 versions du microservice reviews :
- La version v1 qui n'appelle pas le service ratings.
- La version v2 qui appelle le service ratings et affiche chaque évaluation sous la forme de 1 à 5 étoiles noires.
- La version v3 qui appelle le service ratings et affiche chaque évaluation sous la forme de 1 à 5 étoiles rouges.
L'architecture de bout en bout de l'application est présentée ci-dessous.
Red Hat OpenShift Service Mesh s'appuie sur les sidecars Envoy dans le pod de l'application pour fournir les capacités Service Mesh à l'application. Vous pouvez activer l'injection automatique de composant sidecar ou la gérer manuellement. L'injection automatique à l'aide de l'annotation est la méthode recommandée.
-
Déployez l'application Bookinfo dans le projet
bookinfoen appliquant le fichier bookinfo.yaml dans le cluster Red Hat OpenShift. Cette opération déploie toutes les applications de microservice, y compris les versions v1, v2 et v3 de l'application de revue.oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/platform/kube/bookinfo.yamlLe fichier
bookinfo.yamlest annotésidecar.istio.io/inject: "true"pour permettre l'injection automatique du sidecar Istio pour Red Hat OpenShift Service Mesh. Par conséquent, ces pods incluront également un composant sidecar Envoy lorsqu'ils sont démarrés dans le cluster.Une installation de Red Hat OpenShift Service Mesh diffère des installations de la communauté Istio en amont de plusieurs façons. Consultez ce lien pour comparer Service Mesh et Istio. Par défaut, Istio injecte le composant sidecar si vous avez libellé le projet
istio-injection=enabled. Red Hat OpenShift Service Mesh le gère différemment et vous oblige à opter pour l'injection automatique du composant sidecar dans un déploiement, de sorte que vous n'êtes pas obligé d'affecter un libellé au projet. Ceci évite l'injection d'un composant non souhaité (par exemple, dans des pods de génération ou de déploiement). -
Vérifiez que les pods sont opérationnels.
oc get podsExemple de sortie :
NAME READY STATUS RESTARTS AGE details-v1-789c5f58f4-9twtw 2/2 Running 0 4m12s productpage-v1-856c8cc5d8-xcx2q 2/2 Running 0 4m11s ratings-v1-5786768978-tr8z9 2/2 Running 0 4m12s reviews-v1-5874566865-mxfgm 2/2 Running 0 4m12s reviews-v2-86865fc7d9-mf6t4 2/2 Running 0 4m12s reviews-v3-8d4cbbbbf-rfjcz 2/2 Running 0 4m12sNotez que chaque pod bookinfo contient 2 conteneurs. L'un est le conteneur bookinfo, et l'autre est le composant sidecar de proxy Envoy.
Votre application bookinfo s'exécute, mais vous ne pouvez pas y accéder car le service n'est pas encore configuré pour recevoir du trafic externe. Dans la section suivante, vous exposerez le service productpage afin d'autoriser
le trafic entrant.
Exposition de l'application avec la passerelle Ingress Istio et la route
Les composants déployés sur le maillage de service ne sont, par défaut, pas exposés à l'extérieur du cluster. Vous pouvez créer une ressource de passerelle Ingress pour autoriser les demandes externes via la passerelle Ingress Istio aux services de sauvegarde.
- Configurez la route bookinfo par défaut avec la passerelle Ingress Istio.
oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml - Obtenez la ROUTE de la passerelle Ingress Istio.
oc get routes -n istio-system istio-ingressgateway - Enregistrez l'adresse HOST extraite à l'étape précédente ; elle sera utilisée pour accéder à l'application BookInfo dans une partie ultérieure de ce tutoriel. Créez une variable d'environnement nommée
$INGRESS_HOSTavec votre adresse HOST.Accédez à l'application à l'adresseexport INGRESS_HOST=<HOST>http://$INGRESS_HOST/productpagedans un nouvel onglet. Si vous cliquez plusieurs fois sur Actualiser, vous devez afficher différentes versions de la page en ordre aléatoire (v1 - pas d'étoiles, v2 - étoiles noires, v3 - étoiles rouges). L'onglet du navigateur doit être ouvert pour plus tard.
Télémétrie des services : métriques et traçage
Les fonctions de traçage et de métriques d'Istio sont conçues pour fournir un aperçu étendu et granulaire de la santé de tous les services. Le rôle d'Istio en tant que maillage de service en fait la source de données idéale pour les informations d'observabilité, notamment dans un environnement de microservices. Etant donné que les demandes passent par plusieurs services, l'identification des goulots d'étranglement en matière de performances s'avère de plus en plus difficile à l'aide des techniques de débogage traditionnelles. Le traçage distribué fournit une vue globale des demandes qui transitent par plusieurs services, ce qui permet d'identifier immédiatement les problèmes de temps d'attente. Le traçage distribué est fourni par défaut avec Istio. Cette fonctionnalité permet d'obtenir des informations relatives aux temps d'attente, relances et échecs pour chaque tronçon d'une demande.
Visualisation des métriques avec Grafana
Grafana vous permet d'interroger, de visualiser, d'alerter et de comprendre vos métriques quel que soit l'endroit où elles sont stockées.
-
Dans la console Web Red Hat OpenShift on IBM Cloud :
- Dans le panneau de gauche, sous Networking, cliquez sur Routes.
- Sélectionnez le projet istio-system dans la barre supérieure.
- Cliquez sur l'URL (emplacement) en regard de grafana.
- Connectez-vous à Red Hat OpenShift on IBM Cloud et accordez les permissions requises pour voir le tableau de bord Grafana.
-
Cliquez sur le menu Dashboard dans le menu de navigation de gauche, sélectionnez l'onglet Manage, puis istio et Istio Service Dashboard.
-
Sélectionnez
productpage.bookinfo.svc.cluster.localdans la liste déroulante Service. -
Accédez à l'onglet/la fenêtre d'IBM Cloud Shell et générez une petite charge dans l'application en envoyant du trafic à l'emplacement de l'hôte Ingress que vous avez défini dans la dernière section.
for i in {1..20}; do sleep 0.5; curl -I $INGRESS_HOST/productpage; done
Ouvrez chaque triangle pour voir plus d'informations sur le tableau de bord. Choisissez des services différents dans la liste déroulante Service. Ce tableau de bord Grafana fournit des métriques pour chaque charge de travail. Explorez également les autres tableaux de bord fournis.
Observation de votre maillage de service avec Kiali
Kiali est un projet open source qui s'installe en tant que module complémentaire au-dessus d'Istio afin de visualiser votre maillage de service. Kiali offre un aperçu plus précis de la manière dont vos microservices interagissent les uns avec les autres et des fonctions telles que des disjoncteurs et des taux de demande pour vos services.
- Dans la console Web Red Hat OpenShift on IBM Cloud :
- Dans le panneau de gauche, sous Networking, cliquez sur Routes.
- Sélectionnez le projet istio-system dans la barre supérieure.
- Cliquez sur l'URL (emplacement) à côté de kiali et si vous y êtes invité, cliquez sur Login with OpenShift
- Cliquez sur le graphique dans le panneau de gauche et sélectionnez les espaces de nom
bookinfoetistio-systemdans la barre supérieure pour afficher un graphique d'application versionné des différents services de votre maillage Istio. - Pour afficher les taux de demande, cliquez sur Afficher et sélectionnez Taux de trafic.
- Dans un autre onglet/une autre fenêtre, accédez à l'URL de l'application BookInfo et actualisez plusieurs fois la page afin de générer un peu de charge ou exécutez le script de chargement de la section précédente pour générer de la charge.
- A présent, consultez le graphique Kiali pour prendre connaissance du nombre de demandes par seconde.
Kiali propose un certain nombre de vues pour vous aider à visualiser vos services. Cliquez sur les différents onglets pour explorer le graphique des services et les différentes vues des charges de travail, des applications et des services.
Gestion du trafic
Les règles de routage du trafic d'Istio vous permettent de contrôler facilement le flux de trafic et les appels d'API entre les services. Istio simplifie la configuration des propriétés de niveau service, telles que les disjoncteurs, les délais d'attente et les relances, et facilite la configuration de tâches importantes telles que les tests A/B, les déploiements canary et les déploiements par étapes avec fractionnement du trafic en pourcentage. Il fournit également des fonctions de reprise après incident prêtes à l'emploi qui renforcent votre application en matière de pannes au niveau des services dépendants ou du réseau.
Le modèle de gestion du trafic d'Istio s'appuie sur des proxy Envoy (composants sidecar) déployés avec vos services. L'intégralité du trafic que vos services envoient et reçoivent (trafic de plan de données) est envoyée à un proxy via Envoy, ce qui vous permet de diriger et de contrôler plus facilement le trafic autour de votre maillage sans modifier vos services.
Le pilote traduit les règles de haut niveau en configurations de niveau inférieur et distribue cette configuration aux instances Envoy. Pilot utilise trois types de ressources de configuration pour gérer le trafic au sein de son maillage de services : Les services virtuels, les règles de destination et les entrées de service.
Test A/B avec Istio
Le test A/B est une méthode permettant d'effectuer des tests identiques sur deux versions de service distinctes afin de déterminer laquelle offre les meilleures performances. Pour empêcher Istio d'appliquer le comportement de routage par défaut entre le service d'origine et le service modernisé, définissez les règles suivantes :
-
Exécutez la commande suivante pour créer des règles de destination par défaut pour les services Bookinfo :
oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all.yamlUne DestinationRule définit les règles qui s'appliquent au trafic destiné à un service après le routage. Ces règles spécifient une configuration pour l'équilibrage de charge, la taille du pool de connexions à partir du composant sidecar et des valeurs de détection des données aberrantes afin de détecter et d'écarter les hôtes défaillants du pool d'équilibrage de charge. Toute destination
hostetsubsetréférencée dans une règleVirtualServicedoit être définie dans une règleDestinationRulecorrespondante. -
VirtualService définit un ensemble de règles de routage de trafic à appliquer lorsqu'un hôte est traité. Chaque règle de routage définit des critères de correspondance pour le trafic d'un protocole spécifique. Si le trafic est mis en correspondance, il est envoyé à un service de destination nommé (ou un sous-ensemble/une version de ce service) défini dans le registre. Exécutez la commande ci-dessous pour envoyer tout le trafic du service reviews à la version v1 :
oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-all-v1.yamlVirtualServicedéfinit une règle qui capture tout le trafic HTTP entrant dans le service reviews et achemine 100% du trafic vers les pods du service avec le libellé "version: v1". Un sous-ensemble ou une version d'une destination de route est identifié par une référence à un sous-ensemble de services nommé qui doit être déclaré dans une règleDestinationRulecorrespondante. -
Affichez l'application bookinfo dans l'onglet de votre navigateur. Vous ne devez obtenir que la version v1 de l'application BookInfo, c'est-à-dire, sans étoile d'évaluation.
-
Pour activer le maillage de service Istio de manière à pouvoir effectuer des tests A/B sur la nouvelle version du service, modifiez la règle
VirtualServiced'origine pour envoyer uniquement le trafic Firefox à v2. Vous pouvez remplaceruser-agentpar n'importe quel autre navigateur installé sur votre machine :cat <<EOF | oc replace -f - apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: user-agent: regex: '.*Firefox.*' route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v3 EOFDans les règles Istio
VirtualService, il ne peut y avoir qu'une seule règle pour chaque service et, par conséquent, lorsque vous définissez plusieurs blocs HTTPRoute, l'ordre dans lequel ils sont définis dans le fichier yaml a de l'importance. Par conséquent, la règleVirtualServiceest modifiée au lieu de créer une nouvelle règle. Avec la règle modifiée, les demandes entrantes provenant de navigateursFirefoxvont vers la version v2 version (étoiles noires) de l'application bookinfo. Toutes les autres demandes passent par le bloc suivant qui achemine le trafic vers la version v3 (étoiles rouges) de l'application bookinfo.
Déploiement Canary
Dans les déploiements Canary, des versions plus récentes des services sont progressivement transférées aux utilisateurs afin de réduire les risques et répercussions des bogues introduits par la version plus récente. Pour commencer à router
progressivement le trafic vers la version la plus récente du service bookinfo, modifiez la règle VirtualService d'origine :
-
Exécutez la commande suivante pour envoyer 80% du trafic à la version v1 :
oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-80-20.yamlDans la règle modifiée, le trafic routé est fractionné en deux sous-ensembles distincts du microservice reviews. De cette façon, le trafic vers la version modernisée 2 du service reviews est contrôlé sur une base de pourcentage pour limiter l'impact de bogues imprévus. Cette règle peut être modifiée au fil du temps jusqu'à ce que le trafic soit dirigé vers la version la plus récente du service.
-
Affichez à nouveau l'application bookinfo dans l'onglet de votre navigateur. Vérifiez que vous utilisez une actualisation immédiate (commande + Maj + R sur Mac ou Ctrl + F5 sur Windows) pour supprimer toute mise en cache du navigateur. Notez que l'application bookinfo doit permuter entre V1 ou V2 à environ la pondération que vous avez spécifiée.
-
Pour router tout le trafic vers reviews v3 :
oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-v3.yaml
Sécurisation de vos services
Istio peut sécuriser la communication entre les microservices sans nécessiter de modification du code d'application. La sécurité est fournie par l'authentification et le chiffrement des chemins de communication au sein du cluster. Ceci devient peu à peu une exigence en matière de sécurité et de conformité. Déléguer la sécurité des communications à Istio (au lieu d'implémenter TLS dans chaque microservice) garantit que votre application sera déployée avec des règles de sécurité cohérentes et gérables.
- Pour configurer mTLS, vous devez modifier vos règles de destination précédentes de manière à utiliser
ISTIO_MUTUAL.oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all-mtls.yaml - Envoyez davantage de trafic à votre application. Tout devrait continuer à fonctionner comme prévu.
- Lancez de nouveau Kiali et accédez à Graph.
- Sélectionnez
bookinfodans la barre supérieure Espace de nom. - Sous Afficher, sélectionnez Sécurité. Vous devez voir l'icône de verrouillage sur toutes les flèches (trafic).
- Pour confirmer que votre trafic est sécurisé, cliquez sur le flèche de
productpageàv1. Vous devez voirmTLS Enabledavec l'icône de verrouillage dans le panneau de droite.
Activation de SSL pour le trafic entrant dans votre cluster (HTTPS)
Dans cette section, vous allez créer une route sécurisée vers la passerelle Ingress avec terminaison Edge en utilisant le certificat par défaut fourni par Red Hat OpenShift on IBM Cloud. Avec une route Edge, le contrôleur Ingress termine le chiffrement TLS avant d'envoyer le trafic au pod istio-ingressgateway.
- Lancez la console Red Hat OpenShift on IBM Cloud
- Sous Networking, puis sur Routes,
- Sélectionnez le projet istio-system dans la barre supérieure, puis cliquez sur Create Route.
- Nom:
istio-ingressgateway-secure - Service :
istio-ingressgateway - Port cible
80->8080(TCP) - Vérifier
Secure Route - Terminaison TLS :
Edge - Trafic non sécurisé :
None
- Nom:
- Cliquez sur Créer.
- Accédez à la nouvelle URL HTTPS sous la section Location de la route istio-ingressgateway-secure. N'oubliez pas d'ajouter
/productpageà la fin de l'URL.
Suppression de ressources
Vous pouvez supprimer progressivement des ressources individuelles ou ignorer ces étapes et supprimer directement tout le cluster.
Suppression du projet d'application
- Pour supprimer le projet bookinfo, exécutez la commande suivante :
oc delete project bookinfo
Suppression de la ressource ServiceMeshControlPlane de l'interface de ligne de commande
- Pour extraire le nom de la ressource ServiceMeshControlPlane installé, exécutez la commande suivante :
oc get servicemeshcontrolplanes -n istio-system - Remplacez
<NAME_OF_CUSTOM_RESOURCE>par le nom de la commande précédente et exécutez cette commande pour supprimer la ressource personnalisée,
La ressourceoc delete servicemeshcontrolplanes -n istio-system <NAME_OF_CUSTOM_RESOURCE>ServiceMeshMemberRollest automatiquement supprimée lorsque vous supprimez la ressourceServiceMeshControlPlaneà laquelle elle est associée.
Suppression des opérateurs
- Accédez à la page Opérateurs → Opérateurs installés de la console Web.
- Dans la partie droite de la page Détails de l'opérateur, sélectionnez Désinstaller l'opérateur dans le menu déroulant Actions de Red Hat OpenShift Service Mesh Operator.
- Cliquez sur Désinstaller dans l'invite.
- Répétez les étapes 2 et 3 pour chaque opérateur de la liste.
Suppression du cluster
Supprimez le cluster pour supprimer tous les éléments d'un seul coup. Cette opération est irréversible.
- Accédez à la page OpenShift clusters.
- Cliquez sur le menu d'action en regard de
<your-initials>-myopenshiftclusteret sélectionnez Supprimer. - Sélectionner Supprimer le stockage de persistance utilisé par ce cluster et entrez le nom du cluster pour confirmer.
- Cliquez sur Supprimer.