Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Configure sidecar proxies

Dernière mise à jour :Aug 27, 2026

L'injection de proxys sidecar dans les conteneurs d'application d'un cluster améliore la sécurité réseau, la fiabilité et l'observabilité des appels de service. Vous pouvez configurer de manière flexible les paramètres du proxy sidecar, tels que les ressources, les cycles de vie, les politiques d'interception du trafic et les capacités d'observabilité, en fonction de vos besoins métier. Cette rubrique explique comment configurer les proxys sidecar et décrit les paramètres associés.

Prérequis

Niveaux de configuration du proxy sidecar

Les différents niveaux de configuration du proxy sidecar correspondent à des étendues d'application et des priorités distinctes. Par ordre de priorité croissante, les niveaux de configuration sont : global, namespace, workload et Pod scope.

Vous pouvez configurer le même proxy sidecar à différents niveaux selon vos besoins métier. ASM détermine les paramètres qui s'appliquent finalement lors de l'injection d'un proxy sidecar en se basant sur la priorité de chaque niveau de configuration. Par exemple, si vous configurez le même proxy sidecar au niveau du namespace et au niveau global, et que la configuration au niveau du namespace s'applique au namespace par défaut, le proxy sidecar injecté lors du déploiement d'une nouvelle charge de travail dans ce namespace utilisera les paramètres définis au niveau du namespace, car ce niveau a une priorité plus élevée que le niveau global.

Niveau de configuration du proxy sidecar

Description

Global

La configuration du proxy sidecar s'applique globalement. Elle est utilisée pour tous les Pods lors de l'injection des proxys sidecar.

Namespace

La configuration du proxy sidecar s'applique à un namespace spécifique. Elle n'est utilisée que pour les Pods de ce namespace lors de l'injection des proxys sidecar. Pour configurer un proxy sidecar à ce niveau, vous devez sélectionner un namespace.

Workload

La configuration du proxy sidecar s'applique à des charges de travail spécifiques. Elle n'est utilisée que pour les charges de travail sélectionnées par le sélecteur d'étiquettes spécifié lors de l'injection des proxys sidecar. Pour configurer un proxy sidecar à ce niveau, vous devez spécifier un sélecteur d'étiquettes de charge de travail afin de déterminer les charges de travail concernées.

Pod scope

Les configurations de proxy sidecar à ce niveau ne peuvent pas être configurées dans la console ASM. Vous pouvez les configurer en ajoutant des annotations aux Pods. Pour plus d'informations, consultez Configurer le proxy Sidecar à l'aide d'annotations.

Procédure

Les sections suivantes décrivent comment configurer les proxys sidecar à différents niveaux. Pour qu'une nouvelle configuration de proxy sidecar prenne effet sur une charge de travail, vous devez redéployer les Pods. Pour plus d'informations, consultez la section Redéployer la charge de travail.

Niveau global

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet global, configurez les paramètres du sidecar selon vos besoins, puis cliquez sur Update Settings.

    Pour plus d'informations sur les paramètres du proxy sidecar, consultez la section Paramètres du proxy sidecar.

  4. Vérifiez si la configuration du proxy sidecar a pris effet.

    1. Dans le volet de navigation de gauche, choisissez Instance Information > Basic Information.

    2. Dans la section Basic Information, vérifiez le Status du maillage.

      Si le Status est Running, la configuration du proxy sidecar au niveau global a pris effet.

Niveau namespace

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet Namespace, sélectionnez le Namespace dans lequel la configuration doit s'appliquer, cliquez sur la configuration sidecar cible, sélectionnez et configurez les paramètres requis, puis cliquez sur Update Settings.

    Étant donné que le niveau namespace n'est pas le niveau de configuration du proxy sidecar le plus bas, aucun paramètre du proxy sidecar n'a de valeur par défaut. Par défaut, les paramètres utilisent la configuration de niveau global. Après avoir cliqué sur Update Settings, la configuration du proxy sidecar au niveau du namespace prend effet immédiatement. Pour plus d'informations sur les paramètres du proxy sidecar, consultez la section Paramètres du proxy sidecar.

Niveau workload

Dans le même namespace, vous pouvez créer plusieurs configurations de proxy sidecar au niveau de la charge de travail qui s'appliquent à différentes charges de travail.

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet workload, puis cliquez sur Create.

  4. Sur l'onglet workload, sélectionnez le Namespace dans lequel la configuration doit s'appliquer, spécifiez le Name de la configuration du proxy sidecar au niveau de la charge de travail, créez un sélecteur d'étiquettes correspondant aux étiquettes de la charge de travail dans Match Label, cliquez sur la configuration sidecar cible, sélectionnez et configurez les paramètres requis, puis cliquez sur Create.

    Étant donné que le niveau workload n'est pas le niveau de configuration du proxy sidecar le plus bas, aucun paramètre du proxy sidecar n'a de valeur par défaut. Par défaut, les paramètres utilisent la configuration de niveau global. Après avoir cliqué sur Create, la configuration du proxy sidecar au niveau de la charge de travail est créée immédiatement. Pour plus d'informations sur les paramètres du proxy sidecar, consultez la section Paramètres du proxy sidecar.

Une fois la configuration créée, vous pouvez également la mettre à jour ou la supprimer.

  • Mettre à jour une configuration de proxy sidecar au niveau du workload : dans l'onglet workload, repérez la configuration de proxy sidecar cible et cliquez sur Update dans la colonne Actions. Modifiez le paramètre Match Label ainsi que la configuration du proxy sidecar selon vos besoins, puis cliquez sur Update.

  • Supprimer une configuration de proxy sidecar au niveau du workload : dans l'onglet workload, repérez la configuration de proxy sidecar cible et cliquez sur Delete dans la colonne Actions. Ensuite, dans la boîte de dialogue Confirm, cliquez sur OK.

Pod scope level

Pour appliquer une configuration de proxy sidecar au niveau du Pod, vous devez configurer des annotations spécifiques pour le Pod. Pour plus d'informations, reportez-vous à la rubrique Configurer un proxy sidecar à l'aide d'annotations.

(Facultatif) Redéployer le workload

La configuration d'un Pod déjà déployé ne peut pas être modifiée ; par conséquent, votre configuration de proxy sidecar ne prend pas effet immédiatement. Après avoir configuré un proxy sidecar, vous devez donc redéployer les Pods. Une fois le redéploiement effectué, les proxies sidecar injectés dans les Pods utiliseront la nouvelle configuration.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

  3. Sur la page Deployments, effectuez l'une des opérations suivantes pour redéployer les workloads.

    Scénario

    Action

    Un seul workload

    Dans la colonne Actions, choisissez More > Redeploy pour le workload cible. Ensuite, dans la boîte de dialogue Redeploy , cliquez sur OK.

    Plusieurs workloads

    Dans la colonne Name, sélectionnez plusieurs workloads cibles et cliquez sur Batch Redeploy en bas de la page. Ensuite, dans la boîte de dialogue Confirm, cliquez sur OK.

Versions minimales requises pour les paramètres du proxy sidecar

