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
.
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.
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.
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
-
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ôlededicated-admin
. Créer un projet nommé
istio-system
.-
Naviguez jusqu'à Home
Projects. - Cliquez sur Create Project.
Dans le champ Name, entrez
istio-system
. La ressourceServiceMeshControlPlane
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.- Cliquez sur Create.
-
Naviguez jusqu'à Home
-
Naviguez jusqu'à Operators
Installed Operators. - Cliquez sur l'opérateur Red Hat OpenShift Service Mesh, puis cliquez sur Istio Service Mesh Control Plane.
- Dans l'onglet Istio Service Mesh Control Plane, cliquez sur Create ServiceMeshControlPlane.
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.- 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.
Pour vérifier que le plan de contrôle est correctement installé, cliquez sur l'onglet Istio Service Mesh Control Plane.
- Cliquez sur le nom du nouveau plan de contrôle.
- 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
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ôlededicated-admin
.$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
Créer un projet nommé
istio-system
.$ oc new-project istio-system
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
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>
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
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ôlededicated-admin
.$ oc login https://<HOSTNAME>:6443
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
estComponentsReady
.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
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 ressourceServiceMeshControlPlane
.
Pour exécuter tous les composants Service Mesh déployés par
ServiceMeshControlPlane
sur les nœuds d'infrastructure, ajoutez les champsnodeSelector
ettolerations
à la spécificationspec.runtime.defaults.pod
dans la ressourceServiceMeshControlPlane
: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.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
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 ressourceServiceMeshControlPlane
.
Pour exécuter le composant Istiod sur un nœud d'infrastructure, ajoutez les champs
nodeSelector
ettolerations
à la spécificationspec.runtime.components.pilot.pod
dans la ressourceServiceMeshControlPlane
.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
Pour exécuter les passerelles d'entrée et de sortie sur les nœuds d'infrastructure, ajoutez les champs
nodeSelector
ettolerations
à la ressourcespec.gateways.ingress.runtime.pod
et la ressourcespec.gateways.egress.runtime.pod
à la ressourceServiceMeshControlPlane
.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.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
-
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
. -
Naviguez jusqu'à Networking
Routes. 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.
- Si nécessaire, utilisez le filtre pour trouver la route de la console Kiali. Cliquez sur l'itinéraire Location pour lancer la console.
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
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
.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 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
Kiali installe également deux tableaux de bord Grafana supplémentaires, disponibles sur la page Grafana Home:
- Istio Workload Dashboard
- Istio Service Dashboard
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 exempleistio-system
.- Si nécessaire, cliquez sur Display idle nodes.
- Pour en savoir plus sur la page Graph, cliquez sur le lien Graph tour.
- 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.
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.- Passez votre souris sur l'icône d'information pour afficher toute information supplémentaire notée dans la colonne Details.
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.- Passez votre souris sur l'icône d'information pour afficher toute information supplémentaire notée dans la colonne Details.
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.- Passez votre souris sur l'icône d'information pour afficher toute information supplémentaire notée dans la colonne Details.
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.- 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
-
Créez une ressource
ServiceMeshMemberRoll
pour spécifier les espaces de noms associés au maillage de services. Pour plus d'informations, voir Ajouter des services à un maillage de services.