1.22. Dépannage de votre maillage de services

Cette section décrit comment identifier et résoudre les problèmes courants dans Red Hat OpenShift Service Mesh. Utilisez les sections suivantes pour vous aider à dépanner et à déboguer les problèmes lors du déploiement de Red Hat OpenShift Service Mesh sur OpenShift Container Platform.

1.22.1. Comprendre les versions de Service Mesh

Afin de comprendre quelle version de Red Hat OpenShift Service Mesh vous avez déployée sur votre système, vous devez comprendre comment chacune des versions des composants est gérée.

  • Operator version - La version la plus récente de l'opérateur est 2.3.3. Le numéro de version de l'opérateur indique uniquement la version de l'opérateur actuellement installé. Étant donné que l'Opérateur Red Hat OpenShift Service Mesh prend en charge plusieurs versions du plan de contrôle Service Mesh, la version de l'Opérateur ne détermine pas la version de vos ressources ServiceMeshControlPlane déployées.

    Important

    La mise à niveau vers la dernière version de l'opérateur applique automatiquement les mises à jour des correctifs, mais ne met pas automatiquement à niveau votre plan de contrôle Service Mesh vers la dernière version mineure.

  • ServiceMeshControlPlane version - La version ServiceMeshControlPlane détermine la version de Red Hat OpenShift Service Mesh que vous utilisez. La valeur du champ spec.version dans la ressource ServiceMeshControlPlane contrôle l'architecture et les paramètres de configuration utilisés pour installer et déployer Red Hat OpenShift Service Mesh. Lorsque vous créez le plan de contrôle Service Mesh, vous pouvez définir la version de deux manières :

    • Pour configurer la vue formulaire, sélectionnez la version dans le menu Control Plane Version.
    • Pour configurer la vue YAML, définissez la valeur de spec.version dans le fichier YAML.

Operator Lifecycle Manager (OLM) ne gère pas les mises à niveau du plan de contrôle de Service Mesh, de sorte que le numéro de version de votre opérateur et de ServiceMeshControlPlane (SMCP) peut ne pas correspondre, à moins que vous n'ayez mis à niveau manuellement votre SMCP.

1.22.2. Dépannage Installation de l'opérateur

En plus des informations contenues dans cette section, veillez à consulter les rubriques suivantes :

1.22.2.1. Validation de l'installation de l'opérateur

Lorsque vous installez les opérateurs Red Hat OpenShift Service Mesh, OpenShift crée automatiquement les objets suivants dans le cadre d'une installation réussie de l'opérateur :

  • cartes de configuration
  • définitions de ressources personnalisées
  • déploiements
  • gousses
  • ensembles de répliques
  • rôles
  • liaisons de rôles
  • secrets
  • comptes de service
  • services

Depuis la console OpenShift Container Platform

Vous pouvez vérifier que les pods de l'opérateur sont disponibles et fonctionnent en utilisant la console OpenShift Container Platform.

  1. Navigate to WorkloadsPods.
  2. Sélectionnez l'espace de noms openshift-operators.
  3. Vérifiez que les pods suivants existent et ont un statut de running:

    • istio-operator
    • jaeger-operator
    • kiali-operator
  4. Sélectionnez l'espace de noms openshift-operators-redhat.
  5. Vérifiez que le module elasticsearch-operator existe et qu'il a le statut running.

A partir de la ligne de commande

  1. Vérifiez que les pods Operator sont disponibles et en cours d'exécution dans l'espace de noms openshift-operators à l'aide de la commande suivante :

    $ oc get pods -n openshift-operators

    Exemple de sortie

    NAME                               READY   STATUS    RESTARTS   AGE
    istio-operator-bb49787db-zgr87     1/1     Running   0          15s
    jaeger-operator-7d5c4f57d8-9xphf   1/1     Running   0          2m42s
    kiali-operator-f9c8d84f4-7xh2v     1/1     Running   0          64s

  2. Vérifiez l'opérateur Elasticsearch à l'aide de la commande suivante :

    $ oc get pods -n openshift-operators-redhat

    Exemple de sortie

    NAME                                      READY   STATUS    RESTARTS   AGE
    elasticsearch-operator-d4f59b968-796vq     1/1     Running   0          15s

1.22.2.2. Dépannage des mailles du filet Opérateurs

