1.8. Création du plan de contrôle du ServiceMesh


Vous pouvez déployer une installation de base de ServiceMeshControlPlane(SMCP) en utilisant soit la console web d'OpenShift Container Platform, soit la ligne de commande à l'aide de l'outil client oc.

Note

Cette installation de base est configurée sur la base des paramètres par défaut d'OpenShift et n'est pas conçue pour une utilisation en production. Utilisez cette installation par défaut pour vérifier votre installation, puis configurez votre ServiceMeshControlPlane en fonction de votre environnement.

Note

Red Hat OpenShift Service on AWS (ROSA) impose des restrictions supplémentaires sur l'endroit où vous pouvez créer des ressources et, par conséquent, le déploiement par défaut ne fonctionne pas. Voir Installation de Service Mesh sur Red Hat OpenShift Service on AWS pour des exigences supplémentaires avant de déployer votre SMCP dans un environnement ROSA.

Note

La documentation Service Mesh utilise istio-system comme projet d'exemple, mais vous pouvez déployer le Service Mesh dans n'importe quel projet.

1.8.1. Déploiement du plan de contrôle Service Mesh à partir de la console web

Vous pouvez déployer une version de base de ServiceMeshControlPlane à l'aide de la console Web. Dans cet exemple, istio-system est le nom du projet de plan de contrôle Service Mesh.

Conditions préalables

  • L'opérateur Red Hat OpenShift Service Mesh doit être installé.
  • Un compte avec le rôle cluster-admin.

Procédure

  1. Connectez-vous à la console web de OpenShift Container Platform en tant qu'utilisateur avec le rôle cluster-admin. Si vous utilisez Red Hat OpenShift Dedicated, vous devez avoir un compte avec le rôle dedicated-admin.
  2. Créer un projet nommé istio-system.

    1. Naviguez jusqu'à Home Projects.
    2. Cliquez sur Create Project.
    3. Dans le champ Name, entrez istio-system. La ressource ServiceMeshControlPlane doit être installée dans un projet distinct de vos microservices et de vos opérateurs.

      Ces étapes utilisent istio-system comme exemple, mais vous pouvez déployer votre plan de contrôle Service Mesh dans n'importe quel projet tant qu'il est séparé du projet qui contient vos services.

    4. Cliquez sur Create.
  3. Naviguez jusqu'à Operators Installed Operators.
  4. Cliquez sur l'opérateur Red Hat OpenShift Service Mesh, puis cliquez sur Istio Service Mesh Control Plane.
  5. Dans l'onglet Istio Service Mesh Control Plane, cliquez sur Create ServiceMeshControlPlane.
  6. Sur la page Create ServiceMeshControlPlane, acceptez la version par défaut du plan de contrôle de Service Mesh pour bénéficier des fonctionnalités disponibles dans la version la plus récente du produit. La version du plan de contrôle détermine les fonctionnalités disponibles quelle que soit la version de l'opérateur.

    Vous pouvez configurer les paramètres ServiceMeshControlPlane ultérieurement. Pour plus d'informations, voir Configuration de Red Hat OpenShift Service Mesh.

    1. Cliquez sur Create. L'opérateur crée des pods, des services et des composants du plan de contrôle Service Mesh en fonction de vos paramètres de configuration.
  7. Pour vérifier que le plan de contrôle est correctement installé, cliquez sur l'onglet Istio Service Mesh Control Plane.

    1. Cliquez sur le nom du nouveau plan de contrôle.
    2. Cliquez sur l'onglet Resources pour voir les ressources du plan de contrôle de Red Hat OpenShift Service Mesh que l'opérateur a créées et configurées.

1.8.2. Déploiement du plan de contrôle Service Mesh à l'aide de la CLI

Vous pouvez déployer une version de base de ServiceMeshControlPlane à partir de la ligne de commande.

Conditions préalables

  • L'opérateur Red Hat OpenShift Service Mesh doit être installé.
  • Accès à la CLI OpenShift (oc).

