このトピックでは、セルフマネージド 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 を参照してください。
手順 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インスタンスを再利用するにはどうすればよいですか?
CLB コンソールに移動し、目的の CLB インスタンスを見つけます。 CLB インスタンスの次の 2 つのラベル
kubernetes.do.not.delete
とack.aliyun.com
を削除します。セルフマネージド 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"