Si vous rencontrez des problèmes avec l'opérateur :

  • Vérifiez l'état de votre abonnement à l'opérateur.
  • Vérifiez que vous n'avez pas installé une version communautaire de l'opérateur au lieu de la version Red Hat prise en charge.
  • Vérifiez que vous avez le rôle cluster-admin pour installer Red Hat OpenShift Service Mesh.
  • Si le problème est lié à l'installation des opérateurs, vérifiez s'il n'y a pas d'erreurs dans les journaux des pods des opérateurs.
Note

Vous ne pouvez installer les opérateurs qu'à travers la console OpenShift, l'OperatorHub n'est pas accessible depuis la ligne de commande.

1.22.2.2.1. Visualisation des journaux de pods de l'opérateur

Vous pouvez afficher les journaux de l'opérateur en utilisant la commande oc logs. Red Hat peut demander des journaux pour aider à résoudre des cas d'assistance.

Procédure

  • Pour afficher les journaux du pod de l'opérateur, entrez la commande :

    $ oc logs -n openshift-operators <podName>

    Par exemple,

    $ oc logs -n openshift-operators istio-operator-bb49787db-zgr87

1.22.3. Dépannage du plan de contrôle

Le Service Mesh control plane est composé d'Istiod, qui consolide plusieurs composants de plan de contrôle précédents (Citadel, Galley, Pilot) en un seul binaire. Le déploiement de ServiceMeshControlPlane crée également les autres composants qui constituent Red Hat OpenShift Service Mesh, comme décrit dans la rubrique sur l'architecture.

1.22.3.1. Validation de l'installation du plan de contrôle Service Mesh

Lorsque vous créez le plan de contrôle Service Mesh, l'opérateur Service Mesh utilise les paramètres que vous avez spécifiés dans le fichier de ressources ServiceMeshControlPlane pour effectuer les opérations suivantes :

  • Crée les composants Istio et déploie les pods suivants :

    • istiod
    • istio-ingressgateway
    • istio-egressgateway
    • grafana
    • prometheus
  • Appelle l'opérateur Kiali pour créer un déploiement Kaili basé sur la configuration du SMCP ou de la ressource personnalisée Kiali.

    Note

    Les composants de Kiali sont affichés par l'opérateur Kiali, et non par l'opérateur Service Mesh.

  • Appelle l'opérateur de plateforme de traçage distribuée Red Hat OpenShift pour créer des composants de plateforme de traçage distribuée basés sur la configuration dans la ressource personnalisée SMCP ou Jaeger.

    Note

    Vous visualisez les composants Jaeger sous l'Opérateur de plateforme de traçage distribuée Red Hat OpenShift et les composants Elasticsearch sous l'Opérateur Red Hat Elasticsearch, et non sous l'Opérateur Service Mesh.

    Depuis la console OpenShift Container Platform

    Vous pouvez vérifier l'installation du plan de contrôle Service Mesh dans la console web OpenShift Container Platform.

    1. Naviguez jusqu'à OperatorsInstalled Operators.
    2. Sélectionnez l'espace de noms <istio-system>.
    3. Sélectionnez l'opérateur Red Hat OpenShift Service Mesh.

      1. Cliquez sur l'onglet Istio Service Mesh Control Plane.
      2. Cliquez sur le nom de votre plan de contrôle, par exemple basic.
      3. Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources. Vous pouvez utiliser le filtre pour restreindre votre vue, par exemple, pour vérifier que tous les Pods ont un statut de running.
      4. Si l'état du SMCP indique un problème, consultez la sortie status: dans le fichier YAML pour plus d'informations.
      5. Retournez à OperatorsInstalled Operators.
    4. Sélectionnez l'opérateur OpenShift Elasticsearch.

      1. Cliquez sur l'onglet Elasticsearch.
      2. Cliquez sur le nom du déploiement, par exemple elasticsearch.
      3. Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources. .
      4. Si la colonne Status pose des problèmes, consultez la sortie status: sur l'onglet YAML pour plus d'informations.
      5. Retournez à OperatorsInstalled Operators.
    5. Sélectionnez l'opérateur de la plateforme de traçage distribuée Red Hat OpenShift.

      1. Cliquez sur l'onglet Jaeger.
      2. Cliquez sur le nom de votre déploiement, par exemple jaeger.
      3. Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources.
      4. Si la colonne Status indique des problèmes, vérifiez la sortie status: sur l'onglet YAML pour plus d'informations.
      5. Naviguez jusqu'à OperatorsInstalled Operators.
    6. Sélectionnez l'opérateur Kiali.

      1. Cliquez sur l'onglet Istio Service Mesh Control Plane.
      2. Cliquez sur le nom de votre déploiement, par exemple kiali.
      3. Pour afficher les ressources créées par le déploiement, cliquez sur l'onglet Resources.
      4. Si la colonne Status pose des problèmes, consultez la sortie status: sur l'onglet YAML pour plus d'informations.