Procédure

  1. Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle cluster-admin. Si vous utilisez Red Hat OpenShift Dedicated, vous devez avoir un compte avec le rôle dedicated-admin.

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. Créer un projet nommé istio-system.

    $ oc new-project istio-system
  3. Créez un fichier ServiceMeshControlPlane nommé istio-installation.yaml en utilisant l'exemple suivant. La version du plan de contrôle Service Mesh détermine les fonctionnalités disponibles indépendamment de la version de l'Opérateur.

    Exemple version 2.3 istio-installation.yaml

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.3
      tracing:
        type: Jaeger
        sampling: 10000
      addons:
        jaeger:
          name: jaeger
          install:
            storage:
              type: Memory
        kiali:
          enabled: true
          name: kiali
        grafana:
          enabled: true

  4. Exécutez la commande suivante pour déployer le plan de contrôle Service Mesh, où <istio_installation.yaml> inclut le chemin d'accès complet à votre fichier.

    $ oc create -n istio-system -f <istio_installation.yaml>
  5. Pour suivre la progression du déploiement des modules, exécutez la commande suivante :

    $ oc get pods -n istio-system -w

    Vous devriez obtenir un résultat similaire à celui qui suit :

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

1.8.3. Validation de l'installation de SMCP avec le CLI

Vous pouvez valider la création du site ServiceMeshControlPlane à partir de la ligne de commande.

Procédure

  1. Connectez-vous au CLI de OpenShift Container Platform en tant qu'utilisateur ayant le rôle cluster-admin. Si vous utilisez Red Hat OpenShift Dedicated, vous devez avoir un compte avec le rôle dedicated-admin.

    $ oc login https://<HOSTNAME>:6443
  2. Exécutez la commande suivante pour vérifier l'installation du plan de contrôle Service Mesh, où istio-system est l'espace de noms dans lequel vous avez installé le plan de contrôle Service Mesh.

    $ oc get smcp -n istio-system

    L'installation est terminée avec succès lorsque la colonne STATUS est ComponentsReady.

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.1.1     66m

1.8.4. Configuration de tous les composants du plan de contrôle de Service Mesh pour qu'ils s'exécutent sur des nœuds d'infrastructure

Cette tâche ne doit être effectuée que si tous les composants déployés par le plan de contrôle Service Mesh (notamment Istiod, Ingress Gateway et Egress Gateway) ainsi que les éléments facultatifs (tels que Prometheus, Grafana et Distributed Tracing) sont exécutés sur les nœuds d'infrastructure.

Si le plan de contrôle s'exécute sur un nœud de travail, ignorez cette tâche.

Procédure

  1. Ouvrez la ressource ServiceMeshControlPlane en tant que fichier YAML :

    oc -n istio-system edit smcp <name> 1
    1
    <name> représente le nom de la ressource ServiceMeshControlPlane.
  2. Pour exécuter tous les composants Service Mesh déployés par ServiceMeshControlPlane sur les nœuds d'infrastructure, ajoutez les champs nodeSelector et tolerations à la spécification spec.runtime.defaults.pod dans la ressource ServiceMeshControlPlane:

    spec:
      runtime:
        defaults:
          pod:
            nodeSelector: 1
              node-role.kubernetes.io/infra: ""
            tolerations: 2
            - effect: NoSchedule
              key: node-role.kubernetes.io/infra
              value: reserved
            - effect: NoExecute
              key: node-role.kubernetes.io/infra
              value: reserved
    1
    Permet de s'assurer que les pods SMCP ne sont planifiés que sur un nœud d'infrastructure.
    2
    Assure que les pods sont acceptés par le nœud d'infrastructure.

1.8.5. Configuration des composants du plan de contrôle de Service Mesh pour qu'ils s'exécutent sur les nœuds d'infrastructure