Les fonctionnalités prises en charge varient selon les versions d'ASM. En général, les proxies sidecar des versions ASM plus récentes offrent davantage de fonctionnalités et de paramètres que les versions antérieures. Si vous ne trouvez pas un paramètre de proxy sidecar, consultez le tableau suivant pour vérifier si une mise à niveau de la version ASM est nécessaire. Pour plus d'informations sur la mise à niveau d'une instance ASM, reportez-vous à la rubrique Mettre à niveau une instance ASM.

Dans la colonne Parameter du tableau ci-dessous, vous pouvez cliquer sur un lien pour afficher la description et un exemple de configuration du paramètre.

Important

Si votre instance ASM exécute la version 1.22 ou ultérieure et que votre cluster de plan de données exécute la version 1.30 ou ultérieure, le proxy sidecar est déployé en tant que conteneur sidecar natif. Dans ce cas, le cluster Kubernetes gère directement le cycle de vie du conteneur de proxy sidecar et remplace tous les paramètres de proxy sidecar liés à la gestion du cycle de vie.

Type

Paramètre

Niveau global

Niveau namespace

Niveau workload

Paramètres de ressources

Paramètres de ressources pour les proxies Istio injectés

Toutes les versions

1.10.5.34

1.13.4.20

Configurer les ressources sidecar par pourcentage

1.24.6.83

Paramètres de ressources pour le conteneur d'initialisation istio-init

1.9.7.93

1.10.5.34

1.13.4.20

Ressources dynamiques de survente ACK pour les sidecars

1.16.3.47

1.16.3.47

1.16.3.47

Concurrence Istio-Proxy

1.15.3.104

1.12.4.19

1.13.4.20

Activer ou désactiver le proxy sidecar par port ou adresse

Plages d'adresses pour l'interception du trafic sortant

Toutes les versions

1.10.5.34

1.13.4.20

Plages d'adresses exclues de l'interception du trafic sortant

Toutes les versions

1.10.5.34

1.13.4.20

Ports qui acheminent le trafic entrant via le proxy sidecar

1.15.3.104

1.10.5.34

1.13.4.20

Ports qui acheminent le trafic sortant via le proxy sidecar

1.15.3.104

1.10.5.34

1.13.4.20

Ports qui contournent le proxy sidecar pour le trafic entrant

Toutes les versions

1.10.5.34

1.13.4.20

Ports qui contournent le proxy sidecar pour le trafic sortant

Toutes les versions

1.10.5.34

1.13.4.20

Fonctionnalité de proxy DNS

Activer la fonctionnalité de proxy DNS

1.8.3.17

1.10.5.34

1.13.4.20

Gestion des variables d'environnement du proxy sidecar

Arrêt gracieux des proxies sidecar (EXIT_ON_ZERO_ACTIVE_CONNECTIONS)

1.15.3.104

1.15.3.104

1.15.3.104

Gestion du cycle de vie

Démarrage gracieux des proxies sidecar (HoldApplicationUntilProxyStarts)

1.15.3.104

1.12.4.58

1.13.4.20

Durée de vidange lors de l'arrêt du proxy sidecar

1.9.7.93

1.10.5.34

1.13.4.20

Cycle de vie du proxy sidecar

1.9.7.93

1.10.5.34

1.13.4.20

Politique d'accès pour les services externes

Politique d'accès pour les services externes : OutboundTrafficPolicy

Toutes les versions

1.10.5.34

1.13.4.20

Politique d'interception du trafic entrant du sidecar

Politique d'interception du trafic entrant du sidecar

1.15.3.25

1.15.3.25

1.15.3.25

Surveillance et statistiques

Niveau de journalisation

1.15.3.104

1.12.4.58

1.13.4.20

proxyStatsMatcher

1.15.3.104

1.12.4.58

1.13.4.20

Paramètres d'exécution Envoy

Limite de connexions descendantes

1.21.6.95

1.21.6.95

1.21.6.95

Paramètres du proxy sidecar

Vous pouvez configurer l'utilisation des ressources, les politiques d'interception du trafic, le proxy DNS et le cycle de vie des proxies sidecar. Les sections suivantes décrivent les paramètres du proxy sidecar et fournissent des exemples de configuration.

Paramètres de ressource pour les proxies Istio injectés

Développer pour afficher la description et l'exemple de configuration des paramètres de ressource pour les proxies Istio injectés

Description des paramètres

Ce paramètre spécifie les ressources CPU et mémoire minimales requises par le conteneur du proxy sidecar lors de l'exécution, ainsi que les ressources CPU et mémoire maximales que le conteneur peut demander.

Paramètre

Description

Limits on Resources

Les ressources CPU et mémoire maximales que le conteneur du proxy sidecar peut demander. Les ressources CPU sont mesurées en cœurs et les ressources mémoire en MiB.

Required Resources

Les ressources CPU et mémoire minimales requises par le conteneur du proxy sidecar lors de l'exécution. Les ressources CPU sont mesurées en cœurs et les ressources mémoire en MiB.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Resource Settings.

  2. (Facultatif) Dans la section Resource Settings, sélectionnez Configure Resources for Injected Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Pour Limits on Resources, définissez CPU sur 2 cœurs et Memory sur 1025 MiB. Pour Required Resources, définissez CPU sur 0,1 cœur et Memory sur 128 MiB. Cliquez ensuite sur Update Settings en bas de la page.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Consultez les ressources du proxy Istio que vous avez configurées.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
            - proxy
    ...
          name: istio-proxy
    ...
          resources:
            limits:
              cpu: '2'
              memory: 1025Mi
            requests:
              cpu: 100m
              memory: 128Mi
    ...

    Le conteneur istio-proxy est le conteneur du proxy sidecar. Si le champ resources du conteneur nommé istio-proxy dans le Pod est défini sur les valeurs de ressources cibles, la configuration Configure Resources for Injected Sidecar Proxy a pris effet.

Configurer les ressources sidecar par pourcentage

Développer pour afficher la description et l'exemple de configuration de la configuration des ressources sidecar par pourcentage

Description des paramètres

Ce paramètre calcule automatiquement les ressources sidecar en fonction des conteneurs d'application. L'activation de ce paramètre remplace les Paramètres de ressource pour les proxies Istio injectés. Cette fonctionnalité alloue des ressources aux sidecars en fonction de la configuration de ressources maximale des conteneurs d'application, ce qui permet d'ajuster dynamiquement les ressources sidecar pour différents Pods. Les stratégies de calcul suivantes sont prises en charge :

  • Ressources maximales du conteneur : le système parcourt tous les conteneurs du Pod et utilise la valeur de ressource la plus élevée comme base de calcul.

  • Nom de conteneur spécifié : le système utilise les ressources du conteneur portant le nom spécifié dans le Pod comme base de calcul. Pour utiliser cette stratégie, vous devez spécifier un conteneur comme base de calcul. Si le conteneur spécifié n'est pas trouvé dans le Pod, les ressources sidecar configurées dans Paramètres de ressource pour les proxies Istio injectés sont utilisées. De plus, si le Pod contient l'annotation scaled-resource.inject.istio.alibabacloud.com/container-ref, le conteneur défini dans l'annotation est prioritaire comme base de calcul.

Important

