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

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

最終更新日:Jan 14, 2025

このトピックでは、セルフマネージド Istioイングレスゲートウェイから Service Mesh(ASM)イングレスゲートウェイにトラフィックを移行する方法について説明します。

移行ソリューションのトラフィックフロー

迁移方案

手順 1:ASMインスタンスのイングレスゲートウェイを作成する

詳細については、「イングレスゲートウェイの作成」をご参照ください。

ASMイングレスゲートウェイを作成する際は、以下の点に注意してください。

  • ASMイングレスゲートウェイの名前は、既存の Istioイングレスゲートウェイの名前とは異なる必要があります。 ASMイングレスゲートウェイの名前に -asm サフィックスを追加して、ASMイングレスゲートウェイを既存の Istioイングレスゲートウェイと区別することができます。 たとえば、ASMイングレスゲートウェイに ingressgateway-asm という名前を付けることができます。

  • イングレスゲートウェイの作成 トピックの手順 3で、クラスタ パラメータをソース Istioイングレスゲートウェイが存在する Kubernetesクラスタに設定します。

  • ドメイン名のドメインネームシステム(DNS)レコードを ASMイングレスゲートウェイの IPアドレスに変更します。 ドメイン名の DNSレコードを変更できない場合は、ソースイングレスゲートウェイとデスティネーションイングレスゲートウェイの重みを調整することで、トラフィックを徐々に移行できます。 この場合、ASMイングレスゲートウェイは、ソース Istioイングレスゲートウェイに関連付けられているクラシックロードバランサ(CLB)インスタンスを再利用する必要があります。 前の図に示すように、ASMイングレスゲートウェイは、ソース Istioイングレスゲートウェイに関連付けられている CLBインスタンスを再利用します。

    説明

    LoadBalancer サービス タイプを使用して作成された CLBインスタンスの再利用の詳細については、このトピックの FAQ を参照してください。

CLB インスタンスの再利用に関する注意事項を表示するには展開します

Istio ゲートウェイの YAML ファイルを使用して ASM イングレスゲートウェイを作成する場合、既存の CLB インスタンスを再利用する必要がある場合は、次の点に注意してください。

  • YAML ファイルの serviceAnnotations パラメータの CLB インスタンスに関連する構成を編集します。

  • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: 再利用する CLB インスタンスを指定します。 CLB インスタンスは、ソース Istio イングレスゲートウェイに関連付けられています。

  • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: CLB インスタンスの既存のリスナーを上書きするかどうかを指定します。 値を false に設定します。

  • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: 再利用する CLB インスタンスの vServer グループを指定します。 複数のポートと vServer グループはコンマ (,) で区切ります。 例: "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443"

  • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: ASM イングレスゲートウェイの重みを指定します。 ビジネス要件に基づいて重みを調整できます。 ASM イングレスゲートウェイにルーティングルールが構成されていない場合、または例外が発生した場合、重みを 0 に設定できます。 重みを 0 に設定すると、CLB インスタンスは ASM イングレスゲートウェイにトラフィックを転送しません。

サービスアノテーションの構成例:

serviceAnnotations:
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxx"  // lb-xxxxx を CLB コンソールで作成した CLB インスタンスの ID に置き換えます。
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false'  // Istio ゲートウェイではデフォルトで既存の CLB リスナーが上書きされるため、値を false に設定します。
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:80"   // ${YOUR_VGROUP_ID} を CLB インスタンスの vServer グループの ID に置き換えます。
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60" // 重みを 0 に設定すると、ASM イングレスゲートウェイはトラフィックを受信しなくなります。

手順 2:構成を移行する

  • イングレスゲートウェイの構成を移行するには、YAML ファイルで selector.istio の値を ASMイングレスゲートウェイの名前に変更します。 YAML ファイルの例:

    spec:
      selector:
        istio: ingressgateway-asm
  • VirtualService や DestinationRule などの他の構成を移行します。

手順 3:トラフィックを移行する

サービスアノテーションを変更して、ソースイングレスゲートウェイとデスティネーションイングレスゲートウェイの重みを調整します。 まず、ASMイングレスゲートウェイの重みを 10 などの小さい値に設定し、トラフィックフローが期待どおりであるかどうかを確認します。 次に、すべてのトラフィックが ASMイングレスゲートウェイにルーティングされるまで、重みを徐々に増やします。

重みを調整する方法:

  • ソース Istioイングレスゲートウェイの重みを調整するには、対応するサービスの service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight アノテーションを編集します。

  • ASMイングレスゲートウェイの重みを調整するには、ASMイングレスゲートウェイの service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight サービスアノテーションを編集します。

FAQ:セルフマネージド Istioイングレスゲートウェイのサービスを作成したときに CLBインスタンスが自動的に作成された場合、ASMイングレスゲートウェイで CLBインスタンスを再利用するにはどうすればよいですか?

  1. CLB コンソールに移動し、目的の CLB インスタンスを見つけます。 CLB インスタンスの次の 2 つのラベル kubernetes.do.not.deleteack.aliyun.com を削除します。

  2. セルフマネージド Istioイングレスゲートウェイの対応するサービスに次のアノテーションを追加します。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "false"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${CLB インスタンスの ID}
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: ${vServer グループの ID}:${ポート番号}
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100"