Cette tâche ne doit être effectuée que si des composants individuels du plan de contrôle de Service Mesh (tels que Istiod, la passerelle d'entrée et la passerelle de sortie) sont exécutés sur des nœuds d'infrastructure.

Si le plan de contrôle est exécuté sur un nœud de travailleur, ignorez cette tâche.

Procédure

  1. Ouvrez la ressource ServiceMeshControlPlane en tant que fichier YAML.

    oc -n istio-system edit smcp <name> 1
    1
    <name> représente le nom de la ressource ServiceMeshControlPlane.
  2. Pour exécuter le composant Istiod sur un nœud d'infrastructure, ajoutez les champs nodeSelector et tolerations à la spécification spec.runtime.components.pilot.pod dans la ressource ServiceMeshControlPlane.

    spec:
      runtime:
        components:
          pilot:
            pod:
              nodeSelector: 1
                node-role.kubernetes.io/infra: ""
              tolerations: 2
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    1
    Assure que le pod Istiod n'est programmé que sur un nœud d'infrastructure.
    2
    Assure que le pod est accepté par le nœud d'infrastructure.
  3. Pour exécuter les passerelles d'entrée et de sortie sur les nœuds d'infrastructure, ajoutez les champs nodeSelector et tolerations à la ressource spec.gateways.ingress.runtime.pod et la ressource spec.gateways.egress.runtime.pod à la ressource ServiceMeshControlPlane.

    spec:
      gateways:
        ingress:
          runtime:
            pod:
              nodeSelector: 1
                node-role.kubernetes.io/infra: ""
              tolerations: 2
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
        egress:
          runtime:
            pod:
              nodeSelector: 3
                node-role.kubernetes.io/infra: ""
              tolerations: 4
              - effect: NoSchedule
                key: node-role.kubernetes.io/infra
                value: reserved
              - effect: NoExecute
                key: node-role.kubernetes.io/infra
                value: reserved
    1 3
    Veille à ce que le module de passerelle ne soit programmé que sur un nœud d'infrastructure
    2 4
    Assure que le pod est accepté par le nœud d'infrastructure.

1.8.6. Vérification de l'exécution du plan de contrôle Service Mesh sur les nœuds d'infrastructure

Procédure

  • Confirmez que les nœuds associés aux pods Istiod, Ingress Gateway et Egress Gateway sont des nœuds d'infrastructure :

    $ oc -n istio-system get pods -owide

1.8.7. Valider votre installation SMCP avec Kiali

Vous pouvez utiliser la console Kiali pour valider votre installation Service Mesh. La console Kiali offre plusieurs moyens de valider que vos composants Service Mesh sont déployés et configurés correctement.

Procédure

  1. Connectez-vous à la console web de OpenShift Container Platform en tant qu'utilisateur disposant des droits cluster-admin. Si vous utilisez Red Hat OpenShift Dedicated, vous devez avoir un compte avec le rôle dedicated-admin.
  2. Naviguez jusqu'à Networking Routes.
  3. Sur la page Routes, sélectionnez le projet de plan de contrôle Service Mesh, par exemple istio-system, dans le menu Namespace.

    La colonne Location affiche l'adresse liée à chaque itinéraire.

  4. Si nécessaire, utilisez le filtre pour trouver la route de la console Kiali. Cliquez sur l'itinéraire Location pour lancer la console.
  5. Cliquez sur Log In With OpenShift.

    Lorsque vous vous connectez pour la première fois à la console Kiali, vous voyez la page Overview qui affiche tous les espaces de noms de votre maillage de services que vous avez le droit de voir. Lorsque plusieurs espaces de noms sont affichés sur la page Overview, Kiali affiche en premier les espaces de noms présentant des problèmes de santé ou de validation.

    Figure 1.1. Page de présentation de Kiali

    Kiali Overview page showing istio-system

    La tuile de chaque espace de noms affiche le nombre d'étiquettes, l'état de santé de Istio Config, le nombre d'étiquettes, l'état de santé de Applications et l'état de santé de Traffic pour l'espace de noms. Si vous validez l'installation de la console et que les espaces de noms n'ont pas encore été ajoutés au maillage, il se peut qu'il n'y ait pas d'autres données à afficher que istio-system.

  6. Kiali dispose de quatre tableaux de bord spécifiques à l'espace de noms dans lequel le plan de contrôle Service Mesh est installé. Pour afficher ces tableaux de bord, cliquez sur le menu Options kebab sur la tuile correspondant à l'espace de noms du plan de contrôle, par exemple istio-system, et sélectionnez l'une des options suivantes :

    • Istio Mesh Dashboard
    • Istio Control Plane Dashboard
    • Istio Performance Dashboard
    • Istio Wasm Exetension Dashboard

      Figure 1.2. Tableau de bord Grafana Istio Control Plane

      Istio Control Plane Dashboard showing data for info sample project

      Kiali installe également deux tableaux de bord Grafana supplémentaires, disponibles sur la page Grafana Home:

    • Istio Workload Dashboard
    • Istio Service Dashboard
  7. Pour afficher les nœuds du plan de contrôle Service Mesh, cliquez sur la page Graph, sélectionnez dans le menu le site Namespace où vous avez installé le site ServiceMeshControlPlane, par exemple istio-system.

    1. Si nécessaire, cliquez sur Display idle nodes.
    2. Pour en savoir plus sur la page Graph, cliquez sur le lien Graph tour.
    3. Pour visualiser la topologie du maillage, sélectionnez un ou plusieurs espaces de noms supplémentaires dans la liste Service Mesh Member du menu Namespace.
  8. Pour afficher la liste des applications dans l'espace de noms istio-system, cliquez sur la page Applications. Kiali affiche l'état de santé des applications.

    1. Passez votre souris sur l'icône d'information pour afficher toute information supplémentaire notée dans la colonne Details.
  9. Pour afficher la liste des charges de travail dans l'espace de noms istio-system, cliquez sur la page Workloads. Kiali affiche l'état de santé des charges de travail.

    1. Passez votre souris sur l'icône d'information pour afficher toute information supplémentaire notée dans la colonne Details.
  10. Pour voir la liste des services de l'espace de noms istio-system, cliquez sur la page Services. Kiali affiche l'état de santé des services et des configurations.

    1. Passez votre souris sur l'icône d'information pour afficher toute information supplémentaire notée dans la colonne Details.
  11. Pour afficher une liste des objets Istio Configuration dans l'espace de noms istio-system, cliquez sur la page Istio Config. Kiali affiche l'état de la configuration.

    1. S'il y a des erreurs de configuration, cliquez sur la ligne et Kiali ouvre le fichier de configuration avec l'erreur en surbrillance.

1.8.8. Installation sur Red Hat OpenShift Service on AWS (ROSA)

À partir de la version 2.2, Red Hat OpenShift Service Mesh prend en charge l'installation sur Red Hat OpenShift Service on AWS (ROSA). Cette section documente les exigences supplémentaires lors de l'installation de Service Mesh sur cette plateforme.

1.8.8.1. Lieu d'installation

Vous devez créer un nouvel espace de noms, par exemple istio-system, lors de l'installation de Red Hat OpenShift Service Mesh et de la création de l'espace de noms ServiceMeshControlPlane.

1.8.8.2. Configuration requise du plan de contrôle Service Mesh

La configuration par défaut dans le fichier ServiceMeshControlPlane ne fonctionne pas sur un cluster ROSA. Vous devez modifier le SMCP par défaut et définir spec.security.identity.type=ThirdParty lors de l'installation sur Red Hat OpenShift Service on AWS.

Exemple de ressource ServiceMeshControlPlane pour ROSA

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
  namespace: istio-system
spec:
  version: v2.3
  security:
    identity:
      type: ThirdParty  #required setting for ROSA
  tracing:
    type: Jaeger
    sampling: 10000
  policy:
    type: Istiod
  addons:
    grafana:
      enabled: true
    jaeger:
      install:
        storage:
          type: Memory
    kiali:
      enabled: true
    prometheus:
      enabled: true
  telemetry:
    type: Istiod

1.8.8.3. Restrictions sur la configuration du Kiali

Red Hat OpenShift Service sur AWS impose des restrictions supplémentaires sur l'endroit où vous pouvez créer des ressources et ne vous permet pas de créer la ressource Kiali dans un espace de noms géré par Red Hat.

Cela signifie que les paramètres communs suivants pour spec.deployment.accessible_namespaces ne sont pas autorisés dans un cluster ROSA :

  • ['**'] (tous les espaces nominatifs)
  • default
  • codeready-*
  • openshift-*
  • redhat-*

Le message d'erreur de validation fournit une liste complète de tous les espaces de noms restreints.

Exemple de ressource Kiali pour ROSA

apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
  name: kiali
  namespace: istio-system
spec:
  auth:
    strategy: openshift
  deployment:
    accessible_namespaces:   #restricted setting for ROSA
      - istio-system
    image_pull_policy: ''
    ingress_enabled: true
    namespace: istio-system

1.8.9. Ressources supplémentaires

Red Hat OpenShift Service Mesh prend en charge plusieurs plans de contrôle indépendants au sein du cluster. Vous pouvez créer des configurations réutilisables avec les profils ServiceMeshControlPlane. Pour plus d'informations, voir Créer des profils de plan de contrôle.

1.8.10. Prochaines étapes

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.