Quelle que soit la stratégie que vous sélectionnez :

  • Si le conteneur utilisé comme base de calcul ne possède pas de limits configuré, le système considère que les ressources sidecar sont illimitées et ne configure pas de limits pour le sidecar.

  • Si le conteneur utilisé comme base de calcul ne possède pas de requests configuré, le système alloue les ressources minimales viables au sidecar pour garantir son bon fonctionnement. Dans ce cas, la ressource CPU dans requests n'est pas inférieure à 100m et la ressource mémoire n'est pas inférieure à 128Mi.

  • Ressources minimales requises par un sidecar : la ressource CPU dans requests et limits ne peut pas être inférieure à 100m et la ressource mémoire ne peut pas être inférieure à 128Mi. Si les ressources calculées sont inférieures aux ressources minimales requises par le sidecar, les ressources sidecar sont définies sur les valeurs minimales.

Exemple de configuration

Les exemples suivants montrent les effets réels de différents pourcentages de ressources dans différents scénarios. La configuration du conteneur d'exemple est la suivante :

Configuration d'application normale

resources:
  requests:
    cpu: 300m
    memory: 512Mi
  limits:
    cpu: 500m
    memory: 1Gi

Aucune requests configurée

resources:
  limits:
    cpu: 500m
    memory: 1Gi

Aucune limits configurée

resources:
  requests:
    cpu: 300m
    memory: 512Mi
  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Resource Settings.

  2. Dans la section Resource Settings, sélectionnez Configure sidecar resources by ratio.

  3. Configurez Proportion of Resources, sélectionnez la Computing Policy (facultatif), puis cliquez sur Update Settings.

    Sélectionnez la stratégie de calcul Maximum Resource Capacity ou Specify a container name. selon vos besoins.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Consultez les ressources du proxy Istio que vous avez configurées.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    Configuration d'application normale

    Configuration normale

    Si le pourcentage de ressources est défini sur 50, ce qui signifie que le sidecar obtient 50 % des ressources configurées pour le conteneur d'application, l'allocation finale des ressources sidecar est la suivante :

    ...
    resources:
      requests:
        cpu: 150m
        memory: 256Mi
      limits:
        cpu: 250m
        memory: 512Mi

    Configuration minimale

    Si le pourcentage de ressources est défini sur 20, ce qui signifie que le sidecar obtient 20 % des ressources configurées pour le conteneur d'application, l'allocation finale des ressources sidecar est la suivante :

    ...
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 100m
        memory: 204Mi

    Aucune requests configurée

    Si le pourcentage de ressources est défini sur 50, ce qui signifie que le sidecar obtient 50 % des ressources configurées pour le conteneur d'application, l'allocation finale des ressources sidecar est la suivante :

    ...
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 512Mi

    Aucune limits configurée

    Si le pourcentage de ressources est défini sur 50, ce qui signifie que le sidecar obtient 50 % des ressources configurées pour le conteneur d'application, l'allocation finale des ressources sidecar est la suivante :

    ...
    resources:
      requests:
        cpu: 150m
        memory: 256Mi

Paramètres de ressources pour le conteneur d'initialisation istio-init

Développer pour afficher la description et l'exemple de configuration des paramètres de ressources pour le conteneur d'initialisation istio-init

Description des paramètres

Ce paramètre spécifie les ressources minimales en CPU et en mémoire dont le conteneur istio-init a besoin lors de l'exécution, ainsi que les ressources maximales en CPU et en mémoire que le conteneur peut demander dans les Pods où des proxys sidecar sont injectés. Le conteneur istio-init est un conteneur d'initialisation qui s'exécute au démarrage d'un Pod disposant d'un proxy sidecar injecté. Il configure les règles de routage pour l'interception du trafic destinées au conteneur du proxy sidecar.

Paramètre

Description

Limits on Resources

Ressources maximales en CPU et en mémoire que le conteneur istio-init peut demander. Les ressources CPU sont mesurées en cœurs et les ressources mémoire en MiB.

Required Resources

Ressources minimales en CPU et en mémoire dont le conteneur istio-init a besoin lors de l'exécution. Les ressources CPU sont mesurées en cœurs et les ressources mémoire en MiB.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Resource Settings.

  2. (Facultatif) Dans la section Resource Settings, sélectionnez Configure Resources for istio-init Container.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Pour Limits on Resources, définissez CPU sur 1 cœur et Memory sur 512 MiB. Pour Required Resources, définissez CPU sur 0,1 cœur et Memory sur 128 MiB. Ensuite, cliquez sur Update Settings en bas de la page.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Consultez les ressources du conteneur d'initialisation istio-init que vous avez configurées.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
    ...
          name: istio-init
          resources:
            limits:
              cpu: '1'
              memory: 512Mi
            requests:
              cpu: 100m
              memory: 128Mi
    ...

    Si le champ resources du conteneur d'initialisation nommé istio-init dans le Pod est défini sur les valeurs de ressources cibles, la configuration Configure Resources for istio-init Container a pris effet.

Ressources ACK à survente dynamique pour les sidecars

Développer pour afficher la description et l'exemple de configuration des ressources ACK à survente dynamique pour les sidecars

Description des paramètres

Ce paramètre spécifie les ressources ACK à survente dynamique allouées au proxy Istio injecté et au conteneur d'initialisation istio-init. Pour plus d'informations sur les ressources à survente dynamique, consultez la rubrique Activer la surallocation dynamique des ressources.

Ce paramètre se configure de la même manière que les Paramètres de ressources pour les proxys Istio injectés et les Paramètres de ressources pour le conteneur d'initialisation istio-init. Après la configuration, si un Pod possède le libellé ACK de survente dynamique des ressources label koordinator.sh/qosClass, des ressources ACK à survente dynamique sont allouées au proxy Istio et au conteneur d'initialisation istio-init dans le Pod, au lieu des ressources CPU et mémoire Kubernetes standard.

Remarque

Lorsque vous configurez des ressources ACK à survente dynamique pour les sidecars, les ressources CPU sont mesurées en millicœurs.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, cliquez sur Resource Settings, sélectionnez Set ACK Resources That Can Be Dynamically Overcommitted for Sidecar Proxy, configurez les paramètres associés, puis cliquez sur Update Settings en bas de la page.

    Paramètre

    Sous-paramètre

    Description

    Configure Resources for Injected Sidecar Proxy (ACK Dynamically Overcommitted Resources)

    Limits on Resources

    Définissez CPU sur 2000 millicœurs et Memory sur 2048 MiB.

    Required Resources

    Définissez CPU sur 200 millicœurs et Memory sur 256 MiB.

    istio-init container resource (ACK dynamic oversold resource)

    Limits on Resources

    Définissez CPU sur 1000 millicœurs et Memory sur 1024 MiB.

    Required Resources

    Définissez CPU sur 100 millicœurs et Memory sur 128 MiB.

  2. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  3. Exécutez la commande suivante pour consulter les ressources du conteneur d'initialisation istio-init que vous avez configurées.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    metadata:
    ...
      labels:
        koordinator.sh/qosClass: BE
    spec:
      containers:
        - args:
    ...
          name: istio-proxy
    ...
          resources:
            limits:
              kubernetes.io/batch-cpu: 2k
              kubernetes.io/batch-memory: 2Gi
            requests:
              kubernetes.io/batch-cpu: '200'
              kubernetes.io/batch-memory: 256Mi
    ...
      initContainers:
        - args:
    ...
          name: istio-init
          resources:
            limits:
              kubernetes.io/batch-cpu: 1k
              kubernetes.io/batch-memory: 1Gi
            requests:
              kubernetes.io/batch-cpu: '100'
              kubernetes.io/batch-memory: 128Mi
    ...

    Le conteneur istio-proxy (conteneur du proxy Istio) et le conteneur d'initialisation istio-init dans le Pod contiennent tous deux le champ resources défini sur les valeurs de ressources cibles. Cela indique que la configuration Set ACK Resources That Can Be Dynamically Overcommitted for Sidecar Proxy a pris effet.

