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

Alibaba Cloud Service Mesh:セルフマネージド Istio イングレスゲートウェイから ASM イングレスゲートウェイへのトラフィック移行

最終更新日:Mar 12, 2026

セルフマネージド Istio のデプロイメントから Service Mesh (ASM) へ移行する際、イングレストラフィックを移行する必要があります。このガイドでは、重みベースのトラフィックシフトアプローチについて説明します。既存の Istio イングレスゲートウェイと新しい ASM イングレスゲートウェイの両方が同じ Classic Load Balancer (CLB) インスタンスを共有し、vServer グループの重みを調整することでトラフィック分割を制御します。

Migration traffic flow

前提条件

  • ASM インスタンスが作成され、ターゲットの Kubernetes クラスターがメッシュに追加されていること

  • セルフマネージド Istio イングレスゲートウェイが実行されている Kubernetes クラスターへの管理者アクセス権があること

  • ロードバランサーのラベルと vServer グループを管理するための CLB コンソールへのアクセス権があること

  • セルフマネージド Istio イングレスゲートウェイが正常に実行され、トラフィックを処理していること

トラフィックシフト戦略の選択

ASM イングレスゲートウェイにトラフィックをリダイレクトするには、2 つのオプションがあります。

戦略使用する状況仕組み
DNS ベースの切り替えDNS レコードを直接変更できますドメインの Domain Name System (DNS) レコードを更新し、ASM イングレスゲートウェイの IP アドレスを指すようにします。
重みベースのシフトDNS レコードを変更できない場合、または段階的で制御された移行が必要な場合両方のゲートウェイが CLB インスタンスを共有します。vServer グループの重みを調整して、トラフィックを段階的にシフトします。

このガイドでは、重みベースのシフトに焦点を当てています。DNS ベースの切り替えを使用する場合は、CLB 再利用設定をスキップし、ASM イングレスゲートウェイの作成後に DNS レコードを更新してください。

ASM イングレスゲートウェイの作成

セルフマネージド Istio イングレスゲートウェイと同じ Kubernetes クラスターに ASM イングレスゲートウェイを作成します。詳細については、「イングレスゲートウェイの作成」をご参照ください。

ゲートウェイを作成する際:

  • 一意の名前を使用します。ASM イングレスゲートウェイの名前は、既存の Istio イングレスゲートウェイの名前と異なる必要があります。区別するために -asm を追加します。例:ingressgateway-asm

  • 同じクラスターにデプロイします。 ステップ 3イングレスゲートウェイの作成トピックでは、[クラスター] パラメーターを、ソース Istio イングレスゲートウェイが配置されている Kubernetes クラスターに設定します。

既存の CLB インスタンスの再利用

両方のゲートウェイ間で CLB インスタンスを共有するには、ASM イングレスゲートウェイの YAML に次のサービスアノテーションを追加します。

アノテーション目的
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id再利用する CLB インスタンスを指定します。ソース Istio イングレスゲートウェイに関連付けられている CLB インスタンスの ID
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners既存のリスナーを上書きするかどうかを制御します。false (既存のリスナーを保持します)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-portvServer グループをポートにマッピングします。vServer グループ ID とポートをカンマ区切りで指定します (例: "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443")。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weightASM イングレスゲートウェイのトラフィックの重みを設定します。ビジネス要件に基づいて調整します。ルーティングルールが設定されていない場合、または例外が発生した場合は 0 に設定します。

serviceAnnotations 設定の例:

serviceAnnotations:
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxx"  # Replace with your CLB instance ID
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false'  # Preserve existing listeners
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:80"  # Replace with your vServer group ID
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60"  # Set to 0 when no routing rule is configured or exceptions occur
説明

LoadBalancer サービスタイプを使用して作成された CLB インスタンスの再利用の詳細については、このトピックの最後にある「よくある質問」をご参照ください。

ゲートウェイの検証

ASM イングレスゲートウェイの作成後、ゲートウェイ Pod が実行されていることを確認します。

kubectl get pods -n istio-system -l istio=ingressgateway-asm

期待される出力 (Pod 名と経過時間は異なります):

NAME                                    READY   STATUS    RESTARTS   AGE
ingressgateway-asm-5d8f7b9c4f-xxxxx    1/1     Running   0          1m

