Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:ASMEgressTrafficPolicy CRD description

Dernière mise à jour :Aug 11, 2026

La définition de ressource personnalisée (CRD) ASMEgressTrafficPolicy définit comment une passerelle de sortie achemine le trafic sortant des services du maillage vers des destinations externes. En combinant les proxies sidecar et les politiques d'autorisation, vous contrôlez le trafic sortant de manière globale.

Requiert Service Mesh (ASM) version 1.16.4 ou ultérieure.

Exemples YAML

Acheminer un service vers un endpoint externe via HTTP

Le service sleep-a du namespace mytest accède à http://www.httpbin.org via la passerelle de sortie egressgateway-a sur le port 80.

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
  name: egress-by-egressgateway-a  # Name corresponds to the egress gateway.
  namespace: istio-egress          # Fixed namespace for egress policies.
spec:
  byEgressGateway:
    name: egressgateway-a
  egressRules:
  - from:
    - namespace: mytest
      workloadSelector:
        app: sleep-a
    to:
    - name: httpbin-service-http
      hosts:
      - www.httpbin.org  # Multiple domains that resolve to the same address.
      - httpbin.org
      port:
        name: http
        number: 80
        protocol: HTTP
      byEgressGateway:
        port: 80  # Traffic path: Sidecar -> port 80 on gateway -> port 80 on httpbin.org

Flux de trafic : Le proxy sidecar intercepte la requête sortante de sleep-a, la transfère vers le port 80 de la passerelle de sortie, qui l'envoie ensuite au port 80 de httpbin.org.

Mettre à niveau HTTP vers HTTPS et acheminer plusieurs services

Cet exemple définit trois règles de trafic sortant via la même passerelle :

Service source Destination externe Port de la passerelle Protocole Mise à niveau HTTPS
sleep-a (mytest) httpbin.org 80 HTTP Oui (port 443)
sleep-a (mytest) httpbin.org 444 HTTPS Non
sleep-b (mytest) www.aliyun.com 445 HTTPS Non
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
  name: egress-by-egressgateway-a
  namespace: istio-egress
spec:
  byEgressGateway:
    name: egressgateway-a
  egressRules:
  - from:
     - namespace: mytest
       workloadSelector:
          app: sleep-a
    to:
    - name: httpbin-service-http
      hosts:
      - www.httpbin.org
      - httpbin.org
      port:
        name: http
        number: 80
        protocol: HTTP
      byEgressGateway:
        port: 80
      httpsUpgrade:
        enabled: true   # Set to false to disable the upgrade. The port below is ignored when disabled.
        port: 443       # Traffic path: Sidecar -> port 80 on gateway -> port 443 on httpbin.org (HTTPS)
    - name: httpbin-service-https
      hosts:
      - www.httpbin.org
      - httpbin.org
      port:
        name: https
        number: 443
        protocol: HTTPS
      byEgressGateway:
        port: 444
  - from:
     - namespace: mytest
       workloadSelector:
          app: sleep-b
    to:
    - name: aliyun-service-https
      hosts:
      - www.aliyun.com
      port:
        name: https
        number: 443
        protocol: HTTPS
      byEgressGateway:
        port: 445

La première règle illustre la mise à niveau HTTPS : le sidecar envoie du HTTP sur le port 80 à la passerelle, qui établit ensuite une connexion HTTPS sur le port 443 vers httpbin.org. L'application envoie du HTTP en clair tandis que la passerelle gère TLS.

Acheminer le trafic HTTP et TCP avec allocation automatique des ports

À partir d'ASM 1.24.6.45, ASMEgressTrafficPolicy prend en charge le protocole TCP. Lorsque tous les champs byEgressGateway sont omis dans les sections to, ASM alloue automatiquement des ports de transfert sur la passerelle de sortie à partir de la plage par défaut 10000–20000. Ces ports attribués automatiquement sont internes et n'affectent pas vos charges de travail.

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
  name: egress-by-egressgateway-a
  namespace: istio-egress