Concurrence Istio-Proxy

Développez pour afficher la description et l'exemple de configuration de la concurrence Istio-Proxy

Description du paramètre

Ce paramètre spécifie le nombre de threads de travail du conteneur proxy sidecar. Vous devez indiquer un entier non négatif pour définir ce nombre. Si vous définissez ce paramètre sur 0, le nombre de threads de travail est déterminé automatiquement en fonction des ressources CPU demandées ou de la limite de ressources CPU configurée pour le proxy sidecar. La limite de ressources est prioritaire sur les ressources demandées.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Resource Settings.

  2. (Facultatif) Dans la section Resource Settings, sélectionnez Number of Sidecar Proxy Threads.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Number of Sidecar Proxy Threads sur 3, puis cliquez sur Update Settings en bas de la page.

    Cette configuration indique que le conteneur proxy sidecar exécute trois threads de travail au moment de l'exécution.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter la concurrence Istio-Proxy que vous avez configurée.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
        - args:
            - proxy
            - sidecar
            - '--domain'
            - $(POD_NAMESPACE).svc.cluster.local
            - '--proxyLogLevel=warning'
            - '--proxyComponentLogLevel=misc:error'
            - '--log_output_level=default:info'
            - '--concurrency'
            - '3'
    ...
          name: istio-proxy
    ...

    Le paramètre concurrency du conteneur istio-proxy est défini sur 3. Cela indique que la configuration Number of Sidecar Proxy Threads a pris effet.

Plages d'adresses pour l'interception du trafic sortant

Développez pour afficher la description et l'exemple de configuration des plages d'adresses pour l'interception du trafic sortant

Description du paramètre

Vous devez spécifier une liste de plages d'adresses IP séparées par des virgules (,). Chaque plage d'adresses IP doit être au format CIDR. Lorsqu'une charge de travail avec un proxy sidecar injecté accède à d'autres services, seul le trafic dont les adresses IP de destination se trouvent dans les plages configurées est intercepté par le conteneur proxy sidecar. Les autres requêtes sont envoyées directement vers leurs destinations sans passer par le proxy sidecar. Par défaut, ce paramètre est défini sur *, ce qui signifie que le conteneur proxy sidecar intercepte tout le trafic sortant de la charge de travail.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Facultatif) Dans la section Enable/Disable Sidecar Proxy by Ports or IP Addresses, sélectionnez Addresses to Which External Access Is Redirected to Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Addresses to Which External Access Is Redirected to Sidecar Proxy sur 192.168.0.0/16,10.1.0.0/24, puis cliquez sur Update Settings en bas de la page.

    Cette configuration indique que le conteneur proxy sidecar intercepte les requêtes dont les adresses IP de destination se trouvent dans les deux blocs CIDR 192.168.0.0/16 et 10.1.0.0/24.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter les plages d'adresses configurées pour l'interception du trafic sortant.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '192.168.0.0/16,10.1.0.0/24'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...

    Les paramètres d'exécution du conteneur istio-init incluent -i 192.168.0.0/16,10.1.0.0/24. Cela indique que la configuration Addresses to Which External Access Is Redirected to Sidecar Proxy a pris effet.

Plages d'adresses exclues de l'interception du trafic sortant

Développez pour afficher la description et l'exemple de configuration des plages d'adresses exclues de l'interception du trafic sortant

Description du paramètre

Vous devez spécifier une liste de plages d'adresses IP séparées par des virgules (,). Chaque plage d'adresses IP doit être au format CIDR. Lorsqu'une charge de travail avec un proxy sidecar injecté accède à d'autres services, le conteneur proxy sidecar intercepte le trafic sortant. Si l'adresse IP de destination d'une requête se trouve dans un bloc CIDR configuré pour ce paramètre, la requête n'est pas interceptée par le conteneur proxy sidecar.

Important

Si les plages d'adresses exclues de l'interception du trafic sortant contiennent l'adresse spécifiée par Addresses to Which External Access Is Redirected to Sidecar Proxy, les requêtes vers cette adresse ne sont pas interceptées par le proxy sidecar. Pour plus d'informations, consultez la rubrique Plages d'adresses pour l'interception du trafic sortant.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Facultatif) Dans la section Enable/Disable Sidecar Proxy by Ports or IP Addresses, sélectionnez Addresses to Which External Access Is Not Redirected to Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Addresses to Which External Access Is Not Redirected to Sidecar Proxy sur 10.1.0.0/24, puis cliquez sur Update Settings en bas de la page.

    Cette configuration indique que le conteneur proxy sidecar n'intercepte pas les requêtes dont les adresses IP de destination se trouvent dans le bloc CIDR 10.1.0.0/24.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter les plages d'adresses exclues de l'interception du trafic sortant que vous avez configurées.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - '192.168.0.1/32,10.1.0.0/24'
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...

    Les paramètres d'exécution du conteneur istio-init incluent -x 192.168.0.1/32,10.1.0.0/24. 192.168.0.1/32 correspond au bloc CIDR de l'adresse hôte par défaut. 10.1.0.0/24 correspond à la plage d'adresses IP configurée pour le proxy sidecar. Cela indique que la configuration Addresses to Which External Access Is Not Redirected to Sidecar Proxy a pris effet.

Ports acheminant le trafic entrant via le proxy sidecar

Développer pour afficher la description et l'exemple de configuration des ports acheminant le trafic entrant via le proxy sidecar

Description du paramètre

Spécifiez une liste de ports séparés par des virgules (,). Le trafic destiné aux ports figurant dans cette liste est intercepté par le conteneur du proxy sidecar. Par défaut, ce paramètre est défini sur *, ce qui signifie que le conteneur du proxy sidecar intercepte tout le trafic entrant de la charge de travail.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Facultatif) Dans la section Enable/Disable Sidecar Proxy by Ports or IP Addresses, sélectionnez Ports on Which Inbound Traffic Redirected to Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Ports on Which Inbound Traffic Redirected to Sidecar Proxy sur 80 443, puis cliquez sur Update Settings.

    Cette configuration indique que le conteneur du proxy sidecar n'intercepte que les requêtes envoyées aux ports 80 et 443 de la charge de travail.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter les ports d'interception du trafic entrant que vous avez configurés.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '80,443'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...
                                

    Les paramètres d'exécution du conteneur istio-init incluent -b 80,443, ce qui correspond aux ports entrants configurés pour le proxy sidecar. Cela confirme que la configuration Ports on Which Inbound Traffic Redirected to Sidecar Proxy a bien été prise en compte.

Ports acheminant le trafic sortant via le proxy sidecar