Istio 構成の移行

Istio ルーティング構成を ASM イングレスゲートウェイに移行します。最終的に一貫性のある構成伝播によって引き起こされる 503 エラーを防ぐため、以下のメイクビフォーブレイク方式に従ってください。

1. DestinationRule リソースを最初に適用

ASM イングレスゲートウェイが必要とする DestinationRule 構成を適用します。続行する前に、構成が Envoy サイドカーに伝播するまで数秒間待ちます。

2. Gateway セレクターの更新

Istio Gateway の YAML で、selector.istio を ASM イングレスゲートウェイの名前に一致するように更新します。

spec:
  selector:
    istio: ingressgateway-asm

3. VirtualService 構成の適用

Gateway セレクターの更新と DestinationRule 構成が伝播した後、ASM イングレスゲートウェイを参照する VirtualService 構成を適用します。

重要

新しいルーティングルールを追加する際は、常に VirtualService の前に DestinationRule を適用してください。VirtualService が DestinationRule にまだ存在しないサブセットを参照している場合、DestinationRule が伝播するまで、そのサブセットへのトラフィックは 503 エラーを返します。

構成の検証

ASM イングレスゲートウェイが期待されるルーティング構成を受信したことを確認します。

kubectl get gateway,virtualservice,destinationrule -n istio-system

すべての Gateway、VirtualService、および DestinationRule リソースがリストされ、正しいゲートウェイ名を参照していることを確認します。

トラフィックの段階的シフト

構成が整ったら、CLB の重みを調整して、セルフマネージド Istio イングレスゲートウェイから ASM イングレスゲートウェイにトラフィックをシフトします。

  1. ASM イングレスゲートウェイの重みを 10 のような小さい値に設定し、トラフィックの一部をルーティングします。ASM イングレスゲートウェイ Service の service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight アノテーションを編集します。

  2. ASM イングレスゲートウェイを介してトラフィックが正しく流れることを確認します。アプリケーションログ、レスポンスコード、およびレイテンシーを確認します。

       kubectl logs -n istio-system -l istio=ingressgateway-asm --tail=50
  3. ASM イングレスゲートウェイの重みを徐々に増やし (例: 10 -> 30 -> 60 -> 100)、それに応じてソース Istio イングレスゲートウェイの重みを減らします。

  4. すべてのトラフィックが ASM イングレスゲートウェイを介してルーティングされた後、ソース Istio イングレスゲートウェイの重みを 0 に設定します。

重みの調整方法

ゲートウェイ操作
ソース Istio イングレスゲートウェイその Kubernetes Service の service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight アノテーションを編集します。
ASM イングレスゲートウェイASM イングレスゲートウェイ Service の service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight アノテーションを編集します。

ロールバック

移行中に ASM イングレスゲートウェイが期待どおりに動作しない場合:

  1. ASM イングレスゲートウェイの重みを 0 に設定し、トラフィックの送信を停止します。

  2. ソース Istio イングレスゲートウェイの重みを 100 に戻します。

  3. Gateway、VirtualService、および DestinationRule の構成を元の Istio イングレスゲートウェイを指すように元に戻します。サブセットを削除する場合は、まず VirtualService を更新し、数秒待ってから DestinationRule を更新します。

よくある質問:Istio イングレスゲートウェイ Service によって自動作成された CLB インスタンスの再利用

セルフマネージド Istio イングレスゲートウェイ用に Service が作成されたときに CLB インスタンスが自動的に作成された場合、ASM イングレスゲートウェイで再利用する前に、次の手順を実行します。

  1. CLB コンソールを開き、CLB インスタンスを見つけます。

  2. CLB インスタンスから次の 2 つのラベルを削除します。

    • kubernetes.do.not.delete

    • ack.aliyun.com

  3. セルフマネージド Istio イングレスゲートウェイの Service に次のアノテーションを追加します。次のプレースホルダーを実際の値に置き換えてください。

    プレースホルダー説明
    <your-clb-instance-id>CLB インスタンスの IDlb-bp1abc2defg
    <your-vserver-group-id>vServer グループの IDrsp-bp1abc3defg
    <port>リスナーポート番号80
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "false"
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: <your-clb-instance-id>
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: <your-vserver-group-id>:<port>
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100"