すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:ASMEgressTrafficPolicy CRD の説明

最終更新日:Nov 06, 2025

Service Mesh (ASM) インスタンスバージョン 1.16.4 以降では、ASMEgressTrafficPolicy カスタムリソース定義 (CRD) を使用できます。この CRD は、エグレスゲートウェイが外部トラフィックへのアクセスを管理する方法を定義します。サイドカープロキシと権限付与ポリシーを組み合わせて使用することで、トラフィックシェーピングを強化できます。このトピックでは、YAML の例を示し、ASMEgressTrafficPolicy CRD のフィールドについて説明します。

YAML の例

例 1: エグレスゲートウェイを介した特定の外部サービスへのアクセスを許可する

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 によって同じ IP アドレスに解決される必要があります。
      - httpbin.org      # 複数のドメイン名は、DNS によって同じ IP アドレスに解決される必要があります。
      port:
        name: http
        number: 80
        protocol: HTTP
      byEgressGateway:
        port: 80        # サイドカー → 80 ゲートウェイ → 80 サービス (httpbin.org)

例 2: 一部のサービスがエグレス ゲートウェイを介して特定の外部サービスにアクセスし、HTTP リクエストを HTTPS リクエストにアップグレードできるようにする

  • mytest 名前空間の sleep-a サービスは、egressgateway-a という名前のエグレスゲートウェイのポート 80 で http://www.httpbin.org にアクセスできます。エグレスゲートウェイは 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 によって同じ IP アドレスに解決される必要があります。
      - httpbin.org      # 複数のドメイン名は、DNS によって同じ IP アドレスに解決される必要があります。
      port:
        name: http
        number: 80
        protocol: HTTP
      byEgressGateway:
        port: 80        # サイドカー → 80 ゲートウェイ → 80 サービス (httpbin.org)
      httpsUpgrade:
        enabled: true   # enabled が false に設定されている場合、httpsUpgrade で指定されたポートは有効になりません。
        port: 443       # サイドカー → 80 ゲートウェイ → 443 サービス (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

例 3: 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 ルート
      hosts:
      - aliyun.com
      port:
        name: http
        number: 80
        protocol: HTTP
    - name: aliyun-https    # https ルート
      hosts:
      - aliyun.com
      port:
        name: https
        number: 443
        protocol: HTTPS
    - name: https-upgrade  # http から 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
重要

ドメイン名を使用して外部 TCP サービスにアクセスするには、ASM DNS プロキシ機能が有効になっていることを確認してください。詳細については、「ASM で DNS プロキシを使用する」をご参照ください。

フィールドの説明

Spec

フィールド

タイプ

必須

説明

byEgressGateway

ByEgressGateway

はい

外部サービスへのアクセスに使用されるエグレスゲートウェイ。

egressRules

EgressRule[]

はい

エグレストラフィックルール。

ByEgressGateway

フィールド

タイプ

必須

説明

name

string

はい

エグレスゲートウェイの名前。ゲートウェイ名は 32 文字を超えないようにすることをお勧めします。

  • Spec 配下の byEgressGateway フィールドでは、ポートではなく名前のみを指定する必要があります。

port

uint32

いいえ

エグレスゲートウェイのポート。

  • To の byEgressGateway フィールドでは、名前ではなくポートのみを指定する必要があります。

EgressRule

フィールド

タイプ

必須

説明

name

string

いいえ

ルールの名前。

from

From[]

はい

エグレス トラフィックの送信元 (リクエストの開始者)。

to

To[]

はい

エグレス トラフィックの宛先 (リクエストの外部ターゲット サービス)。

From

フィールド

タイプ

必須

説明

namespace

string

はい

リクエストを開始するサービスが存在するネームスペース。

workloadSelector

map[string]string

いいえ

ラベルに基づいてエグレストラフィックのソースサービスを選択するために使用されるフィルター。

To

フィールド

タイプ

必須

説明

name

string

はい

外部サービスの名前。

hosts

string[]

はい

外部サービスのドメイン名。複数のドメイン名を設定できますが、それらは同じサイトを指している必要があります。

port

Port

はい

外部サービスのポート。

byEgressGateway

ByEgressGateway

はい

エグレスゲートウェイの特定のポートを介して外部サービスにアクセスします。

  • ASM 1.24.6.45 以降、ASMEgressTrafficPolicy の To セクションのすべての byEgressGateway フィールドが空の場合、ASM はすべてのサービスにポートを自動的に割り当てます。

httpsUpgrade

HttpsUpgrade

いいえ

リクエストを HTTPS にスペックアップするかどうかを指定します。サービスが外部サービスにアクセスするために開始した HTTP リクエストは、エグレスゲートウェイによって HTTPS リクエストにスペックアップされます。

HttpsUpgrade

フィールド

タイプ

必須

説明

enabled

bool

はい

リクエストを HTTPS にスペックアップするかどうかを指定します。

port

uint32

はい

外部サービスの HTTPS ポート。

参照

ASMEgressTrafficPolicy を使用してエグレストラフィックを管理する