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

Alibaba Cloud Service Mesh:ASM リモートコントロールプレーンを使用したプッシュレイテンシの削減

最終更新日:Mar 11, 2026

データプレーンクラスターが Alibaba Cloud の外部 (別のクラウドプロバイダーやオンプレミスデータセンターなど) で実行されている場合、サイドカープロキシはインターネット経由で Alibaba Cloud Service Mesh (ASM) コントロールプレーンにアクセスする必要があります。Pod の数が増えるにつれて、ネットワーク接続と帯域幅の消費量が線形的に増加し、構成やサービスが頻繁に変更されるとプッシュレイテンシが増大します。ASM リモートコントロールプレーンは、外部クラスター内にローカルのコントロールプレーンインスタンスをデプロイすることでこの問題を解決します。これにより、サイドカープロキシは制約のあるネットワークリンクを介さず、ローカルで xDS 構成を受信できます。

仕組み

データプレーンクラスターが Alibaba Cloud の Virtual Private Cloud (VPC) 内で実行されている場合、サイドカープロキシは VPC ネットワークを通じてマネージド ASM コントロールプレーンに接続します。レイテンシは低く、構成のプッシュもスムーズなため、リモートコントロールプレーンは不要です。

データプレーンクラスターが Alibaba Cloud の外部で実行されている場合、状況は異なります。すべての Pod はインターネット経由でマネージドコントロールプレーンに接続し、接続数と帯域幅の使用量は Pod 数に比例して増加します。構成やサービスが頻繁に変更されると、プッシュレイテンシが増大します。

リモートコントロールプレーンは、外部クラスター内でコントロールプレーンインスタンスを実行することで、この問題に対処します。

Remote control plane architecture

リモートコントロールプレーンを有効にすると、以下のようになります。

  • xDS 構成は、クラスター内でローカルにサイドカープロキシへプッシュされます。

  • マネージド ASM コントロールプレーンと外部クラスターの間には、コントロールプレーンコンポーネントの更新とサービス検出データを伝送するための少数の接続のみが残ります。

  • 低レイテンシ、高帯域幅のネットワークリンクへの依存が大幅に軽減されます。

制限事項

リモートコントロールプレーンを有効にする前に、以下の制限事項を確認してください。

  • ASM kubeconfig を使用して ASM リソースを作成する。 リモートコントロールプレーンを有効にした後、ASM 関連のすべての Kubernetes リソースは、ASM インスタンスの kubeconfig を使用して作成してください。リモートクラスターの kubeconfig を使用すると、リソースが上書きされる可能性があります。

  • グローバルサービス検出が適用される。 マネージド ASM コントロールプレーンによって管理されるワークロードは、リモートコントロールプレーンによって管理されるサービスにアクセスできます。通信はデフォルトで mTLS を使用し、East-West ASM ゲートウェイがサポートされています。

  • まずデータプレーンの Kubernetes API アクセス機能を無効にする。 リモートコントロールプレーンは、[データプレーン上のクラスターの Kubernetes API を使用して Istio リソースにアクセスする] 機能と競合します。リモートコントロールプレーンを有効にする前に、この機能を無効にしてください。

前提条件

開始する前に、以下のものがあることを確認してください。

クラスターコンテキスト変数の設定

クラスターを切り替える際のエラーを避けるため、開始する前に各 kubeconfig コンテキストの環境変数を設定します。

export CTX_ASM=<kubeconfig-context-for-asm-instance>
export CTX_CLUSTER2=<kubeconfig-context-for-cluster-2>

プレースホルダーを実際の値に置き換えてください。

プレースホルダー説明
<kubeconfig-context-for-asm-instance>ご利用の ASM インスタンスの kubeconfig コンテキスト名asm-mesh-xxx
<kubeconfig-context-for-cluster-2>外部クラスターの kubeconfig コンテキスト名cluster-2-context

このガイドの以降のすべてのコマンドでは、これらの変数を使用します。

リモートコントロールプレーンの有効化

  1. ASMMeshConfig リソースを編集用に開きます。

       kubectl --context="${CTX_ASM}" edit ASMMeshConfig
  2. .spec の下に externalIstiodConfigurations セクションを追加します。<cluster-2-id> を cluster-2 の ClusterID に置き換えてください。

       apiVersion: istio.alibabacloud.com/v1beta1
       kind: ASMMeshConfig
       metadata:
         name: default
       spec:
         # ... 既存の構成 ...
         externalIstiodConfigurations:
           <cluster-2-id>:
             replicas: 2
             # オプション:リソースリクエストとリミットを指定します。
             # 構造は、標準の Kubernetes Pod のリソースフィールドと一致します。
             # 省略した場合、ASM はデフォルトのリソース設定を使用します。
    説明

    リモートコントロールプレーンを有効にすると、ターゲットクラスター内の ASM ゲートウェイが再起動します。続行する前に、トラフィックへの影響を評価してください。

テストアプリケーションのデプロイと検証

  1. sleephttpbin アプリケーションを cluster-2 にデプロイします。詳細については、「httpbin アプリケーションのデプロイ」をご参照ください。

  2. 両方の Pod がサイドカーインジェクションで実行されていることを確認します。期待される出力:READY 列の 2/2 は、各アプリケーションコンテナと一緒にサイドカープロキシがインジェクトされていることを示します。

       kubectl --context="${CTX_CLUSTER2}" get pod
       NAME                       READY   STATUS    RESTARTS   AGE
       httpbin-7df7fxxxxx-xxxxx   2/2     Running   0          3h15m
       sleep-6b7f9xxxxx-xxxxx     2/2     Running   0          3h15m
  3. sleep から httpbin にテストリクエストを送信します。期待される出力:ASCII ティーポット (HTTP 418) は、トラフィックがサイドカープロキシを通過し、リモートコントロールプレーンが構成を正しく提供していることを示します。

       kubectl --context="${CTX_CLUSTER2}" exec deploy/sleep -it -- curl httpbin:8000/status/418
       -=[ teapot ]=-
    
              _...._
            .'  _ _ `.
           | ."` ^ `". _,
           \_;`"---"`|//
             |       ;/
             \_     _/
               `"""`

クラスター間アクセスの設定

デフォルトでは、マネージド ASM コントロールプレーンによって管理されるワークロードは、リモートコントロールプレーンのサービスにアクセスできます。その逆は適用されません。つまり、リモートコントロールプレーン配下のサービスは、マネージドコントロールプレーン配下のサービスに到達できません。

要件に合ったオプションを選択してください。