Server Load Balancer (SLB) イングレスは、2023 年 2 月 28 日をもって段階的に非推奨となりました。この日以降、Container Service for Kubernetes (ACK) Serverless では SLB イングレスに対するテクニカルサポートを提供しなくなります。また、ACK Serverless クラスター内では SLB イングレスコントローラーのインストールおよび管理ができなくなります。本トピックでは、既存の SLB イングレスを Application Load Balancer (ALB) イングレスへ移行する方法について説明します。
SLB イングレスから ALB イングレスへのスムーズな移行(ダウンタイムゼロの切り替え)は、両タイプの Ingress が異なる基盤実装を用いているため、サポートされていません。
ALB イングレスへ移行する理由
SLB はレイヤー 7 の機能が限定的です。HTTP 書き換え、リダイレクト、上書き、および速度制限をサポートしておらず、インスタンスの仕様を手動で設定する必要があります。ALB イングレスはこれらの課題を解決します:
-
HTTP ヘッダーまたは Cookie を基にした複雑なルーティングルール
-
SSL/TLS 証明書の自動検出
-
HTTP、HTTPS、および Quick UDP Internet Connections (QUIC) プロトコルのサポート
ALB と SLB の比較については、「SLB とは」をご参照ください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
-
少なくとも 1 つの SLB イングレスがデプロイ済みの ACK Serverless クラスター
-
クラスターに接続するよう設定済みの kubectl。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
-
クラスターと同じ Virtual Private Cloud (VPC) 内にあり、かつ異なる可用性ゾーンに配置された vSwitch を最低 2 つ確保(ALB で必須)
移行の概要
移行は以下の 3 段階で実施します。
-
既存の SLB イングレスと並行して ALB イングレスを作成し、正常動作を確認します。
-
DNS を ALB イングレスのエンドポイントを指すように変更します。
-
SLB イングレスを削除し、SLB イングレスコントローラーをアンインストールします。
ステップ 1:ALB イングレスの作成
-
ALB イングレスコントローラーをインストールします。詳細については、「ALB イングレスコントローラーの管理」をご参照ください。
-
ALB インスタンスをプロビジョニングするための
AlbConfigを作成します。-
以下の内容で
albconfig.yamlを作成します。apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-wz9e2usil7e5an1xi**** - vSwitchId: vsw-wz92lvykqj1siwvif**** listeners: - port: 80 protocol: HTTPvSwitchIdの値を、ご利用の vSwitch の ID に置き換えてください。異なる可用性ゾーンに配置された vSwitch を最低 2 つ指定する必要があります。また、両方ともクラスターと同じ VPC に属している必要があります。 -
マニフェストを適用します。
kubectl apply -f albconfig.yaml -
ALB インスタンスが作成されたことを確認します。
kubectl get albconfig alb-demo出力例は以下の通りです。
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb-demo alb-eeee6gtqbmrm19**** alb-eeee6gtqbmrm19****.cn-shenzhen.alb.aliyuncs.com 27sDNSNAMEの値をメモしてください。ステップ 2 で ALB イングレスのエンドポイントとして使用します。ALBIDが数分経過しても空欄のままの場合、ALB イングレスコントローラーのログを確認し、プロビジョニングエラーがないか確認してください。トラブルシューティングについては、「ALB イングレスコントローラーの管理」をご参照ください。
-
-
Ingress リソースを IngressClass を介して
AlbConfigと関連付けるためのIngressClassを作成します。-
以下の内容で
ingressclass.yamlを作成します。apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demoparameters.nameはAlbConfigの名前(本例ではalb-demo)と一致させる必要があります。 -
マニフェストを適用します。
kubectl apply -f ingressclass.yaml
-
-
ALB イングレスを作成します。
-
以下の内容で
albingress.yamlを作成します。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress-alb namespace: default spec: ingressClassName: alb rules: - host: demo.ingress.vip http: paths: - backend: service: name: nginx port: number: 80 path: / pathType: Prefixnameは既存の SLB イングレスの名前と重複しないようにする必要があります。ingressClassNameはIngressClassの名前(本例ではalb)と一致させる必要があります。 -
マニフェストを適用します。
kubectl apply -f albingress.yaml -
ALB イングレスのエンドポイントを確認します。
kubectl get ing出力例は以下の通りです。
NAME CLASS HOSTS ADDRESS PORTS AGE demo-ingress slb demo.ingress.vip 120.79.**.** 80 35m demo-ingress-alb alb demo.ingress.vip alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 80 46sADDRESSフィールドのdemo-ingress-albの値が、ALB イングレスのエンドポイントです。 -
ALB イングレス経由でアプリケーションにトラフィックが到達することを確認します。
curl -H "Host: demo.ingress.vip" http://alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com期待される出力(一部省略):
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ...
-
ステップ 2:DNS を ALB イングレスへ切り替える
ドメインの DNS レコードを更新し、SLB イングレスのエンドポイントから ALB イングレスのエンドポイントへ切り替えます。
-
Alibaba Cloud DNS コンソール にログインします。
-
ドメイン名解決 ページで、権威あるドメイン名 列のドメイン名をクリックします。
-
DNS 設定項目 ページで、編集 をクリックします(操作 列)。
-
DNS レコードの編集 パネルで、レコード値 を ALB イングレスのエンドポイント(例:
alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com)に設定し、OK をクリックします。 -
ドメインが ALB イングレスに解決されることを確認します。
demo.ingress.vipをブラウザで開き、「Welcome to nginx!」が表示されることを確認します。
ステップ 3:SLB イングレスの削除およびコントローラーのアンインストール
ALB イングレス経由でトラフィックが正常に流れることが確認できたら、SLB イングレスおよびそのコントローラーを削除します。
-
SLB イングレスを削除します。
-
クラスターの詳細ページ左側ナビゲーションウィンドウで、ネットワーク > Ingresses を選択します。
-
Ingresses ページ上部で、SLB イングレスが存在する名前空間を選択します。SLB イングレスを検索し、その他 > 削除 をクリックします(操作 列)。
-
確認のため、OK をクリックします。
-
-
SLB イングレスコントローラーをアンインストールします。
-
ACK コンソール にログインします。左側ナビゲーションウィンドウで、クラスター をクリックします。
-
クラスター ページで、ご利用のクラスター名をクリックします。左側パネルで、操作 > アドオン を選択します。
-
アドオン ページで、その他 タブをクリックします。SLB イングレスコントローラー を見つけ、アンインストール をクリックします。
-
確認のため、OK をクリックします。
-