ASM inclut un injecteur de sidecar qui ajoute automatiquement un proxy sidecar aux nouveaux pods. Configurez des politiques d'injection pour contrôler les pods recevant un sidecar, optimiser l'utilisation des ressources et simplifier la gestion. Vous pouvez également ajuster la configuration des ressources de l'injecteur en fonction de la taille et de la charge de votre cluster.
Prérequis
Vous avez ajouté un cluster à une instance ASM.
Configurer les politiques d'injection automatique
Utilisez les libellés de namespace ou les libellés et annotations de pod pour contrôler les pods recevant un sidecar.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
-
Sur la page Sidecar Proxy injection, dans la section Injection strategy configuration management, configurez la politique d'injection automatique.
Un sidecar est automatiquement injecté dans un pod uniquement si celui-ci satisfait à la fois à la condition The labels of the pod's namespace must meet the conditions. et à la condition The pod's own labels/annotations must meet the conditions..
Condition de correspondance
Description
The labels of the pod's namespace must meet the conditions.
Condition relative aux libellés du namespace du pod.
-
Include istio-injection: enabled : lorsque le namespace d'un pod contient le libellé istio-injection: enabled, le pod est éligible à l'injection automatique.
-
Un sidecar est injecté si le namespace du pod ne possède pas le libellé istio-injection: disabled.
The pod's own labels/annotations must meet the conditions.
Condition relative aux libellés ou aux annotations du pod.
-
Un sidecar est injecté si le pod ne possède pas le libellé ou l'annotation sidecar.istio.io/inject: "false".
-
Include sidecar.istio.io/inject: "true" or Selected by AlwaysInjectSelector : lorsqu'un pod contient le libellé ou l'annotation sidecar.istio.io/inject: "true", il satisfait aux critères d'injection automatique.
Remarque-
Pour les instances ASM antérieures à la version 1.12, l'injection automatique n'est prise en charge que par la correspondance avec les annotations de pod.
-
Pour les instances ASM version 1.12 et ultérieures, l'injection automatique est prise en charge par la correspondance avec les libellés et les annotations de pod.
Les libellés sont prioritaires sur les annotations. Par exemple, si un pod possède à la fois le libellé sidecar.istio.io/inject: "true" et l'annotation sidecar.istio.io/inject: "false", le pod est considéré comme ayant le libellé sidecar.istio.io/inject: "true".
-
RemarqueSi vous configurez la politique pour injecter sauf si un namespace possède le libellé istio-injection: disabled ou si un pod possède le libellé sidecar.istio.io/inject: false, ASM ajoute automatiquement le libellé istio-injection: disabled au namespace kube-system pour protéger les composants système.
-
-
(Facultatif) Sous la section Injection strategy configuration management, cliquez sur Show Advanced Settings pour configurer les options avancées.
Paramètre
Description
The label selector which selector pods to be injected istio-proxy (AlwaysInjectSelector)
Sélecteur de libellés de pod configurable. Les pods correspondant à ce sélecteur sont toujours injectés, comme s'ils possédaient le libellé ou l'annotation sidecar.istio.io/inject:"true.
The label selector which selector pods which will never be injected (NeverInjectSelector)
Sélecteur de libellés de pod configurable. Les pods correspondant à ce sélecteur ne sont jamais injectés, comme s'ils possédaient le libellé ou l'annotation sidecar.istio.io/inject:"false.
RemarqueAlwaysInjectSelector et NeverInjectSelector sont des sélecteurs de libellés de pod et se configurent de la même manière. Chaque sélecteur peut comporter plusieurs expressions de sélection de libellés, une par ligne. Un pod est sélectionné si ses libellés correspondent à l'une des expressions.
Chaque expression de sélection de libellé se compose de trois parties :
Clé : la clé du libellé de pod à faire correspondre.
-
Opérateur : l'opérateur de correspondance. Les quatre opérateurs suivants sont disponibles :
In : correspond si la valeur du libellé du pod figure dans l'ensemble de valeurs spécifié.
NotIn : correspond si la valeur du libellé du pod ne figure pas dans l'ensemble de valeurs spécifié.
Exists : correspond si le pod possède un libellé avec la clé spécifiée.
DoesNotExist : correspond si le pod ne possède pas de libellé avec la clé spécifiée.
Valeur : l'ensemble de valeurs à faire correspondre lors de l'utilisation de l'opérateur In ou NotIn.
En bas de la page, cliquez sur Update Settings.
Configurer l'injecteur de sidecar
L'injecteur de sidecar est un service admission webhook déployé dans le cluster Kubernetes du plan de données. Il injecte automatiquement des proxies sidecar et n'est pas lui-même un proxy sidecar. Les services et charges de travail de l'injecteur de sidecar sont déployés dans le namespace istio-system du cluster Kubernetes, et leurs noms commencent par istio-sidecar-injector. Ajustez les paramètres de ressources et le nombre de réplicas pour les composants de l'injecteur de sidecar afin de garantir la disponibilité lors de l'injection simultanée d'un grand nombre de pods. Configurez la surveillance des métriques et les règles d'alerte pour le service admission webhook de l'injecteur de sidecar en vous référant à Gestion des alertes Container Service et aux Métriques de surveillance du composant kube-apiserver.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
-
Sur la page Sidecar Proxy injection, dans la section Injection service, configurez l'injecteur de sidecar et cliquez sur Update Settings en bas de la page.
Paramètre
Description
Resource Settings for Sidecar Injection
Configurez les Limits on Resources et les Required Resources pour le conteneur de l'injecteur de sidecar.
-
Limits on Resources : configurez les limites de ressources CPU et mémoire pour le conteneur de l'injecteur de sidecar. L'unité des limites de ressources CPU est le cœur, et celle des limites de ressources mémoire est le MiB.
-
Required Resources : configurez les demandes de ressources CPU et mémoire pour le conteneur de l'injecteur de sidecar. L'unité des demandes de ressources CPU est le cœur, et celle des demandes de ressources mémoire est le MiB.
pod replicas
Nombre de réplicas pour l'injecteur de sidecar.
RemarqueL'augmentation du nombre de réplicas de l'injecteur de sidecar améliore la disponibilité du service d'injection de sidecar lors de l'injection simultanée d'un grand nombre de pods. Pour une haute disponibilité, définissez le nombre de réplicas à 2 ou plus.
Rewrite App Probe
Indique s'il faut réécrire les contrôles d'intégrité du pod pendant l'injection. Pour déterminer si vous devez activer la redirection des contrôles d'intégrité, consultez Activer la redirection des contrôles d'intégrité pour les applications dans un maillage de services.
Sidecar-injector NodeSelector
Spécifie les libellés de nœud pour contrôler où les pods de l'injecteur de sidecar sont déployés.
Cliquez sur Add Match Label et saisissez le Name et la Value d'un libellé de nœud dans le cluster du plan de données pour spécifier les nœuds de déploiement.
-
Exemple 1 : Désactiver l'injection pour des pods spécifiques
-
Configurez la politique d'injection automatique.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
-
Sur la page Sidecar Proxy injection, dans la section Injection strategy configuration management, configurez les paramètres.
La configuration suivante injecte automatiquement un sidecar dans tous les pods d'un namespace portant le libellé istio-injection: enabled, sauf si un pod possède le libellé ou l'annotation sidecar.istio.io/inject: "false".
Paramètre
Description
The labels of the pod's namespace must meet the conditions.
Sélectionnez Include istio-injection: enabled.
The pod's own labels/annotations must meet the conditions.
Sélectionnez Not Include sidecar.istio.io/inject: "false" or Selected by NeverInjectSelector.
-
Créez un namespace global et activez l'injection automatique pour celui-ci.
Sur la page de détails de l'instance ASM, choisissez dans le volet de navigation de gauche. Sur la page qui s'affiche, cliquez sur Create.
Dans le panneau Create Namespace, saisissez un Name pour le namespace (par exemple, test1). Cliquez sur Add à côté de Tag, définissez le Name sur istio-injection et la Value sur enabled, puis cliquez sur OK.
En haut de la page, cliquez sur Sync Automatic Sidecar Injection to Kubernetes Cluster pour synchroniser le namespace global avec le cluster Kubernetes du plan de données.
-
Créez une application.
Déployez l'application
detailsdans le namespacetest1du cluster ACK sur le plan de données. Pour plus d'informations, consultez Déployer une application dans un cluster associé à une instance ASM.-
Vérifiez si un proxy sidecar est injecté dans le pod de l'application.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
En haut de la page Deployments, définissez le Namespace sur test1 et cliquez sur le nom de l'application details.
Dans l'onglet Pods, vous pouvez voir que le pod
details-v1contient deux images : l'image du proxy sidecar Istio (proxyv2) et l'image de l'application (examples-bookinfo-details-v1). Le statut est Running, ce qui indique que le sidecar a été injecté avec succès.
-
Ajoutez un libellé au pod pour désactiver l'injection automatique.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Sur la page Deployments, dans le namespace test1, recherchez l'application
detailset cliquez sur More > View YAML dans la colonne Actions.-
Dans la boîte de dialogue Edit, modifiez la configuration YAML et cliquez sur Update.
-
Pour les versions ASM 1.12.4 et ultérieures : dans le paramètre labels, ajoutez un libellé avec la clé
sidecar.istio.io/injectet la valeur"false", spécifié sous la formesidecar.istio.io/inject: 'false'.spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: details version: v1 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: sidecar.istio.io/inject: "false" app: details version: v1 Pour les versions ASM antérieures à 1.12.4 : dans le paramètre annotations, ajoutez une annotation avec la clé
sidecar.istio.io/injectet la valeur"false", soitsidecar.istio.io/inject: "false".
-
-
Vérifiez que l'injection automatique est désactivée pour le pod du service
detailsalors qu'elle reste activée pour le namespacetest1.Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
En haut de la page Deployments, définissez le Namespace sur test1 et cliquez sur le nom de l'application
details.Dans l'onglet Pods, vous pouvez voir que le pod
details-v1est à l'état Running et ne contient que l'imagedocker.io/istio/examples-bookinfo-details-v1:1.16.2. Cela confirme que le sidecar Istio n'a pas été injecté dans ce pod.
Exemple 2 : Configurer l'injection par pod
Vous pouvez définir une politique d'injection pour un pod individuel plutôt que pour un namespace entier.
-
Configurez la politique d'injection automatique.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
-
Sur la page Injection strategy configuration management, configurez les paramètres dans la section Injection strategy configuration management et cliquez sur Update Settings en bas de la page.
La configuration suivante injecte automatiquement un sidecar dans les pods possédant le libellé sidecar.istio.io/inject: "true" dans n'importe quel namespace, à l'exception des pods situés dans des namespaces portant le libellé istio-injection: disabled.
Paramètre
Description
The labels of the pod's namespace must meet the conditions.
Sélectionnez Not include istio-injection: disabled.
The pod's own labels/annotations must meet the conditions.
Sélectionnez Include sidecar.istio.io/inject: "true" or Selected by AlwaysInjectSelector.
Dans le cluster ACK, créez un namespace nommé test2 sans aucun libellé. Pour plus d'informations, consultez Gérer les namespaces et les quotas.
Dans le namespace
test2du cluster ACK, créez l'applicationreviews. Pour plus d'informations, consultez Déployer une application dans un cluster associé à une instance ASM.-
Ajoutez un libellé au pod pour activer l'injection automatique.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
En haut de la page Deployments, définissez le Namespace sur test2. Dans la ligne du service
reviews, cliquez sur More > View YAML dans la colonne Actions.-
Dans la boîte de dialogue Edit YAML, sous le paramètre labels, ajoutez le libellé
sidecar.istio.io/inject: "true", puis cliquez sur Update.RemarquePour configurer l'injection automatique de pod à l'aide de libellés, la version de Service Mesh ASM doit être 1.12.4 ou ultérieure. Pour plus d'informations sur la mise à niveau d'une instance, consultez Mettre à niveau une instance ASM.
spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: reviews version: v1 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: reviews sidecar.istio.io/inject: 'true' version: v1
-
Vérifiez que la politique d'injection automatique pour le pod a été configurée avec succès.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
En haut de la page Deployments, définissez le Namespace sur test2 et cliquez sur le nom de l'application
reviews.Dans l'onglet Pods, la liste des images du pod
reviews-v1contient à la fois l'image du proxy sidecar Istio (proxyv2) et l'image du conteneur d'application (examples-bookinfo-reviews-v1). Le statut est Running, ce qui indique que le sidecar a été injecté avec succès.
Documents connexes
Les politiques d'injection s'appliquent uniquement aux pods nouvellement créés. Redémarrez les pods en cours d'exécution pour que la politique prenne effet. Pour plus d'informations, consultez Redémarrer un pod.
Si vos applications compatibles Istio utilisent toujours une ancienne version du proxy sidecar après une mise à niveau du plan de contrôle, consultez Mettre à niveau les proxies sidecar pour les mettre à jour.
Vous pouvez configurer la consommation de ressources, la politique d'interception du trafic, le proxy DNS et le cycle de vie d'un proxy sidecar à différents niveaux, tels que global, namespace, charge de travail et pod. Pour plus d'informations, consultez Configurer un proxy sidecar.