1.10. Activation de l'injection du side-car
Après avoir ajouté les espaces de noms qui contiennent vos services à votre maillage, l'étape suivante consiste à activer l'injection automatique de sidecars dans la ressource Deployment de votre application. Vous devez activer l'injection automatique de sidecars pour chaque déploiement.
Si vous avez installé l'exemple d'application Bookinfo, l'application a été déployée et les sidecars ont été injectées dans le cadre de la procédure d'installation. Si vous utilisez votre propre projet et service, déployez vos applications sur OpenShift Container Platform.
Pour plus d'informations, voir la documentation OpenShift Container Platform, Understanding Deployment and DeploymentConfig objects.
1.10.1. Conditions préalables
- Services déployés dans le maillage, par exemple l'exemple d'application Bookinfo.
- Un fichier de ressources de déploiement.
1.10.2. Activation de l'injection automatique du side-car
Lors du déploiement d'une application, vous devez opter pour l'injection en configurant l'annotation sidecar.istio.io/inject
dans spec.template.metadata.annotations
vers true
dans l'objet deployment
. L'opt-in garantit que l'injection de sidecar n'interfère pas avec d'autres fonctionnalités d'OpenShift Container Platform telles que les builder pods utilisés par de nombreux frameworks au sein de l'écosystème d'OpenShift Container Platform.
Conditions préalables
- Identifiez les espaces de noms qui font partie de votre maillage de services et les déploiements qui ont besoin d'une injection automatique de sidecar.
Procédure
Pour trouver vos déploiements, utilisez la commande
oc get
.$ oc get deployment -n <namespace>
Par exemple, pour afficher le fichier de déploiement du microservice "ratings-v1" dans l'espace de noms
info
, utilisez la commande suivante pour afficher la ressource au format YAML.oc get deployment -n info ratings-v1 -o yaml
- Ouvrez le fichier YAML de configuration du déploiement de l'application dans un éditeur.
Ajoutez
spec.template.metadata.annotations.sidecar.istio/inject
à votre Deployment YAML et définissezsidecar.istio.io/inject
àtrue
comme indiqué dans l'exemple suivant.Exemple d'extrait de info deployment-ratings-v1.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: ratings-v1 namespace: info labels: app: ratings version: v1 spec: template: metadata: annotations: sidecar.istio.io/inject: 'true'
- Enregistrer le fichier de configuration du déploiement.
Ajoutez le fichier au projet qui contient votre application.
oc apply -n <namespace> -f deployment.yaml
Dans cet exemple,
info
est le nom du projet qui contient l'applicationratings-v1
etdeployment-ratings-v1.yaml
est le fichier que vous avez modifié.$ oc apply -n info -f deployment-ratings-v1.yaml
Pour vérifier que la ressource a été téléchargée avec succès, exécutez la commande suivante.
$ oc get deployment -n <namespace> <deploymentName> -o yaml
Par exemple,
$ oc get deployment -n info ratings-v1 -o yaml
1.10.3. Validation de l'injection du sidecar
La console Kiali offre plusieurs moyens de vérifier si vos applications, services et charges de travail disposent ou non d'un proxy sidecar.
Figure 1.3. Insigne de side-car manquant
La page Graph affiche un badge de nœud indiquant un Missing Sidecar sur les graphiques suivants :
- Graphique de l'application
- Graphique de l'application versionnée
- Graphique de la charge de travail
Figure 1.4. Icône de side-car manquante
La page Applications affiche une icône Missing Sidecar dans la colonne Details pour toutes les applications d'un espace de noms qui n'ont pas de sidecar.
La page Workloads affiche une icône Missing Sidecar dans la colonne Details pour toutes les applications d'un espace de noms qui n'ont pas de sidecar.
La page Services affiche une icône Missing Sidecar dans la colonne Details pour toutes les applications d'un espace de noms qui n'ont pas de sidecar. Lorsqu'il existe plusieurs versions d'un service, la page Service Details permet d'afficher les icônes Missing Sidecar.
La page Workload Details comporte un onglet spécial Logs unifié qui vous permet d'afficher et de corréler les journaux d'application et de proxy. Vous pouvez consulter les journaux Envoy comme un autre moyen de valider l'injection de sidecar pour les charges de travail de vos applications.
La page Workload Details comporte également un onglet Envoy pour toute charge de travail qui est un proxy Envoy ou qui a été injectée avec un proxy Envoy. Cet onglet affiche un tableau de bord Envoy intégré qui comprend des sous-onglets pour Clusters, Listeners, Routes, Bootstrap, Config, et Metrics.
Pour plus d'informations sur l'activation des journaux d'accès à Envoy, voir la section Dépannage.
Pour plus d'informations sur l'affichage des journaux Envoy, voir Affichage des journaux dans la console Kiali
1.10.4. Définition de variables d'environnement de proxy par le biais d'annotations
La configuration des mandataires Envoy sidecar est gérée par le site ServiceMeshControlPlane
.
Vous pouvez définir des variables d'environnement pour le proxy sidecar des applications en ajoutant des annotations pod au déploiement dans le fichier injection-template.yaml
. Les variables d'environnement sont injectées dans le sidecar.
Exemple injection-template.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: resource spec: replicas: 7 selector: matchLabels: app: resource template: metadata: annotations: sidecar.maistra.io/proxyEnv: "{ \"maistra_test_env\": \"env_value\", \"maistra_test_env_2\": \"env_value_2\" }"
Vous ne devez jamais inclure les étiquettes et les annotations de maistra.io/
lorsque vous créez vos propres ressources personnalisées. Ces étiquettes et annotations indiquent que les ressources sont générées et gérées par l'opérateur. Si vous copiez le contenu d'une ressource générée par l'opérateur lorsque vous créez vos propres ressources, n'incluez pas d'étiquettes ou d'annotations commençant par maistra.io/
. Les ressources qui incluent ces étiquettes ou annotations seront écrasées ou supprimées par l'opérateur lors de la prochaine réconciliation.
1.10.5. Mise à jour des mandataires sidecar
Afin de mettre à jour la configuration des proxies sidecar, l'administrateur de l'application doit redémarrer les pods d'application.
Si votre déploiement utilise l'injection automatique de sidecar, vous pouvez mettre à jour le modèle de pod dans le déploiement en ajoutant ou en modifiant une annotation. Exécutez la commande suivante pour redéployer les pods :
$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt" : "'`date -Iseconds`'" }}}}}
Si votre déploiement n'utilise pas l'injection automatique de sidecars, vous devez mettre à jour manuellement les sidecars en modifiant l'image du conteneur de sidecars spécifiée dans le déploiement ou le pod, puis redémarrer les pods.
1.10.6. Prochaines étapes
Configurez les fonctionnalités de Red Hat OpenShift Service Mesh pour votre environnement.