ASM permet de modifier les ressources et la configuration du proxy Sidecar via des annotations. Cette rubrique explique comment configurer le proxy Sidecar en ajoutant des annotations de ressource et en utilisant le champ ProxyConfig.
Prérequis
Une passerelle d'entrée est déployée. Pour plus d'informations, consultez Créer une passerelle d'entrée.
Ajouter des annotations de ressource
ASM permet de modifier les ressources du proxy Sidecar en ajoutant des annotations à un pod. Cet exemple montre comment modifier la demande de mémoire du proxy Sidecar. Pour plus d'informations sur les autres annotations, consultez Annexe A : Annotations de ressource Istio.
Activez l'injection automatique du proxy mesh Sidecar pour le namespace par défaut. Pour plus d'informations, consultez Activer l'injection automatique.
Déployez une application dans le namespace par défaut. Pour plus d'informations, consultez Déployer une application dans un cluster associé à une instance ASM.
-
Modifiez la demande minimale de mémoire pour le proxy Sidecar.
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, recherchez votre application cible et cliquez sur dans la colonne Actions.
-
Dans la boîte de dialogue Edit YAML, ajoutez le contenu suivant sous le paramètre
template, puis cliquez sur Update.annotations: sidecar.istio.io/proxyMemory: 14Mitemplate: metadata: annotations: sidecar.istio.io/proxyMemory: 14Mi labels: app: details version: v1
-
Vérifiez que la modification de la mémoire du proxy Sidecar a réussi.
Dans le volet de navigation de gauche de la page de gestion du cluster, choisissez .
Sur la page Pods, recherchez le pod de votre application cible et cliquez sur Details dans la colonne Actions.
-
Dans l'onglet Containers, cliquez sur istio-proxy.
Vous constatez que istio-proxy demande 14 Mi de mémoire. Après avoir cliqué, vous pouvez afficher les détails du conteneur istio-proxy, y compris l'adresse du registre, la politique d'extraction d'image (IfNotPresent) et les variables d'environnement liées au Sidecar Istio. Sous Requested Resources, vous verrez que le paramètre de mémoire actuel est
Memory: 14Mi.
Définir le champ ProxyConfig
ASM permet de définir la configuration du proxy Sidecar en modifiant le champ ProxyConfig dans un pod. Pour plus d'informations sur l'utilisation du champ ProxyConfig, consultez Annexe B : Champs ProxyConfig.
Les valeurs proxy.istio.io/config peuvent utiliser le format YAML ou JSON.
La procédure de définition du champ ProxyConfig est identique à celle de l'ajout d'annotations de ressource. Cette section fournit des exemples courants de champs ProxyConfig. Pour les étapes, reportez-vous à la section précédente.
Exemple 1 : Définir la durée de vidage lors de la terminaison
Utilisez le champ terminationDrainDuration pour modifier la durée de vidage lors de la terminaison. Cette durée définit le temps maximal pendant lequel Istio Proxy attend après la fin d'un conteneur d'application.
Ajoutez le contenu suivant à votre fichier YAML d'application pour qu'Istio Proxy attende jusqu'à 3 secondes après la fin du conteneur d'application.
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
type: RollingUpdate
template:
metadata:
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
labels:
app: details
Sur la page Pods, recherchez le pod de votre application cible et cliquez sur Actions dans la colonne Details. Dans l'onglet Containers, cliquez sur istio-proxy. Vous constaterez que la durée de vidage lors de la terminaison est définie sur 3 s. Une fois la configuration appliquée, affichez les détails du conteneur istio-proxy sur la page des conteneurs du Pod. Dans la variable d'environnement PROXY_CONFIG, terminationDrainDuration est défini sur 3s.
Exemple 2 : Définir l'ordre de démarrage du proxy Istio
Par défaut, ASM définit globalement holdApplicationUntilProxyStarts sur true. Cela garantit que le proxy Istio démarre avec succès avant le conteneur d'application. Si le conteneur d'application devient prêt avant que le proxy Istio ne le soit, le pod ne peut pas accepter le trafic.
holdApplicationUntilProxyStarts est une option de configuration qui contrôle le comportement de démarrage du conteneur d'application après l'injection du proxy Sidecar. Lorsque holdApplicationUntilProxyStarts est défini sur true, Istio CNI ou l'injecteur Sidecar configure le pod Kubernetes pour empêcher le démarrage du conteneur d'application tant que le conteneur proxy n'est pas prêt et ne commence pas à recevoir du trafic. Cela garantit que tout le trafic passe par le proxy avant que le pod ne reçoive du trafic, permettant une application immédiate des politiques de gestion du trafic, de surveillance et de sécurité. Dans la plupart des cas, définissez holdApplicationUntilProxyStarts sur true pour assurer une gestion correcte du trafic. Définissez-le sur false uniquement dans des scénarios spécifiques où cela est approprié.
Sur la page Pods, recherchez le pod de votre application cible et cliquez sur Actions dans la colonne Details. Cliquez sur l'onglet Events. Vous verrez que le conteneur d'application démarre en premier, suivi du proxy Istio. Dans l'onglet Events du Pod, la liste des événements du pod details-v1 affiche la séquence complète de démarrage des conteneurs, y compris la planification du Pod (Scheduled), l'extraction de l'image (Pulled), la création du conteneur (Created) et le démarrage du conteneur (Started). Les conteneurs démarrés apparaissent dans cet ordre : conteneur d'initialisation istio-init, conteneur d'application details et conteneur Sidecar istio-proxy. Les événements de conteneur Started sont mis en évidence, confirmant l'ordre de démarrage imposé par la configuration holdApplicationUntilProxyStarts.
Annexe A : Annotations de ressource Istio
|**Annotation**
|
**Description**
| | --- | --- | |
proxy.istio.io/config
|
Remplace la configuration du proxy pour ce proxy.
| |
readiness.status.sidecar.istio.io/applicationPorts
|
Spécifie la liste des ports exposés par le conteneur d'application. Utilisé par la sonde de readiness du proxy Sidecar pour déterminer quand le proxy est configuré et prêt à recevoir du trafic.
| |
readiness.status.sidecar.istio.io/failureThreshold
|
Spécifie le seuil d'échec pour la sonde de readiness du proxy Sidecar.
| |
readiness.status.sidecar.istio.io/initialDelaySeconds
|
Spécifie le délai initial (en secondes) pour la sonde de readiness du proxy Sidecar.
| |
readiness.status.sidecar.istio.io/periodSeconds
|
Spécifie la période (en secondes) pour la sonde de readiness du proxy Sidecar.
| |
sidecar.istio.io/componentLogLevel
|
Spécifie le niveau de journalisation des composants pour le proxy Sidecar.
| |
sidecar.istio.io/enableCoreDump
|
Spécifie si le proxy Sidecar doit activer le core dump.
| |
sidecar.istio.io/extraStatTags
|
Liste de tags supplémentaires extraits de la télémétrie du proxy Istio. Chaque tag supplémentaire doit figurer dans cette liste.
| |
sidecar.istio.io/inject
|
Spécifie s'il faut utiliser l'injection automatique du Sidecar.
| |
sidecar.istio.io/interceptionMode
|
Spécifie le mode (REDIRECT ou TPROXY) utilisé pour rediriger le trafic entrant vers Envoy.
| |
sidecar.istio.io/logLevel
|
Définit le niveau de journalisation pour le proxy Sidecar.
| |
sidecar.istio.io/proxyCPU
|
Spécifie le paramètre de CPU demandé pour le proxy Sidecar.
| |
sidecar.istio.io/proxyCPULimit
|
Spécifie la limite de CPU pour le proxy Sidecar.
| |
sidecar.istio.io/proxyMemory
|
Spécifie le paramètre de mémoire demandé pour le proxy Sidecar.
| |
sidecar.istio.io/proxyMemoryLimit
|
Spécifie la limite de mémoire pour le proxy Sidecar.
| |
sidecar.istio.io/rewriteAppHTTPProbers
|
Redirige les sondes HTTP de readiness et de liveness vers le proxy Sidecar.
| |
status.sidecar.istio.io/port
|
Spécifie le port d'état HTTP pour le proxy Sidecar. S'il est défini sur zéro, le Sidecar ne fournit pas d'état.
| |
traffic.sidecar.istio.io/excludeInboundPorts
|
Liste séparée par des virgules des ports entrants exclus de la redirection vers le proxy Sidecar. S'applique uniquement lorsque tout le trafic entrant (c'est-à-dire « * ») est redirigé.
| |
traffic.sidecar.istio.io/excludeOutboundIPRanges
|
Liste séparée par des virgules des plages IP au format CIDR exclues de la redirection. S'applique uniquement lorsque tout le trafic sortant (c'est-à-dire « * ») est redirigé.
| |
traffic.sidecar.istio.io/excludeOutboundPorts
|
Liste séparée par des virgules des ports string qui interdisent la redirection du trafic sortant vers le proxy Sidecar.
| |
traffic.sidecar.istio.io/includeInboundPorts
|
Liste séparée par des virgules des ports entrants dont le trafic est redirigé vers le proxy Sidecar. Utilisez le joker « * » pour configurer la redirection pour tous les ports. Une liste vide désactive la redirection pour tout le trafic entrant.
| |
traffic.sidecar.istio.io/includeOutboundIPRanges
|
Liste séparée par des virgules des plages IP au format CIDR redirigées vers le proxy Sidecar. Utilisez le joker « * » pour rediriger tout le trafic sortant. Une liste vide désactive la redirection pour tout le trafic sortant.
| |
traffic.sidecar.istio.io/includeOutboundPorts
|
Liste séparée par des virgules des chaînes de ports du trafic sortant dont le trafic est redirigé vers le proxy Sidecar, quelle que soit l'adresse IP de destination.
| |
traffic.sidecar.istio.io/kubevirtInterfaces
|
Liste séparée par des virgules des interfaces virtuelles dont le trafic entrant est traité comme du trafic sortant.
|
Annexe B : Champs ProxyConfig
|**Champ**
|
**Type**
|
**Description**
| | --- | --- | --- | |
configPath
|
String
|
Chemin d'accès au répertoire où les fichiers de configuration générés sont stockés. L'agent proxy génère la configuration réelle et la stocke dans ce répertoire.
| |
statsdUdpAddress
|
String
|
Adresse IP et port de l'écouteur UDP statsd.
| |
proxyAdminPort
|
Int32
|
Port sur lequel Envoy écoute les commandes administratives. Le port par défaut est 15000.
| |
controlPlaneAuthPolicy
|
AuthenticationPolicy
|
AuthenticationPolicy définit comment le proxy s'authentifie lors de la connexion au plan de contrôle. La valeur par défaut est `MUTUAL_TLS`.
| |
concurrency
|
[Int32Value](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#int32value)
|
Nombre de threads de travail à exécuter. Si non défini, cela est déterminé automatiquement en fonction des demandes et des limites de CPU. S'il est défini sur 0, tous les cœurs de la machine sont utilisés. La valeur par défaut est de 2 threads de travail.
| |
interceptionMode
|
InboundInterceptionMode
|
Définit le mode de redirection du trafic entrant vers le proxy Sidecar.
| |
tracing
|
Tracing
|
Configuration de traçage utilisée par le proxy Sidecar.
| |
sds
|
SDS
|
Configuration du service de découverte de secrets (SDS) utilisée par le proxy.
| |
proxyMetadata
|
Map<string, string>
|
Variables d'environnement supplémentaires pour le proxy. Les noms commençant par ISTIO_META_ sont inclus dans la configuration bootstrap générée et envoyés au serveur XDS.
| |
statusPort
|
Map<string, string>
|
Port administratif (par exemple, sonde de readiness) sur lequel le proxy écoute. La valeur par défaut est le port 15020.
| |
terminationDrainDuration
|
[Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)
|
Temps alloué aux connexions pour se terminer lors de l'arrêt du proxy. À la réception de SIGTERM ou SIGINT, l'agent istio demande au proxy Sidecar actif de commencer à drainer les connexions—bloquant les nouvelles connexions et permettant aux existantes de se terminer. Il dort ensuite pendant termination_drain_duration avant d'arrêter tous les processus Envoy actifs restants. Si non défini, la valeur par défaut de 5s est appliquée.
| |
holdApplicationUntilProxyStarts
|
[BoolValue](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#boolvalue)
|
Indicateur booléen pour activer ou désactiver le comportement holdApplicationUntilProxyStarts. Cette fonctionnalité ajoute des hooks pour retarder le démarrage de l'application jusqu'à ce que le proxy du pod soit prêt à accepter le trafic, atténuant ainsi certaines conditions de concurrence au démarrage.
|