全部產品
Search
文件中心

Alibaba Cloud Service Mesh:ASMEgressTrafficPolicy CRD說明

更新時間:Jun 30, 2024

ASM自1.16.4版本起,支援使用ASMEgressTrafficPolicy CRD。ASMEgressTrafficPolicy定義了如何通過出口網關來管理和訪問外部流量。通過結合Sidecar和AuthorizationPolicy,您可以更全面地控制出口流量訪問。本文介紹ASMEgressTrafficPolicy CRD的YAML樣本和欄位說明。

YAML樣本

樣本一:允許通過出口網關訪問特定的外部服務

mytest命名空間下的sleep-a服務,可以通過出口網關egressgateway-a的80連接埠,訪問http://www.httpbin.org

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
  name: egress-by-egressgateway-a  # 名稱約定:和出口網關對應。
  namespace: istio-egress                # 命名空間約定:固定到istio-egress命名空間。
spec:
  byEgressGateway:
    name: egressgateway-a
  egressRules:
  - from:
    - namespace: mytest
      workloadSelector:
        app: sleep-a
    to:
    - name: httpbin-service-http
      hosts:
      - www.httpbin.org  # 多個網域名稱對應DNS解析的地址一致。
      - httpbin.org      # 多個網域名稱對應DNS解析的地址一致。
      port:
        name: http
        number: 80
        protocol: HTTP
      byEgressGateway:
        port: 80        # Sidecar → 80 Gateway → 80 Service (httpbin.org)

樣本二:允許某些服務通過出口網關訪問特定的外部服務,並將HTTP請求升級為HTTPS請求

  • mytest命名空間下的sleep-a服務,可以通過出口網關egressgateway-a的80連接埠,訪問http://www.httpbin.org,並且發往該出口網關的80連接埠的HTTP請求將被出口網關升級為HTTPS請求。

  • mytest命名空間下的sleep-a服務,可以通過出口網關egressgateway-a的444連接埠,訪問https://www.httpbin.org

  • mytest 命名空間下的sleep-b服務,可以通過出口網關egressgateway-a的445連接埠,訪問https://www.aliyun.com

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
  name: egress-by-egressgateway-a  # 名稱約定:和出口網關對應。
  namespace: istio-egress                # 命名空間約定:固定到istio-egress命名空間。
spec:
  byEgressGateway:
    name: egressgateway-a
  egressRules:
  - from:
     - namespace: mytest
       workloadSelector:
          app: sleep-a
    to:
    - name: httpbin-service-http
      hosts:
      - www.httpbin.org  # 多個網域名稱對應DNS解析的地址一致。
      - httpbin.org      # 多個網域名稱對應DNS解析的地址是一致。
      port:
        name: http
        number: 80
        protocol: HTTP
      byEgressGateway:
        port: 80        # Sidecar → 80 Gateway → 80 Service (httpbin.org)
      httpsUpgrade:
        enabled: true   # 若enabled為false,httpsUpgrade配置的port不生效。
        port: 443       # Sidecar → 80 Gateway → 443 Service (httpbin.org)
    - 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

欄位說明

Spec

欄位

類型

是否必須

說明

byEgressGateway

ByEgressGateway

通過哪個出口網關訪問外部服務。

egressRules

EgressRule[]

Egress出口流量規則。

ByEgressGateway

欄位

類型

是否必須

說明

name

string

出口網關的名稱。建議網關名稱不超過32個字元。

port

uint32

出口網關的某個連接埠。

EgressRule

欄位

類型

是否必須

說明

name

string

規則名稱。

from

From[]

出口流量的訪問來源,即請求發起者。

to

To[]

出口流量的目標,即請求的外部目標服務。

From

欄位

類型

是否必須

說明

namespace

string

請求來源(發起者)服務所在的命名空間。

workloadSelector

map[string]string

出口流量的訪問來源服務的篩選器,通過Label匹配需要包含的服務。

To

欄位

類型

是否必須

說明

name

string

外部服務的名稱。

hosts

string[]

外部服務的網域名稱。支援配置多個網域名稱,但需指向同一個網站。

port

Port

外部服務的連接埠。

byEgressGateway

ByEgressGateway

通過出口網關的某個連接埠號碼訪問外部服務。

httpsUpgrade

HttpsUpgrade

是否升級為HTTPS請求。業務發起的HTTP外部請求將被出口網關升級為HTTPS請求。

HttpsUpgrade

欄位

類型

是否必須

說明

enabled

bool

是否升級為HTTPS。

port

uint32

外部服務的HTTPS連接埠。

相關文檔

使用ASMEgressTrafficPolicy管理出口流量