A partir de la ligne de commande

  1. Exécutez la commande suivante pour vérifier si les pods du plan de contrôle Service Mesh sont disponibles et en cours d'exécution, où istio-system est l'espace de noms dans lequel vous avez installé le SMCP.

    $ oc get pods -n istio-system

    Exemple de sortie

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-6776785cfc-6fz7t               2/2     Running   0          102s
    istio-egressgateway-5f49dd99-l9ppq     1/1     Running   0          103s
    istio-ingressgateway-6dc885c48-jjd8r   1/1     Running   0          103s
    istiod-basic-6c9cc55998-wg4zq          1/1     Running   0          2m14s
    jaeger-6865d5d8bf-zrfss                2/2     Running   0          100s
    kiali-579799fbb7-8mwc8                 1/1     Running   0          46s
    prometheus-5c579dfb-6qhjk              2/2     Running   0          115s

  2. Vérifiez l'état du déploiement du plan de contrôle Service Mesh à l'aide de la commande suivante. Remplacez istio-system par l'espace de noms dans lequel vous avez déployé le SMCP.

    $ oc get smcp -n <istio-system>

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

    Exemple de sortie

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.1.3     4m2s

    Si vous avez modifié et redéployé votre plan de contrôle Service Mesh, le statut devrait être UpdateSuccessful.

    Exemple de sortie

    NAME            READY     STATUS             TEMPLATE   VERSION   AGE
    basic-install   10/10     UpdateSuccessful   default     v1.1     3d16h

  3. Si l'état du SMCP indique autre chose que ComponentsReady, vérifiez la sortie status: dans la ressource SCMP pour plus d'informations.

    $ oc describe smcp <smcp-name> -n <controlplane-namespace>

    Exemple de sortie

    $ oc describe smcp basic -n istio-system

  4. Vérifiez l'état du déploiement de Jaeger à l'aide de la commande suivante, où istio-system est l'espace de noms dans lequel vous avez déployé le SMCP.

    $ oc get jaeger -n <istio-system>

    Exemple de sortie

    NAME     STATUS    VERSION   STRATEGY   STORAGE   AGE
    jaeger   Running   1.30.0    allinone   memory    15m

  5. Vérifiez l'état du déploiement de Kiali à l'aide de la commande suivante, où istio-system est l'espace de noms dans lequel vous avez déployé le SMCP.

    $ oc get kiali -n <istio-system>

    Exemple de sortie

    NAME    AGE
    kiali   15m

1.22.3.1.1. Accès à la console Kiali

Vous pouvez visualiser la topologie, la santé et les métriques de votre application dans la console Kiali. Si votre service rencontre des problèmes, la console Kiali vous permet de visualiser le flux de données à travers votre service. Vous pouvez obtenir des informations sur les composants du maillage à différents niveaux, y compris les applications abstraites, les services et les charges de travail. Kiali fournit également une vue graphique interactive de votre espace de noms en temps réel.

Pour accéder à la console Kiali, vous devez avoir Red Hat OpenShift Service Mesh installé, Kiali installé et configuré.

Le processus d'installation crée une route pour accéder à la console Kiali.

Si vous connaissez l'URL de la console Kiali, vous pouvez y accéder directement. Si vous ne connaissez pas l'URL, utilisez les instructions suivantes.

Procédure pour les administrateurs

  1. Connectez-vous à la console web de OpenShift Container Platform avec un rôle d'administrateur.
  2. Cliquez sur HomeProjects.
  3. Sur la page Projects, si nécessaire, utilisez le filtre pour trouver le nom de votre projet.
  4. Cliquez sur le nom de votre projet, par exemple info.
  5. Sur la page Project details, dans la section Launcher, cliquez sur le lien Kiali.
  6. Connectez-vous à la console Kiali avec le même nom d'utilisateur et le même mot de passe que ceux utilisés pour accéder à la console OpenShift Container Platform.

    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.

    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.