Développer pour afficher la description et l'exemple de configuration des ports acheminant le trafic sortant via le proxy sidecar

Description du paramètre

Spécifiez une liste de ports séparés par des virgules (,), représentant les ports de service de destination de tout le trafic sortant. Les requêtes dont les ports de service de destination figurent dans cette liste sont interceptées par le conteneur du proxy sidecar.

Important

Si ce paramètre est configuré conjointement avec Addresses to Which External Access Is Not Redirected to Sidecar Proxy ou Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy, et que l'adresse IP de destination d'une requête se trouve dans un bloc CIDR non intercepté ou que le port de service de destination de la requête figure dans la liste des ports non interceptés, la requête n'est pas interceptée par le proxy sidecar, même si le port de destination figure dans la liste de ce paramètre. Pour plus d'informations, consultez les sections Plages d'adresses exclues de l'interception du trafic sortant et Ports contournant le proxy sidecar pour le trafic sortant.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Facultatif) Dans la section Enable/Disable Sidecar Proxy by Ports or IP Addresses, sélectionnez Ports on Which Outbound Traffic Redirected to Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Ports on Which Outbound Traffic Redirected to Sidecar Proxy sur 80 443, puis cliquez sur Update Settings en bas de la page.

    Cette configuration indique que le conteneur du proxy sidecar intercepte les requêtes envoyées aux services sur les ports 80 et 443.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter les ports d'interception du trafic sortant que vous avez configurés.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
            - '-q'
            - '80,443'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...
                                

    Les paramètres d'exécution du conteneur istio-init incluent -q 80,443, ce qui correspond aux ports sortants configurés pour le proxy sidecar. Cela confirme que la configuration Ports on Which Outbound Traffic Redirected to Sidecar Proxy a bien été prise en compte.

Ports contournant le proxy sidecar pour le trafic entrant

Développer pour afficher la description et l'exemple de configuration des ports contournant le proxy sidecar pour le trafic entrant

Description du paramètre

Spécifiez une liste de ports séparés par des virgules (,). Le trafic destiné aux ports figurant dans cette liste n'est pas intercepté par le conteneur du proxy sidecar.

Important

Ce paramètre prend effet uniquement lorsque Ports on Which Inbound Traffic Redirected to Sidecar Proxy est défini sur *, ce qui signifie que le conteneur du proxy sidecar intercepte par défaut tout le trafic entrant.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Facultatif) Dans la section Enable/Disable Sidecar Proxy by Ports or IP Addresses, sélectionnez Ports on Which Inbound Traffic Not Redirected to Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Ports on Which Inbound Traffic Not Redirected to Sidecar Proxy sur 8000, puis cliquez sur Update Settings en bas de la page.

    Cette configuration indique que le conteneur du proxy sidecar n'intercepte plus les requêtes envoyées au port 8000 de la charge de travail.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter les ports de contournement du trafic entrant que vous avez configurés.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020,8000'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...
                                

    Les paramètres d'exécution du conteneur istio-init incluent -d 15090,15021,15081,9191,8000. Les ports 15090,15021,15081,9191 correspondent aux ports applicatifs du proxy sidecar et sont exclus de l'interception par défaut. Le port 8000 correspond aux ports entrants configurés pour le proxy sidecar. Cela confirme que la configuration Ports on Which Inbound Traffic Not Redirected to Sidecar Proxy a bien été prise en compte.

Ports contournant le proxy sidecar pour le trafic sortant

Développer pour afficher la description et l'exemple de configuration des ports contournant le proxy sidecar pour le trafic sortant

Description du paramètre

Vous devez spécifier une liste de ports séparés par des virgules (,), qui représente les ports de service de destination de tout le trafic sortant. Les requêtes dont les ports de service de destination figurent dans cette liste ne sont pas interceptées par le conteneur du proxy sidecar, que l'adresse IP de destination se trouve ou non dans les plages d'adresses sortantes interceptées ou que le port de destination figure ou non dans la liste des ports sortants interceptés.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Facultatif) Dans la section Enable/Disable Sidecar Proxy by Ports or IP Addresses, sélectionnez Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy.

    Cette étape est requise sur les onglets Namespace et workload. Vous pouvez ignorer cette étape sur l'onglet global.

  3. Définissez Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy sur 8000, puis cliquez sur Update Configurations en bas de la page.

    Cette configuration indique que le conteneur du proxy sidecar n'intercepte plus les requêtes envoyées aux services sur le port 8000.

  4. Redéployez le workload pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour afficher les ports de contournement du trafic sortant que vous avez configurés.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
            - '-o'
            - '8000'
    ...
          name: istio-init
    ...
                                

    Les paramètres d'exécution du conteneur istio-init incluent -o 8000, ce qui correspond aux ports sortants configurés pour le proxy sidecar. Cela indique que la configuration Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy a pris effet.

Activer la fonctionnalité de proxy DNS

Développer pour afficher la description et l'exemple de configuration de la fonctionnalité de proxy DNS

Description du paramètre

Vous pouvez activer ou désactiver la fonctionnalité de proxy DNS pour les conteneurs de proxy sidecar. Une fois la fonctionnalité de proxy DNS activée, les conteneurs de proxy sidecar interceptent les requêtes DNS des workloads afin d'améliorer les performances et la disponibilité du Service Mesh. Toutes les requêtes provenant des workloads sont redirigées vers le conteneur du proxy sidecar. Étant donné que les conteneurs de proxy sidecar stockent localement les mappages entre les adresses IP et les noms de domaine locaux, ils peuvent renvoyer directement les réponses DNS aux workloads sans envoyer de requêtes aux services DNS distants. Si une requête DNS ne peut pas être traitée par le conteneur du proxy sidecar, le sidecar transfère directement la requête DNS. Pour plus d'informations, consultez la rubrique Utiliser le proxy DNS dans ASM.

Important

En raison de problèmes d'autorisations réseau, la fonctionnalité de proxy DNS ne peut pas être activée pour les conteneurs de proxy sidecar dans les clusters ACK avec ACK Serverless cluster ou les pods ECI.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur DNS Proxy.

  2. (Facultatif) Dans la section DNS Proxy, sélectionnez Enable DNS Proxy, activez l'interrupteur à droite, puis cliquez sur Update Settings.

    Cette étape est requise sur les onglets Namespace et workload. Vous pouvez ignorer cette étape sur l'onglet global. L'activation de l'interrupteur permet d'activer la fonctionnalité de proxy DNS pour le proxy sidecar.

  3. Redéployez le workload pour appliquer la configuration du proxy sidecar.

  4. Exécutez la commande suivante pour afficher la fonctionnalité de proxy DNS que vous avez configurée.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    spec:
      containers:
        - args:
            - proxy
            - sidecar
            - '--domain'
            - $(POD_NAMESPACE).svc.cluster.local
            - '--proxyLogLevel=warning'
            - '--proxyComponentLogLevel=misc:error'
            - '--log_output_level=default:info'
            - '--concurrency'
            - '3'
          env:
    ...
            - name: ISTIO_META_DNS_AUTO_ALLOCATE
              value: 'true'
            - name: ISTIO_META_DNS_CAPTURE
              value: 'true'
    ...
          name: istio-proxy
                                

    Les variables d'environnement ISTIO_META_DNS_AUTO_ALLOCATE et ISTIO_META_DNS_CAPTURE du conteneur istio-proxy sont définies sur true. Cela indique que la configuration DNS Proxy a pris effet.

