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

Alibaba Cloud Service Mesh:ALB と ASM イングレスゲートウェイの統合

最終更新日:Jun 22, 2026

Alibaba Cloud Service Mesh は、データプレーンで Terway ネットワークプラグインを使用する Container Service for Kubernetes (ACK) クラスターの Application Load Balancer (ALB) と統合します。この統合により、サービスガバナンスが簡素化され、サービス間の安全な認証済み通信が保証され、メッシュの可観測性が提供され、開発と運用保守のワークロードが削減されます。このトピックでは、ASM Service Mesh と ALB を統合する方法について説明します。

前提条件

  • ACK クラスターが ASM インスタンスに追加されており、ASM インスタンスと ACK クラスターが次の要件を満たしていること:

    • ASM インスタンス:Enterprise Edition。

    • ACK クラスター:

      • ネットワークプラグインタイプが Terway であること。

      • Cloud Controller Manager (CCM) コンポーネントのバージョンが v1.9.3.313-g748f81e-aliyun 以降であること。詳細については、「Cloud Controller Manager」をご参照ください。

      • ALB Ingress Controller コンポーネントがインストールされていること。詳細については、「コンポーネントの管理」をご参照ください。

  • デフォルトの名前空間で自動サイドカープロキシ注入が有効になっていること。詳細については、「自動インジェクションの有効化」をご参照ください。

  • イングレスゲートウェイが作成されており、CLB instance type パラメーターが Private Access に、Service Port[80] に設定されていること。詳細については、「イングレスゲートウェイの作成」をご参照ください。

ステップ 1:サンプルアプリケーションのデプロイ

データプレーンクラスターで次のコマンドを実行して、Bookinfo サンプルアプリケーションをデプロイします。詳細については、「ASM インスタンスに関連付けられたクラスターにアプリケーションをデプロイする」をご参照ください。

kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/platform/kube/bookinfo.yaml

ステップ 2:Istio リソースの作成

テスト目的で Gateway リソースと VirtualService を作成します。

  1. Gateway リソースを作成します。

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

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM ゲートウェイ] > [ゲートウェイ] を選択します。

    3. Gateway ページで、Create をクリックします。

      [基本情報] セクションで、[名前空間] に `default` を選択し、[名前] に `bookinfo-gateway` と入力します。[ゲートウェイに適用] セクションで、キーが `istio`、値が `ingressgateway` のラベルを追加します。[サービス] セクションで、[名前] に `http`、[ポート] に `80` と入力し、[プロトコル][HTTP] を選択します。その後、[作成] をクリックします。

    4. Gateway リソースの YAML ファイルを確認するには、Preview をクリックします。構成が正しいことを確認したら、OK をクリックします。次に、Create ページの下部にある Create をクリックします。

      YAML 詳細の表示

      apiVersion: networking.istio.io/v1beta1
      kind: Gateway
      metadata:
        name: bookinfo-gateway
        namespace: default
      spec:
        selector:
          istio: ingressgateway
        servers:
          - port:
              number: 80
              name: http
              protocol: HTTP
            hosts:
              - '*'
  2. VirtualService を作成し、ルーティングを設定します。

    1. ASM インスタンスの詳細ページで、左側のナビゲーションウィンドウから [トラフィック管理センター] > [VirtualService] を選択します。

    2. VirtualService ページで、Create をクリックして bookinfo-gateway の仮想サービスを設定します。

      [名前空間][default] に、[名前][bookinfo] に設定します。[すべてのサイドカーに適用] スイッチをオフにし、ゲートウェイルールに [bookinfo-gateway] を追加します。[HTTP ルート] セクションで、次の一致ルールを追加します:URI 完全一致 `/productpage`、URI プレフィックス一致 `/static`、URI 完全一致 `/login`、URI 完全一致 `/logout`、および URI プレフィックス一致 `/api/v1/products`。ルート宛先サービス名を [productpage] に、ポートを [9080] に設定します。その後、[作成] をクリックします。

    3. Create ページの下部で、Preview をクリックして YAML ファイルを表示します。構成が正しいことを確認したら、Submit をクリックします。次に、Create ページの下部で、Create をクリックします。

      YAML 詳細の表示

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: bookinfo
        namespace: default
      spec:
        gateways:
          - bookinfo-gateway
        hosts:
          - '*'
        http:
          - match:
              - uri:
                  exact: /productpage
              - uri:
                  prefix: /static
              - uri:
                  exact: /login
              - uri:
                  exact: /logout
              - uri:
                  prefix: /api/v1/products
            route:
              - destination:
                  host: productpage
                  port:
                    number: 9080
                              

