ASMEgressTrafficPolicy CRD說明
ASM自1.16.4版本起,支持使用ASMEgressTrafficPolicy CRD。ASMEgressTrafficPolicy定義了如何通過出口網(wǎng)關(guān)來管理和訪問外部流量。通過結(jié)合Sidecar和AuthorizationPolicy,您可以更全面地控制出口流量訪問。本文介紹ASMEgressTrafficPolicy CRD的YAML示例和字段說明。
YAML示例
示例一:允許通過出口網(wǎng)關(guān)訪問特定的外部服務(wù)
mytest命名空間下的sleep-a服務(wù),可以通過出口網(wǎng)關(guān)egressgateway-a的80端口,訪問http://www.httpbin.org。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
name: egress-by-egressgateway-a # 名稱約定:和出口網(wǎng)關(guān)對應。
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)
示例二:允許某些服務(wù)通過出口網(wǎng)關(guān)訪問特定的外部服務(wù),并將HTTP請求升級為HTTPS請求
mytest命名空間下的sleep-a服務(wù),可以通過出口網(wǎng)關(guān)egressgateway-a的80端口,訪問http://www.httpbin.org,并且發(fā)往該出口網(wǎng)關(guān)的80端口的HTTP請求將被出口網(wǎng)關(guān)升級為HTTPS請求。
mytest命名空間下的sleep-a服務(wù),可以通過出口網(wǎng)關(guān)egressgateway-a的444端口,訪問https://www.httpbin.org。
mytest 命名空間下的sleep-b服務(wù),可以通過出口網(wǎng)關(guān)egressgateway-a的445端口,訪問https://www.aliyun.com。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMEgressTrafficPolicy
metadata:
name: egress-by-egressgateway-a # 名稱約定:和出口網(wǎng)關(guān)對應。
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 | 是 | 通過哪個出口網(wǎng)關(guān)訪問外部服務(wù)。 | |
egressRules | 是 | Egress出口流量規(guī)則。 |
ByEgressGateway
字段 | 類型 | 是否必須 | 說明 |
name | string | 是 | 出口網(wǎng)關(guān)的名稱。建議網(wǎng)關(guān)名稱不超過32個字符。 |
port | uint32 | 否 | 出口網(wǎng)關(guān)的某個端口。 |
EgressRule
字段 | 類型 | 是否必須 | 說明 |
name | string | 否 | 規(guī)則名稱。 |
from | From[] | 是 | 出口流量的訪問來源,即請求發(fā)起者。 |
to | To[] | 是 | 出口流量的目標,即請求的外部目標服務(wù)。 |
From
字段 | 類型 | 是否必須 | 說明 |
namespace | string | 是 | 請求來源(發(fā)起者)服務(wù)所在的命名空間。 |
workloadSelector | map[string]string | 否 | 出口流量的訪問來源服務(wù)的篩選器,通過Label匹配需要包含的服務(wù)。 |
To
字段 | 類型 | 是否必須 | 說明 |
name | string | 是 | 外部服務(wù)的名稱。 |
hosts | string[] | 是 | 外部服務(wù)的域名。支持配置多個域名,但需指向同一個站點。 |
port | 是 | 外部服務(wù)的端口。 | |
byEgressGateway | 是 | 通過出口網(wǎng)關(guān)的某個端口號訪問外部服務(wù)。 | |
httpsUpgrade | 否 | 是否升級為HTTPS請求。業(yè)務(wù)發(fā)起的HTTP外部請求將被出口網(wǎng)關(guān)升級為HTTPS請求。 |
HttpsUpgrade
字段 | 類型 | 是否必須 | 說明 |
enabled | bool | 是 | 是否升級為HTTPS。 |
port | uint32 | 是 | 外部服務(wù)的HTTPS端口。 |