Gestion des variables d'environnement du proxy sidecar

Développer pour afficher la description et l'exemple de configuration de la gestion des variables d'environnement du proxy sidecar

Description du paramètre

Ce paramètre spécifie des variables d'environnement supplémentaires ajoutées aux conteneurs de proxy sidecar. Vous pouvez configurer les deux types suivants de variables d'environnement de proxy sidecar.

Paramètre

Description

Sidecar Graceful Shutdown (EXIT_ON_ZERO_ACTIVE_CONNECTIONS)

Une fois ce paramètre activé, la variable d'environnement EXIT_ON_ZERO_ACTIVE_CONNECTIONS: "true" est ajoutée au conteneur du proxy sidecar. Cette variable d'environnement fonctionne comme suit :

Par défaut, lorsqu'un conteneur de proxy sidecar s'arrête, le processus pilot-agent dans le conteneur arrête l'écoute du trafic entrant par le proxy Envoy, attend une période déterminée par le paramètre de durée de vidage à l'arrêt du proxy sidecar, puis arrête le processus du proxy Envoy.

Lorsque EXIT_ON_ZERO_ACTIVE_CONNECTIONS est défini, à l'arrêt du conteneur du proxy sidecar, le processus pilot-agent dans le conteneur arrête d'abord l'écoute du trafic entrant par le proxy Envoy et attend 5 secondes par défaut. Après cette attente, le processus interroge le nombre de connexions actives du proxy Envoy et n'arrête le processus du proxy Envoy que lorsque le nombre de connexions actives atteint 0. La définition de EXIT_ON_ZERO_ACTIVE_CONNECTIONS améliore le cycle de vie d'arrêt des conteneurs de proxy sidecar dans les cas courants en réduisant à la fois le temps d'arrêt et le nombre de requêtes abandonnées pendant l'arrêt.

Important

Une fois ce paramètre configuré, Sidecar Proxy Drain Duration at Pod Termination n'a plus d'effet. Pour plus d'informations, consultez la rubrique Durée de vidage à l'arrêt du proxy sidecar.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Manage Environment Variables for Sidecar Proxy.

  2. (Facultatif) Dans la section Manage Environment Variables for Sidecar Proxy, sélectionnez Sidecar Graceful Shutdown (EXIT_ON_ZERO_ACTIVE_CONNECTIONS).

    Cette étape est requise sur les onglets Namespace et workload. Vous pouvez ignorer cette étape sur l'onglet global.

  3. Activez l'interrupteur à droite de Sidecar Graceful Shutdown (EXIT_ON_ZERO_ACTIVE_CONNECTIONS), puis cliquez sur Update Configurations.

  4. Redéployez le workload pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour afficher les variables d'environnement du proxy sidecar que vous avez configurées.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
          env:
            - name: EXIT_ON_ZERO_ACTIVE_CONNECTIONS
              value: 'true'
          name: istio-proxy
    ...

    La variable d'environnement EXIT_ON_ZERO_ACTIVE_CONNECTIONS est ajoutée aux variables d'environnement du sidecar dans le conteneur istio-proxy du Pod. Cela indique que la configuration Manage Environment Variables for Sidecar Proxy a bien été prise en compte.

Démarrage gracieux des proxys sidecar (HoldApplicationUntilProxyStarts)

Développer pour afficher la description et l'exemple de configuration de HoldApplicationUntilProxyStarts

Description du paramètre

HoldApplicationUntilProxyStarts est un paramètre de gestion du cycle de vie des proxys sidecar. Cette option est activée par défaut, ce qui signifie que pour un Pod dans lequel un proxy sidecar a été injecté, le conteneur du proxy sidecar doit démarrer avec succès avant les conteneurs d'application du Pod. Cela garantit qu'aucun trafic envoyé aux conteneurs d'application n'est perdu en raison du fait que le proxy sidecar n'a pas terminé son démarrage.

Si ce paramètre est désactivé, le conteneur du proxy sidecar et les conteneurs d'application du Pod démarrent simultanément. Lorsqu'un grand nombre de Pods sont déployés dans un cluster, les conteneurs de proxy sidecar peuvent démarrer lentement en raison de la charge élevée sur l'APIServer. Vous pouvez désactiver HoldApplicationUntilProxyStarts pour accélérer le déploiement.

Exemple de configuration

L'exemple suivant montre comment désactiver HoldApplicationUntilProxyStarts dans l'onglet global.

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet global, puis cliquez sur Lifecycle Management.

  2. Désactivez l'interrupteur situé à droite de l'option Sidecar Graceful Startup (HoldApplicationUntilProxyStarts), puis cliquez sur Update Settings.

    Cette configuration indique que la fonctionnalité HoldApplicationUntilProxyStarts est désactivée.

  3. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  4. Exécutez la commande suivante pour consulter le paramètre HoldApplicationUntilProxyStarts.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - command:
    ...
          name: sleep
    ...
          env:
            - name: PROXY_CONFIG
              value: >-
                {..."holdApplicationUntilProxyStarts":false,...}
    ...
          name: istio-proxy
    ...

    Une fois la fonctionnalité holdApplicationUntilProxyStarts désactivée, le conteneur istio-proxy n'est plus déclaré de force avant les conteneurs d'application, et le champ lifecycle par défaut n'est plus déclaré. Dans ce cas, Service Mesh ne garantit plus que le conteneur du proxy sidecar démarre avec succès avant les conteneurs d'application.

Durée de vidage lors de l'arrêt du proxy sidecar

Développer pour afficher la description et l'exemple de configuration de la durée de vidage lors de l'arrêt du proxy sidecar

Description du paramètre

La durée de vidage lors de l'arrêt du proxy sidecar est un paramètre de gestion du cycle de vie des proxys sidecar. Après l'injection d'un proxy sidecar dans un Pod, le trafic du Pod d'application est intercepté par le conteneur du proxy sidecar.

Lorsqu'un Pod commence à s'arrêter, le Service correspondant ne transfère plus le trafic vers ce Pod. Après avoir reçu le signal d'arrêt, le conteneur du proxy sidecar attend pendant une certaine période. Durant cette période, le conteneur cesse d'accepter le nouveau trafic entrant, mais continue de traiter le trafic entrant existant. Le trafic sortant n'est pas affecté et peut toujours être envoyé normalement. Cette période est appelée durée de vidage lors de l'arrêt du proxy sidecar. La durée de vidage par défaut des conteneurs de proxy sidecar est de 5s. Vous pouvez configurer une durée en s, par exemple 10s.

Si les appels d'interface fournis par le service en cours d'arrêt prennent beaucoup de temps et dépassent la durée de vidage du conteneur du proxy sidecar, les connexions entrantes et sortantes existantes sont interrompues même si elles n'ont pas été entièrement traitées, ce qui peut entraîner la perte de certaines requêtes. Dans ce cas, vous pouvez utiliser ce paramètre pour prolonger la durée de vidage lors de l'arrêt du proxy sidecar afin que le trafic entrant et sortant puisse être entièrement traité.

