Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Ztunnel configuration

Dernière mise à jour :Aug 11, 2026

En mode ambient de Service Mesh (ASM), le composant Ztunnel charge sa configuration d'exécution depuis la ConfigMap ztunnel-config du namespace istio-system. Le champ config.yaml de cette ConfigMap définit les paramètres de la politique de sortie (egress), de l'observabilité L7 et d'autres configurations. Ztunnel surveille les modifications du fichier et les applique automatiquement sans redémarrage.

Configuration

La ConfigMap ztunnel-config présente la structure suivante :

apiVersion: v1
kind: ConfigMap
metadata:
  name: ztunnel-config
  namespace: istio-system
data:
  ztunnel-config.yaml: |
    l7Config:
      enabled: false

    egressPolicies: [ ]

Champ

Type

Obligatoire

Description

l7Config

L7Config

Non

Configuration de l'observabilité L7. Si non spécifié, les valeurs par défaut s'appliquent.

egressPolicies

EgressPolicy[]

Non

Règles de politique de sortie pour le trafic vers des services externes au cluster. Si vide ou non spécifié, tout le trafic sortant est autorisé par défaut.

Important

Les configurations EgressPolicy s'appliquent uniquement aux services externes au cluster. Les services enregistrés dans le cluster, tels que les ressources Service et ServiceEntry, ne sont pas concernés.

Exemples de configuration

Exemple 1 : Activer les journaux d'accès L7

Activez la génération des journaux d'accès L7. Ztunnel analyse le trafic HTTP et TLS et génère les journaux d'accès correspondants.

l7Config:
  enabled: true

Exemple 2 : Refuser l'accès aux blocs CIDR privés

Refusez l'accès depuis tous les namespaces aux blocs CIDR privés, sans activer l'observabilité L7.

egressPolicies:
- matchCidrs:
  - 10.0.0.0/8
  - 172.16.0.0/12
  - 192.168.0.0/16
  policy: Deny

Exemple 3 : Activer les journaux d'accès L7 et un contrôle de sortie en couches

Activez les journaux d'accès L7 combinés à un contrôle de sortie en couches : autorisez le transit direct (passthrough) pour un namespace spécifique, refusez l'accès au service de métadonnées sur des ports spécifiques et refusez l'accès aux blocs CIDR privés.

l7Config:
  enabled: true
egressPolicies:
# Allow passthrough for the egress-gateway namespace to prevent the fallback rule from blocking the egress proxy itself.
- namespaces:
  - egress-gateway
  policy: Passthrough

# Deny access to the cloud provider's metadata service on ports 80 and 443.
- matchCidrs:
  - 169.254.169.254/32
  - fd00:ec2::254/128
  matchPorts:
  - 80
  - 443
  policy: Deny

# Deny access to private CIDR blocks.
- matchCidrs:
  - 10.0.0.0/8
  - 172.16.0.0/12
  - 192.168.0.0/16
  - fc00::/7
  policy: Deny

Détails des champs

L7Config

Champ

Type

Obligatoire

Description

enabled

bool

Non

Active l'observabilité du trafic L7. Valeur par défaut : false.

Remarque
  • L'observabilité L7 prend actuellement en charge uniquement la génération de journaux d'accès. La collecte de métriques au niveau des requêtes et le traçage distribué ne sont pas encore pris en charge.

  • Les protocoles pris en charge sont HTTP et TLS.

  • L'activation de cette fonctionnalité peut entraîner une surcharge de performance d'environ 5 %. Évaluez les besoins de votre charge de travail avant de l'activer.

Champs HTTP supplémentaires

Lorsque l'observabilité L7 est activée, chaque transaction de requête/réponse HTTP génère une entrée de journal d'accès distincte avec les champs supplémentaires suivants :

Champ

Description

Valeur d'exemple

method

Méthode de la requête HTTP

GET, POST, PUT, DELETE

path

Chemin de la requête

/api/v1/users

protocol

Version du protocole

HTTP/1.0, HTTP/1.1

host

Hôte de la requête

httpbin:8000

response_code

Code d'état de la réponse HTTP

200, 404, 503

user_agent

L'en-tête de requête User-Agent. Si l'en-tête est absent, la valeur est "-".

curl/7.88.1

bytes_sent

Taille du corps de la requête en octets, par requête

0

bytes_recv

Taille du corps de la réponse en octets, par requête

512

duration

Durée totale d'une seule requête, de son envoi jusqu'à la réception de la réponse

15ms

Champs TLS supplémentaires

Lorsque l'observabilité L7 est activée pour le trafic TLS (et non HTTP sur TLS), Ztunnel analyse le message de handshake ClientHello et ajoute les champs suivants à l'entrée de journal :

Champ

Description

Valeur d'exemple

protocol

Valeur fixe

TLS

tls.sni

L'indication du nom de serveur (SNI) issue du message ClientHello

example.com

tls.alpn

Le premier protocole de négociation de protocole de couche application (ALPN) issu du message ClientHello. Si aucun ALPN n'est spécifié, la valeur est "-".

h2, http/1.1

EgressPolicy

Chaque règle EgressPolicy se compose de trois conditions de correspondance (namespaces, matchCidrs et matchPorts) ainsi que d'une action policy. Ztunnel évalue les règles de haut en bas et applique la première dont toutes les conditions correspondent.

Champ

Type

Obligatoire

Description

namespaces

string[]

Non

Une liste des namespaces clients auxquels la règle s'applique. Si vide, elle correspond à tous les namespaces.

matchCidrs

string[]

Non

Une liste de plages d'adresses IP de destination au format CIDR. Si vide, elle correspond à toutes les adresses IP de destination. Pour contrôler le trafic IPv4 et IPv6, vous devez configurer leurs plages CIDR respectives séparément.

matchPorts

int[]

Non

Une liste de ports de destination. Si vide, elle correspond à tous les ports.

policy

string

Oui

L'action à entreprendre. Les valeurs valides sont :

  • Passthrough

  • Deny

EgressPolicyAction

Les valeurs suivantes sont disponibles pour le champ policy :

Valeur

Description

Passthrough

Transmet le trafic directement à l'adresse IP de destination via TCP, en contournant le proxy du mesh.

Deny

Interrompt immédiatement la requête, l'empêchant d'atteindre la destination.

Contraintes de configuration

  • Ztunnel évalue les règles dans egressPolicies dans l'ordre et applique la première dont les conditions namespaces, matchCidrs et matchPorts correspondent toutes. Les règles suivantes sont ignorées.

  • Le champ namespaces correspond au namespace du client (la source de la requête), et non au namespace du service de destination.

  • Le champ matchCidrs correspond à l'adresse IP de destination, et non au nom de domaine. Pour contrôler le trafic basé sur les noms de domaine, vous devez enregistrer le service externe en tant que ServiceEntry dans le mesh.

  • Le champ matchPorts correspond au port de destination (le port distant de la requête), et non au port source du client.

  • Si une requête ne correspond à aucune règle dans egressPolicies, l'action par défaut est Passthrough.

  • Ztunnel charge automatiquement les modifications de configuration via la surveillance des fichiers, sans nécessiter de redémarrage du pod. Si le format de la configuration est invalide, Ztunnel conserve la dernière configuration valide connue.