spec:
  byEgressGateway:
    name: egressgateway-a
  egressRules:
  - from:
    - namespace: default
      workloadSelector:
        app: sleep
    to:
    - name: aliyun-com-http  # HTTP route
      hosts:
      - aliyun.com
      port:
        name: http
        number: 80
        protocol: HTTP
    - name: aliyun-https     # HTTPS route
      hosts:
      - aliyun.com
      port:
        name: https
        number: 443
        protocol: HTTPS
    - name: https-upgrade    # HTTP upgraded to HTTPS at the gateway
      hosts:
      - taobao.com
      port:
        name: http
        protocol: HTTP
        number: 80
      httpsUpgrade:
        enabled: true
        port: 443
    - name: tcp-svc1         # TCP service 1
      hosts:
      - 1.1.1.1
      port:
        name: tcp
        protocol: TCP
        number: 44
    - name: tcp-svc2         # TCP service 2
      hosts:
      - test-tcp.com
      port:
        name: tcp
        protocol: TCP
        number: 444

Aucun champ byEgressGateway n'est spécifié dans les entrées to ; ASM attribue donc automatiquement des ports de transfert de passerelle pour les cinq destinations.

Référence des champs de la CRD

Spec

**Champ** **Type** **Obligatoire** **Description**
byEgressGateway ByEgressGateway Oui Passerelle de sortie qui achemine le trafic vers les services externes.
egressRules EgressRule[] Oui Règles de trafic sortant définissant les mappages source-destination.

ByEgressGateway

**Champ** **Type** **Obligatoire** **Description**
name string Oui Nom de la passerelle de sortie. Limitez le nom à 32 caractères maximum.
port uint32 Non Port de la passerelle de sortie utilisé pour le transfert du trafic.

EgressRule

**Champ** **Type** **Obligatoire** **Description**
name string Non Nom descriptif de cette règle.
from From[] Oui Charges de travail du maillage qui initient les requêtes sortantes.
to To[] Oui Services externes qui reçoivent le trafic.

From

**Champ** **Type** **Obligatoire** **Description**
namespace string Oui Namespace de la charge de travail qui initie la requête.
workloadSelector map[string]string Non Sélecteur d'étiquettes identifiant des charges de travail spécifiques au sein du namespace.

To

**Champ** **Type** **Obligatoire** **Description**
name string Oui Nom unique pour cette entrée de service externe au sein de la règle.
hosts string[] Oui Noms de domaine ou adresses IP du service externe. Vous pouvez spécifier plusieurs domaines, mais toutes les entrées doivent se résoudre vers la même adresse.
port Port Oui Port du service externe. Le champ protocol accepte HTTP, HTTPS ou TCP.
byEgressGateway ByEgressGateway Oui Port de la passerelle de sortie utilisé pour transférer le trafic vers ce service. À partir d'ASM 1.24.6.45, si tous les champs byEgressGateway sont omis dans chaque entrée to de la politique, ASM attribue automatiquement un port pour chaque service.
httpsUpgrade HttpsUpgrade Non Met à niveau les requêtes HTTP sortantes vers HTTPS au niveau de la passerelle de sortie.

HttpsUpgrade

**Champ** **Type** **Obligatoire** **Description**
enabled bool Oui Définissez sur true pour mettre à niveau les requêtes HTTP vers HTTPS au niveau de la passerelle de sortie. Si la valeur est false, la valeur port ci-dessous est ignorée.
port uint32 Oui Port HTTPS du service externe (généralement 443).

Notes d'utilisation

  • Namespace : Créez toutes les ressources ASMEgressTrafficPolicy dans le namespace istio-egress.

  • Nomination : Nommez chaque politique selon la passerelle de sortie associée (par exemple, egress-by-egressgateway-a pour la passerelle egressgateway-a).

  • Domaines multiples : Lors de la saisie de plusieurs entrées dans hosts, tous les domaines doivent se résoudre vers la même adresse IP.

  • Allocation automatique des ports : Disponible à partir d'ASM 1.24.6.45. S'applique uniquement lorsque chaque entrée to de la politique omet le champ byEgressGateway.

  • Protocoles pris en charge : Le champ protocol dans port accepte HTTP, HTTPS ou TCP. La prise en charge de TCP nécessite ASM 1.24.6.45 ou une version ultérieure.

Références