Procédure pour les développeurs

  1. Connectez-vous à la console web de OpenShift Container Platform avec un rôle de développeur.
  2. Cliquez sur Project.
  3. Sur la page Project Details, si nécessaire, utilisez le filtre pour trouver le nom de votre projet.
  4. Cliquez sur le nom de votre projet, par exemple info.
  5. Sur la page Project, dans la section Launcher, cliquez sur le lien Kiali.
  6. Cliquez sur Log In With OpenShift.
1.22.3.1.2. Accéder à la console Jaeger

Pour accéder à la console Jaeger, vous devez avoir installé Red Hat OpenShift Service Mesh, Red Hat OpenShift distributed tracing platform installé et configuré.

Le processus d'installation crée une route pour accéder à la console Jaeger.

Si vous connaissez l'URL de la console Jaeger, vous pouvez y accéder directement. Si vous ne connaissez pas l'URL, suivez les instructions suivantes.

Procédure à partir de la console OpenShift

  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'à NetworkingRoutes.
  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 jaeger. Cliquez sur la route Location pour lancer la console.
  5. Cliquez sur Log In With OpenShift.

Procédure à partir de la console Kiali

  1. Lancer la console Kiali.
  2. Cliquez sur Distributed Tracing dans le volet de navigation gauche.
  3. Cliquez sur Log In With OpenShift.

Procédure à partir du CLI

  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. Pour demander des détails sur l'itinéraire à l'aide de la ligne de commande, entrez la commande suivante. Dans cet exemple, istio-system est l'espace de noms du plan de contrôle Service Mesh.

    $ export JAEGER_URL=$(oc get route -n istio-system jaeger -o jsonpath='{.spec.host}')
  3. Lancez un navigateur et accédez à https://<JAEGER_URL>, où <JAEGER_URL> est l'itinéraire que vous avez découvert à l'étape précédente.
  4. Connectez-vous en utilisant le même nom d'utilisateur et le même mot de passe que ceux utilisés pour accéder à la console OpenShift Container Platform.
  5. Si vous avez ajouté des services au maillage de services et généré des traces, vous pouvez utiliser les filtres et le bouton Find Traces pour rechercher vos données de traces.

    Si vous validez l'installation de la console, il n'y a pas de données de trace à afficher.

1.22.3.2. Dépannage du plan de contrôle du Service Mesh

Si vous rencontrez des problèmes lors du déploiement du plan de contrôle Service Mesh,

  • Assurez-vous que la ressource ServiceMeshControlPlane est installée dans un projet distinct de vos services et opérateurs. Cette documentation utilise le projet istio-system comme exemple, mais vous pouvez déployer votre plan de contrôle dans n'importe quel projet tant qu'il est séparé du projet qui contient vos opérateurs et vos services.
  • Assurez-vous que les ressources personnalisées ServiceMeshControlPlane et Jaeger sont déployées dans le même projet. Par exemple, utilisez le projet istio-system pour les deux.

1.22.4. Dépannage du plan de données

Le site data plane est un ensemble de serveurs mandataires intelligents qui interceptent et contrôlent toutes les communications réseau entrantes et sortantes entre les services du maillage de services.

Red Hat OpenShift Service Mesh s'appuie sur un sidecar proxy dans le pod de l'application pour fournir des capacités de maillage de services à l'application.

1.22.4.1. Dépannage de l'injection du side-car

Red Hat OpenShift Service Mesh n'injecte pas automatiquement les sidecars de proxy aux pods. Vous devez opter pour l'injection de sidecars.

1.22.4.1.1. Dépannage de l'injection du sidecar d'Istio

Vérifiez si l'injection automatique est activée dans le déploiement de votre application. Si l'injection automatique pour le proxy Envoy est activée, il devrait y avoir une annotation sidecar.istio.io/inject:"true" dans la ressource Deployment sous spec.template.metadata.annotations.

1.22.4.1.2. Dépannage de l'injection du side-car de l'agent Jaeger

Vérifiez si l'injection automatique est activée dans le déploiement de votre application. Si l'injection automatique pour l'agent Jaeger est activée, il devrait y avoir une annotation sidecar.jaegertracing.io/inject:"true" dans la ressource Deployment.

Pour plus d'informations sur l'injection de sidecar, voir Activation de l'injection automatique