ステップ 3:AlbConfig オブジェクトの作成

シナリオ 1:既存の ALB インスタンスの統合

  1. ALB コンソールにログインし、ALB インスタンス ID を取得します。

  2. 次の内容で alb-demo.yaml という名前のファイルを作成します。

    `config.id` をご利用の ALB インスタンス ID に置き換えます。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: default
    spec:
      config:
        id: alb-xxxxx 
        forceOverride: false
  3. 次のコマンドを実行して AlbConfig オブジェクトを作成します。

    kubectl apply -f alb-demo.yaml

シナリオ 2:新しい ALB インスタンスの統合

  1. 次の内容で alb-demo.yaml という名前のファイルを作成します。詳細については、「ALB Ingress を使用してサービスを公開する」をご参照ください。

    この例では、alb-demo という名前の ALB インスタンスが自動的に作成されます。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: default
    spec:
      config:
        name: alb-demo
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****

    パラメーター

    説明

    spec.config.name

    ALB インスタンスの名前。

    addressType

    (必須) ロードバランサーのアドレスタイプ。有効な値:

    • Internet (デフォルト):ロードバランサーはパブリック IP アドレスを持ちます。DNS レコードはパブリック IP アドレスに解決され、ロードバランサーはインターネット経由でアクセスできます。

    • Intranet:ロードバランサーはプライベート IP アドレスのみを持ちます。DNS レコードはプライベート IP アドレスに解決され、ロードバランサーはそれがデプロイされている VPC 内からのみアクセスできます。

    zoneMappings

    (必須) ALB Ingress の vSwitch ID。異なるアベイラビリティゾーンにある少なくとも 2 つの vSwitch ID を指定する必要があります。指定された vSwitch は、ALB がサポートするアベイラビリティゾーンにある必要があります。サポートされているリージョンとアベイラビリティゾーンについては、「ALB がサポートするリージョンとゾーン」をご参照ください。vSwitch の作成方法については、「vSwitch の作成と管理」をご参照ください。

  2. 次のコマンドを実行して AlbConfig オブジェクトを作成します。

     kubectl apply -f alb-demo.yaml

ステップ 4:IngressClass リソースの作成

  1. alb.yaml という名前のファイルを作成し、次の内容をコピーします。

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: default
        scope: Cluster
  2. 次のコマンドを実行して IngressClass リソースを作成します。

    kubectl apply -f alb.yaml

    期待される出力:

    ingressclass.networking.k8s.io/alb created

ステップ 5:Ingress リソースの作成

ASM イングレスゲートウェイのサービスは istio-system 名前空間で実行されます。データプレーンクラスター (ACK クラスター) の同じ istio-system 名前空間に Ingress リソースを作成する必要があります。ポートは、ASM イングレスゲートウェイ用に構成したポート 80 と一致している必要があります。

  1. asm-gateway-ingress.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: asm-gateway-ingress
      namespace: istio-system
    spec:
      ingressClassName: alb
      rules:
      - http:
          paths:
          - backend:
              service:
                name: istio-ingressgateway
                port:
                  number: 80
            path: /*
            pathType: ImplementationSpecific
                    
  2. 次のコマンドを実行して Ingress リソースを作成します。

    kubectl apply -f asm-gateway-ingress.yaml

ステップ 6:アクセスのテスト

  1. 次のコマンドを実行して Ingress アドレスを取得します。

    kubectl get ing -n istio-system

    期待される出力:

    NAME                  CLASS   HOSTS   ADDRESS                                               PORTS   AGE
    asm-gateway-ingress   alb     *       alb-xxxx.xxxx.alb.aliyuncs.com                        80      18h

    Ingress アドレスは alb-xxxx.xxxx.alb.aliyuncs.com です。

  2. ASM イングレスゲートウェイにアクセスします。

    • 方法 1:前のステップで取得した Ingress インスタンスのアドレスを使用して ASM ゲートウェイにアクセスします:http://alb-xxxx.xxxx.alb.aliyuncs.com/productpage

    • 方法 2:ALB コンソールにログインし、ALB インスタンスのパブリック IP アドレスまたはそれにバインドされたドメイン名を使用して ASM ゲートウェイにアクセスします。ALB コンソールのインスタンス詳細ページで、alb-demo ALB インスタンスの基本情報を表示します。下部のアベイラビリティゾーンセクションで、各アベイラビリティゾーンの EIP (Elastic IP Address) を確認できます。

関連ドキュメント

Terway ネットワークプラグインの使用