La durée de vidage lors de l'arrêt du proxy sidecar doit être spécifiée en secondes avec l'unité s, par exemple 10s.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Lifecycle Management.

  2. (Facultatif) Dans la section Lifecycle Management, sélectionnez Sidecar Proxy Drain Duration at Pod Termination.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Définissez Sidecar Proxy Drain Duration at Pod Termination sur 10s, puis cliquez sur Update Settings.

    Cette configuration indique que le proxy sidecar attend 10 secondes pour traiter les connexions existantes lors de l'arrêt.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter la durée de vidage lors de l'arrêt du proxy sidecar que vous avez configurée.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
          env:
            - name: TERMINATION_DRAIN_DURATION_SECONDS
              value: '10'
    ...
            - name: PROXY_CONFIG
              value: >-
                {..."terminationDrainDuration":"10s"}
    ...
          name: istio-proxy
    ...

    Le conteneur istio-proxy du Pod est configuré avec la variable d'environnement TERMINATION_DRAIN_DURATION_SECONDS définie sur 10, et la variable d'environnement PROXY_CONFIG enregistre terminationDrainDuration comme 10s. Cela indique que la configuration Sidecar Proxy Drain Duration at Pod Termination a bien été prise en compte.

Cycle de vie du proxy sidecar

Développer pour afficher la description et l'exemple de configuration du cycle de vie du proxy sidecar

Description du paramètre

Le paramètre de cycle de vie du proxy sidecar vous permet de personnaliser entièrement les hooks de cycle de vie des conteneurs des proxys sidecar. Pour ce paramètre, vous devez saisir un champ de hook de cycle de vie de conteneur (lifecycle) déclaré au format JSON. Ce champ remplace le champ de hook de cycle de vie par défaut du conteneur du proxy sidecar. Pour plus d'informations, consultez la documentation Hooks de cycle de vie des conteneurs.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Lifecycle Management.

  2. (Facultatif) Dans la section Lifecycle Management, sélectionnez Lifecycle of Sidecar Proxy.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. Sous Lifecycle of Sidecar Proxy, saisissez le contenu YAML suivant, puis cliquez sur Update Settings.

    Ce contenu YAML configure les paramètres de hook postStart et preStop.

    • postStart : attend le démarrage de pilot-agent après le démarrage du conteneur sidecar.

    • preStop : met en veille pendant 13 secondes avant l'arrêt du conteneur sidecar.

    {
      "postStart": {
        "exec": {
          "command": [
            "pilot-agent",
            "wait"
          ]
        }
      },
      "preStop": {
        "exec": {
          "command": [
            "/bin/sh",
            "-c",
            "sleep 13"
          ]
        }
      }
    }
  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour consulter le cycle de vie du proxy sidecar que vous avez configuré.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
    ...
            lifecycle:
            postStart:
              exec:
                command:
                - pilot-agent
                - wait
            preStop:
              exec:
                command:
                - /bin/sh
                - -c
                - sleep 13
          name: istio-proxy
    ...

    Le champ de hook du cycle de vie du conteneur (lifecycle) du conteneur istio-proxy dans le Pod est modifié pour correspondre à la configuration cible. Cela indique que la configuration Lifecycle of Sidecar Proxy a pris effet.

Politique d'accès aux services externes

Développer pour afficher la description et l'exemple de configuration de la politique d'accès aux services externes

Description du paramètre

Ce paramètre définit la politique d'accès des conteneurs proxy sidecar aux services externes. Les services externes sont des services situés en dehors du maillage qui ne sont pas enregistrés auprès de Service Mesh. Par défaut, tous les services présents dans les clusters Kubernetes gérés par Service Mesh sont considérés comme des services enregistrés. Vous pouvez enregistrer manuellement des services auprès de Service Mesh en déclarant des ressources ServiceEntry. Les services non enregistrés sont considérés comme des services externes.

Ce paramètre prend en charge les deux politiques suivantes :

  • ALLOW_ANY : il s'agit de la politique d'accès par défaut pour les services externes. Le proxy sidecar autorise l'accès aux services externes et transfère les requêtes vers ces services telles quelles.

  • REGISTRY_ONLY : le proxy sidecar refuse l'accès aux services externes et les charges de travail ne peuvent pas établir de connexions avec ces services.

Remarque

Ce paramètre constitue une configuration globale et ne peut être défini qu'au niveau global. Pour configurer la politique d'accès aux services externes au niveau du namespace ou de la charge de travail, connectez-vous à la console ASM et accédez à la page Traffic Management Center > Sidecar Traffic Configuration.

