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

Alibaba Cloud Service Mesh:複数のイングレスゲートウェイ向けに Istio ゲートウェイを設定する

最終更新日:Mar 11, 2026

複数のイングレスゲートウェイが異なるクラシックロードバランサー (CLB) インスタンスのフロントエンドとして動作しているものの、同一のリスナー設定を必要とする場合、各ゲートウェイを個別に設定すると重複構成や構成ドリフトのリスクが生じます。Service Mesh (ASM) では、複数のイングレスゲートウェイデプロイメントに共通のラベルを割り当て、単一の Gateway リソースの spec.selector に同じラベルを設定できます。これにより、1 つの Istio ゲートウェイ構成で、該当するすべてのイングレスゲートウェイに適用できます。

本トピックでは、イングレスゲートウェイに共通ラベルを追加し、Gateway の selector を設定して、単一の Istio ゲートウェイ構成を複数のイングレスゲートウェイに適用する方法について説明します。

ゲートウェイセレクターの仕組み

Gateway リソースは、spec.selector を使用して、イングレスゲートウェイの Pod に付与されたラベルと照合します。Pod に一致するラベルが付与されているすべてのイングレスゲートウェイは、その Gateway 構成を適用されます。

たとえば、2 つのイングレスゲートウェイデプロイメントの両方に key1: value1 というラベルが付与されている場合、selector: {key1: value1} を指定した Gateway は、両方のイングレスゲートウェイに適用されます。

DNS A レコード (xxx.xxx.cn)
  |-- CLB インスタンス 1  -->  イングレスゲートウェイ 1  --\
  |                                              +-->  Gateway (selector: key1: value1)  -->  仮想サービス
  \-- CLB インスタンス 2  -->  イングレスゲートウェイ 2  --/
Gateway リソースは、プロキシが特定のポート (レイヤー 4-6) でリッスンするように設定するだけです。レイヤー 7 ルーティングルールは定義しません。バックエンドサービスにトラフィックをルーティングするには、ゲートウェイを仮想サービスにバインドする必要があります。リファレンスの詳細については、「Istio Gateway」と「VirtualService」をご参照ください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

ステップ 1:各イングレスゲートウェイに共通ラベルを追加する

Istio ゲートウェイを共有するすべてのイングレスゲートウェイに、同一のラベルを追加します。

  1. ASM コンソールにログインします。左側ナビゲーションウィンドウで、Service Mesh > メッシュ管理 を選択します。

  2. メッシュ管理 ページで、ASM インスタンスの名前をクリックします。

  3. 左側ナビゲーションウィンドウで、ASM ゲートウェイ > イングレスゲートウェイ を選択します。

  4. イングレスゲートウェイ ページで、最初のイングレスゲートウェイを見つけ、YAML をクリックします。

  5. 編集 ダイアログボックスで、spec の下に podLabels フィールドを追加し、OK をクリックします。

       ...
       spec:
         podLabels:
           key1: value1
       ...
  6. 同一の Istio ゲートウェイを共有する他のイングレスゲートウェイについても、手順 4~5 を繰り返します。

ラベルの確認

各イングレスゲートウェイの Pod に期待されるラベルが正しく付与されていることを確認するには、以下のコマンドを実行します。

kubectl get pods -n istio-system --show-labels | grep <ingress-gateway-name>

<ingress-gateway-name> は、ご利用のイングレスゲートウェイデプロイメントの名前に置き換えてください。出力結果のラベル列に key1=value1 が含まれていることを確認します。出力例:

ingress-gateway-1-xxx   1/1   Running   0   2d   app=istio-ingressgateway,key1=value1,...

ステップ 2:Gateway セレクターを設定する

Istio ゲートウェイを、label で指定されたイングレスゲートウェイに設定するには、spec.selector を同じ label に設定します。

  1. ASM インスタンスの詳細ページで、左側ナビゲーションウィンドウから ASM ゲートウェイ > ゲートウェイ を選択します。

  2. ゲートウェイ ページで、対象の Istio ゲートウェイを見つけ、操作 列の YAML をクリックします。

  3. 編集 ダイアログボックスで、selector フィールドをステップ 1 で追加したラベルと一致するように設定し、OK をクリックします。両方のイングレスゲートウェイに key1: value1 が付与されているため、この単一の Gateway リソースが両方のイングレスゲートウェイに適用されます。

       apiVersion: networking.istio.io/v1beta1
       kind: Gateway
       metadata:
         name: bookinfo-gateway
         namespace: default
       spec:
         selector:
           key1: value1
         servers:
           - hosts:
               - '*'
             port:
               name: http
               number: 80
               protocol: HTTP

Gateway のバインド確認

Gateway リソースが正しく設定されていることを確認するには、以下のコマンドを実行します。

kubectl get gateway bookinfo-gateway -n default -o yaml

spec.selectorkey1: value1 が表示され、spec.servers に期待されるポートおよびプロトコルがリストされていることを確認します。出力例:

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: bookinfo-gateway
  namespace: default
spec:
  selector:
    key1: value1
  servers:
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP

次のステップ

Gateway リソースはリスナーの設定のみを行います。トラフィックをバックエンドサービスにルーティングするには、このゲートウェイを参照する仮想サービスを作成します。詳細については、「仮想サービスの管理」をご参照ください。

Gateway およびイングレスゲートウェイの CRD フィールドの詳細については、「ASM ゲートウェイの CRD フィールド」をご参照ください。

関連トピック