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

Diagramme d'architecture*Diagramme d'
du

  1. 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.
  2. L'administrateur crée un espace de nom (projet) istio-system et crée ServiceMeshControlPlane.
  3. L'administrateur crée un espace de nom bookinfo avec l'injection de composant sidecar activée et déploie l'application BookInfo (avec vos microservices séparés) dans le maillage de service.
  4. L'administrateur expose l'application pour le trafic externe avec la passerelle Ingress Istio.
  5. L'utilisateur accède de manière sécurisée (HTTPS) à l'application via un navigateur.
  6. 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),
  • d'oc pour 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 :

  1. 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.
  2. Définissez le service d'orchestration sur la version 4.13.x de Red Hat OpenShift on IBM Cloud
  3. Sélectionnez votre autorisation OCP.
  4. 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 :
  5. 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
  6. 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)
  7. Sous Resource details,Set Cluster name to -myopenshiftcluster en remplaçant <your-initials> par vos propres initiales.
  8. 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é.

  1. 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.
  2. 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.
  3. Copiez le texte sous Log in with this token.
  4. 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..
  5. Vérifiez la version de l'interface de ligne de commande OpenShift :
    oc version
    
  6. La version doit être au minimum 4.13.x, sinon installez la dernière version en suivant ces instructions.
  7. 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
    
  8. 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.
    oc new-project bookinfo
    
    Dans Red Hat OpenShift, un projet est un espace de nom Kubernetes avec des annotations supplémentaires.

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

  1. Dans le panneau de gauche de la console Web Red Hat OpenShift, sélectionnez Administrateur dans la liste déroulante.
  2. Sélectionnez Opérateurs, puis OperatorHub.
  3. Recherchez l'opérateur OpenShift Elasticsearch, cliquez sur la vignette, cliquez sur Installer, laissez la sélection par défaut et cliquez sur Installer.
  4. Répétez les étapes 2 et 3 ci-dessus pour l'installation des opérateurs suivants.
    1. Plateforme de traçage répartie Red Hat OpenShift
    2. Opérateur Kiali (fourni par Red Hat)
    3. 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.

  1. 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.
  2. Entrez istio-system dans la zone Nom, puis cliquez sur Créer.
  3. Accédez à Opérateurs, puis cliquez sur Opérateurs installés.
  4. Sélectionnez istio-system dans le menu Projet sur la barre supérieure.
  5. Cliquez sur Red Hat OpenShift Service Mesh. Si vous ne le voyez pas, attendez deux minutes et actualisez la page.
  6. Dans l'onglet Détails, sous la vignette Istio Service Mesh Control Plane, cliquez sur Créer une instance ou Créer ServiceMeshControlPlane.
  7. 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.
  8. Pour vous assurer que le plan de contrôle de Service Mesh est correctement installé, cliquez sur basic sous Name dans 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 raison ComponentsReady et un message All 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.

  1. Accédez à nouveau à OpérateursOpérateurs installés.
  2. Cliquez sur Red Hat OpenShift Service Mesh.
  3. 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
  4. Remplacez your-project par bookinfo et 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
    
  5. 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.