Exemple de configuration

  1. Dans l'onglet global de la page Configure the agent parameters of the injected Sidecar, cliquez sur Outbound Traffic Policy, sélectionnez REGISTRY_ONLY à droite de Outbound Traffic Policy, puis cliquez sur Update Settings.

    Cette configuration restreint l'accès des services du maillage aux services externes.

  2. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  3. Créez le fichier sleep.yaml avec le contenu suivant.

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: sleep
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sleep
      labels:
        app: sleep
        service: sleep
    spec:
      ports:
      - port: 80
        name: http
      selector:
        app: sleep
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sleep
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sleep
      template:
        metadata:
          labels:
            app: sleep
        spec:
          terminationGracePeriodSeconds: 0
          serviceAccountName: sleep
          containers:
          - name: sleep
            image: curlimages/curl
            command: ["/bin/sleep", "3650d"]
            imagePullPolicy: IfNotPresent
            volumeMounts:
            - mountPath: /etc/sleep/tls
              name: secret-volume
          volumes:
          - name: secret-volume
            secret:
              secretName: sleep-secret
              optional: true
    ---
  4. Exécutez la commande suivante pour déployer l'application sleep.

    kubectl apply -f sleep.yaml -n default
  5. Exécutez la commande suivante pour utiliser l'application sleep afin d'accéder à un service externe.

    kubectl exec -it {sleep-pod-name} -c sleep -- curl www.aliyun.com -v

    Sortie attendue :

    *   Trying *********...
    * Connected to www.aliyun.com (********) port 80 (#0)
    > GET / HTTP/1.1
    > Host: www.aliyun.com
    > User-Agent: curl/7.87.0-DEV
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 502 Bad Gateway
    < date: Mon,********* 03:25:00 GMT
    < server: envoy
    < content-length: 0
    <
    * Connection #0 to host www.aliyun.com left intact

    La réponse 502 indique que l'application sleep, dotée d'un proxy sidecar injecté, ne peut pas accéder au service externe www.aliyun.com. Cela confirme que la configuration Outbound Traffic Policy a pris effet.

Politique d'interception du trafic entrant du sidecar

Développer pour afficher la description et l'exemple de configuration de la politique d'interception du trafic entrant du sidecar

Description du paramètre

Ce paramètre définit la politique d'interception des proxies sidecar pour le trafic entrant. Par défaut, les conteneurs proxy sidecar utilisent la politique de redirection iptables REDIRECT pour intercepter le trafic entrant destiné aux charges de travail applicatives. Après interception par redirection, l'application ne voit que l'adresse IP du conteneur proxy sidecar comme adresse IP source des requêtes et ne peut pas voir l'adresse IP originale du client.

Si vous modifiez la politique d'interception du trafic entrant pour utiliser le mode proxy transparent (TPROXY), Service Mesh permet aux conteneurs proxy sidecar d'intercepter le trafic entrant via le mode proxy transparent iptables. Une fois ce paramètre configuré, l'application peut voir l'adresse IP originale du client. Pour plus d'informations, consultez la rubrique Obtenir l'adresse IP source du client dans Service Mesh.

Important

La politique de proxy transparent ne prend pas en charge les nœuds exécutant CentOS. Si les nœuds sur lesquels vos Pods s'exécutent utilisent CentOS, utilisez la politique REDIRECT.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar ciblé, puis cliquez sur Sidecar Traffic Interception Mode.

  2. (Facultatif) Dans la section Sidecar Traffic Interception Mode, sélectionnez Sidecar Traffic Interception Mode.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. À droite de Sidecar Traffic Interception Mode, sélectionnez TPROXY, puis cliquez sur Update Settings.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour afficher la politique d'interception du trafic entrant du sidecar que vous avez configurée.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Sortie attendue :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
            - name: PROXY_CONFIG
              value: >-
                {..."interceptionMode":"TPROXY",...}
            - name: ISTIO_META_POD_PORTS
              value: |-
                [
                ]
    ...
          name: istio-proxy
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - TPROXY
    ...
          name: istio-init
    ...

    Les variables d'environnement du sidecar du conteneur istio-proxy dans le Pod indiquent "interceptionMode":"TPROXY", et le conteneur istio-init exécute également la commande d'initialisation avec le paramètre TPROXY. Cela confirme que la configuration Sidecar Traffic Interception Mode a pris effet.

Niveau de journalisation

Développer pour afficher la description et l'exemple de configuration du niveau de journalisation

Description du paramètre

Ce paramètre définit le niveau de journalisation des conteneurs proxy sidecar. Par défaut, les proxies sidecar utilisent le niveau de journalisation info. Vous pouvez modifier le niveau de journalisation des proxies sidecar vers l'un des sept niveaux suivants : info, debug, trace, warning, error, critical et off, afin d'obtenir plus ou moins d'informations de journalisation provenant des proxies sidecar.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar ciblé, puis cliquez sur Monitoring Statistics.

  2. (Facultatif) Dans la section Monitoring Statistics, sélectionnez Log Level.

    Cette étape est requise dans les onglets Namespace et workload. Vous pouvez ignorer cette étape dans l'onglet global.

  3. À droite de Log Level, sélectionnez error, puis cliquez sur Update Settings.

    Cette configuration indique que le proxy sidecar génère des journaux au niveau error ; seuls les journaux de niveau error ou supérieur sont affichés.

  4. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  5. Exécutez la commande suivante pour afficher le niveau de journalisation du proxy sidecar que vous avez configuré.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
            - proxy
            - sidecar
            - '--domain'
            - $(POD_NAMESPACE).svc.cluster.local
            - '--proxyLogLevel=error'
    ...
          name: istio-proxy
    ...

    Les paramètres d'exécution du conteneur istio-proxy sont définis sur --proxyLogLevel=error. Cela confirme que la configuration du Log Level a bien été prise en compte.

proxyStatsMatcher

Développer pour afficher la description et l'exemple de configuration de proxyStatsMatcher

Description du paramètre

Ce paramètre définit les statistiques Envoy personnalisées rapportées par les proxies sidecar. Envoy constitue l'implémentation technique des proxies sidecar et peut collecter et rapporter une série de métriques. Toutefois, Service Mesh n'active par défaut la collecte et l'exposition que de certaines métriques afin de réduire la surcharge de performance sur les proxies sidecar. Utilisez ce paramètre pour spécifier les métriques supplémentaires que les proxies sidecar doivent collecter et rapporter, en utilisant la correspondance par préfixe, par suffixe ou par expression régulière.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Monitoring Statistics.

  2. Dans la section Monitoring Statistics, sélectionnez proxyStatsMatcher, choisissez Regular Expression Match, puis définissez la valeur sur .outlier_detection..

    Cette configuration ajoute la collecte des métriques de disjoncteur (circuit breaking) pour le proxy sidecar.

  3. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  4. Exécutez la commande suivante pour consulter les statistiques personnalisées du proxy sidecar que vous avez configuré.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Résultat attendu :

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
     ...
            - name: PROXY_CONFIG
              value: >-
                {..."proxyStatsMatcher":{"inclusionRegexps":[".*outlier_detection.*"]},...}
    ...

    Les statistiques personnalisées dans les variables d'environnement du sidecar du conteneur istio-proxy du Pod ont été mises à jour. Cela indique que la configuration proxyStatsMatcher a bien été prise en compte.

Paramètres d'exécution Envoy

Développer pour afficher la description et l'exemple de configuration des paramètres d'exécution Envoy

Description du paramètre

Ce paramètre spécifie les paramètres d'exécution du processus Envoy dans les conteneurs de proxy sidecar. Vous pouvez configurer le paramètre d'exécution suivant.

Paramètre

Description

Limite de connexions descendantes

Par défaut, les proxies sidecar ne limitent pas le nombre de connexions descendantes, ce qui pourrait être exploité par des activités malveillantes. Pour plus d'informations, consultez le bulletin de sécurité 2020-007. Vous pouvez configurer le nombre maximal de connexions descendantes qu'un proxy sidecar peut accepter en fonction de vos besoins métier.

Exemple de configuration

  1. Sur la page Configure the agent parameters of the injected Sidecar, cliquez sur l'onglet correspondant au niveau de configuration du proxy sidecar cible, puis cliquez sur Manage Environment Variables for Sidecar Proxy.

  2. (Facultatif) Dans la section Envoy Runtime Parameters, saisissez 5000 dans le champ de saisie à droite de Limits on Downstream Connections, puis cliquez sur Update Configurations.

  3. Redéployez la charge de travail pour appliquer la configuration du proxy sidecar.

  4. Exécutez la commande suivante pour consulter les variables d'environnement du proxy sidecar que vous avez configuré.

kubectl get pod -n <namespace> <pod-name> -o yaml

Résultat attendu :

apiVersion: v1
kind: Pod
...
spec:
  containers:
    - args:
...
      env:
        - name: PROXY_CONFIG
          value: >-
            {"concurrency":2,"configPath":"/etc/istio/proxy","discoveryAddress":"istiod-1-22-6.istio-system.svc:15012","holdApplicationUntilProxyStarts":true,"interceptionMode":"REDIRECT","proxyMetadata":{"BOOTSTRAP_XDS_AGENT":"false","DNS_AGENT":"","EXIT_ON_ZERO_ACTIVE_CONNECTIONS":"true"},"runtimeValues":{"overload.global_downstream_max_connections":"5000"},"terminationDrainDuration":"5s","tracing":{"zipkin":{"address":"zipkin.istio-system:9411"}}}
      name: istio-proxy
...

Le champ "runtimeValues":{"overload.global_downstream_max_connections":"5000"} a été ajouté à la variable d'environnement PROXY_CONFIG dans la configuration du sidecar du conteneur istio-proxy du Pod. Cela indique que la configuration des paramètres d'exécution Envoy a bien été prise en compte.