ASMEgressTrafficPolicy CRD说明

更新时间:2025-03-26 09:08

ASM自1.16.4版本起,支持使用ASMEgressTrafficPolicy CRD。用于定义通过出口网关来管理和访问外部流量的方式。支持结合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

示例三:访问HTTP和TCP协议的外部服务,并自动分配出口网关端口

从1.24.6.45起,ASMEgressTrafficPolicy支持配置TCP协议的外部服务。由于不同的TCP服务需要使用不同的出口网关端口,ASM还支持了自动分配出口网关的转发端口(默认的分配范围为10000~20000)。您无需手动修改,这些端口也不会影响您的业务。示例如下:

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: 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 upgrade to https
      hosts:
      - taobao.com
      port:
        name: http
        protocol: HTTP
        number: 80
      httpsUpgrade:
        enabled: true
        port: 443
    - name: tcp-svc1      # tcp svc 1
      hosts:
      - 1.1.1.1
      port:
        name: tcp
        protocol: TCP
        number: 44
    - name: tcp-svc2      # tcp svc 2
      hosts:
      - test-tcp.com
      port:
        name: tcp
        protocol: TCP
        number: 444

字段说明

Spec

字段

类型

是否必须

说明

字段

类型

是否必须

说明

byEgressGateway

ByEgressGateway

通过哪个出口网关访问外部服务。

egressRules

EgressRule[]

Egress出口流量规则。

ByEgressGateway

字段

类型

是否必须

说明

字段

类型

是否必须

说明

name

string

出口网关的名称。建议网关名称不超过32个字符。

  • Spec下的byEgressGateway字段只需要填写名称即可,无需填写端口。

port

uint32

出口网关的某个端口。

  • To中的byEgressGateway字段只需要填写端口即可,无需填写名称。

EgressRule

字段

类型

是否必须

说明

字段

类型

是否必须

说明

name

string

规则名称。

from

From[]

出口流量的访问来源,即请求发起者。

to

To[]

出口流量的目标,即请求的外部目标服务。

From

字段

类型

是否必须

说明

字段

类型

是否必须

说明

namespace

string

请求来源(发起者)服务所在的命名空间。

workloadSelector

map[string]string

出口流量的访问来源服务的筛选器,通过Label匹配需要包含的服务。

To

字段

类型

是否必须

说明

字段

类型

是否必须

说明

name

string

外部服务的名称。

hosts

string[]

外部服务的域名。支持配置多个域名,但需指向同一个站点。

port

Port

外部服务的端口。

byEgressGateway

ByEgressGateway

通过出口网关的某个端口号访问外部服务。

  • 从ASM1.24.6.45起,如果一个ASMEgressTrafficPolicy的所有To中的byEgressGateway都为空,ASM会自动为所有的服务分配端口。

httpsUpgrade

HttpsUpgrade

是否升级为HTTPS请求。业务发起的HTTP外部请求将被出口网关升级为HTTPS请求。

HttpsUpgrade

字段

类型

是否必须

说明

字段

类型

是否必须

说明

enabled

bool

是否升级为HTTPS。

port

uint32

外部服务的HTTPS端口。

相关文档

使用ASMEgressTrafficPolicy管理出口流量

  • 本页导读 (1)
  • YAML示例
  • 示例一:允许通过出口网关访问特定的外部服务
  • 示例二:允许某些服务通过出口网关访问特定的外部服务,并将HTTP请求升级为HTTPS请求
  • 示例三:访问HTTP和TCP协议的外部服务,并自动分配出口网关端口
  • 字段说明
  • Spec
  • ByEgressGateway
  • EgressRule
  • From
  • To
  • HttpsUpgrade
  • 相关文档
文档反馈
phone 联系我们

立即和Alibaba Cloud在线服务人员进行交谈,获取您想了解的产品信息以及最新折扣。

alicare alicarealicarealicare