Architecture utilisant Istio
Architecture utilisant Istio

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.

  1. Déployez l'application Bookinfo dans le projet bookinfo en 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.yaml
    

    Le fichier bookinfo.yaml est 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).

  2. Vérifiez que les pods sont opérationnels.

    oc get pods
    

    Exemple 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          4m12s
    

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

  1. 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
    
  2. Obtenez la ROUTE de la passerelle Ingress Istio.
    oc get routes -n istio-system istio-ingressgateway
    
  3. 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_HOST avec votre adresse HOST.
    export INGRESS_HOST=<HOST>
    
    Accédez à l'application à l'adresse http://$INGRESS_HOST/productpage dans 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.

  1. Dans la console Web Red Hat OpenShift on IBM Cloud :

    1. Dans le panneau de gauche, sous Networking, cliquez sur Routes.
    2. Sélectionnez le projet istio-system dans la barre supérieure.
    3. Cliquez sur l'URL (emplacement) en regard de grafana.
    4. Connectez-vous à Red Hat OpenShift on IBM Cloud et accordez les permissions requises pour voir le tableau de bord Grafana.
  2. Cliquez sur le menu Dashboard dans le menu de navigation de gauche, sélectionnez l'onglet Manage, puis istio et Istio Service Dashboard.

  3. Sélectionnez productpage.bookinfo.svc.cluster.local dans la liste déroulante Service.

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

  1. Dans la console Web Red Hat OpenShift on IBM Cloud :
    1. Dans le panneau de gauche, sous Networking, cliquez sur Routes.
    2. Sélectionnez le projet istio-system dans la barre supérieure.
    3. Cliquez sur l'URL (emplacement) à côté de kiali et si vous y êtes invité, cliquez sur Login with OpenShift
  2. Cliquez sur le graphique dans le panneau de gauche et sélectionnez les espaces de nom bookinfo et istio-system dans la barre supérieure pour afficher un graphique d'application versionné des différents services de votre maillage Istio.
  3. Pour afficher les taux de demande, cliquez sur Afficher et sélectionnez Taux de trafic.
  4. 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.
  5. 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 :

  1. 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.yaml
    

    Une 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 host et subset référencée dans une règle VirtualService doit être définie dans une règle DestinationRule correspondante.

  2. 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.yaml
    

    VirtualService dé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ègle DestinationRule correspondante.

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

  4. 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 VirtualService d'origine pour envoyer uniquement le trafic Firefox à v2. Vous pouvez remplacer user-agent par 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
    EOF
    

    Dans 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ègle VirtualService est modifiée au lieu de créer une nouvelle règle. Avec la règle modifiée, les demandes entrantes provenant de navigateurs Firefox vont 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 :

  1. 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.yaml
    

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

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

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

  1. 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
    
  2. Envoyez davantage de trafic à votre application. Tout devrait continuer à fonctionner comme prévu.
  3. Lancez de nouveau Kiali et accédez à Graph.
  4. Sélectionnez bookinfo dans la barre supérieure Espace de nom.
  5. Sous Afficher, sélectionnez Sécurité. Vous devez voir l'icône de verrouillage sur toutes les flèches (trafic).
  6. Pour confirmer que votre trafic est sécurisé, cliquez sur le flèche de productpage à v1. Vous devez voir mTLS Enabled avec 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.

  1. Lancez la console Red Hat OpenShift on IBM Cloud
  2. Sous Networking, puis sur Routes,
  3. Sélectionnez le projet istio-system dans la barre supérieure, puis cliquez sur Create Route.
    1. Nom: istio-ingressgateway-secure
    2. Service :istio-ingressgateway
    3. Port cible 80->8080(TCP)
    4. VérifierSecure Route
    5. Terminaison TLS : Edge
    6. Trafic non sécurisé : None
  4. Cliquez sur Créer.
  5. 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

  1. Pour extraire le nom de la ressource ServiceMeshControlPlane installé, exécutez la commande suivante :
    oc get servicemeshcontrolplanes -n istio-system
    
  2. 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,
    oc delete servicemeshcontrolplanes -n istio-system <NAME_OF_CUSTOM_RESOURCE>
    
    La ressource ServiceMeshMemberRoll est automatiquement supprimée lorsque vous supprimez la ressource ServiceMeshControlPlane à laquelle elle est associée.

Suppression des opérateurs

  1. Accédez à la page OpérateursOpérateurs installés de la console Web.
  2. 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.
  3. Cliquez sur Désinstaller dans l'invite.
  4. 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.

  1. Accédez à la page OpenShift clusters.
  2. Cliquez sur le menu d'action en regard de <your-initials>-myopenshiftcluster et sélectionnez Supprimer.
  3. Sélectionner Supprimer le stockage de persistance utilisé par ce cluster et entrez le nom du cluster pour confirmer.
  4. Cliquez sur Supprimer.

Contenu connexe