2023 年 2 月 28 日より、Container Service for Kubernetes (ACK) Serverless では SLB Ingress が廃止されました。クラスター経由で SLB Ingress Controller アドオンをインストールまたは管理することができなくなり、SLB Ingress のサポートは終了します。速やかに SLB Ingress から ALB Ingress へ移行してください。このトピックでは、ALB Ingress の作成、DNS トラフィックの切り替え、および SLB Ingress の削除について説明します。
背景情報
SLB はレイヤー 7 の機能が限定的で、HTTP ヘッダー書き換え、リダイレクト、URL 書き換え、レート制限などの機能をサポートしておらず、インスタンス仕様を手動で管理する必要があります。ALB Ingress は、より強力な Ingress トラフィック管理機能を持つレイヤー 7 ゲートウェイです。
ALB Ingress は Alibaba Cloud Application Load Balancer (ALB) を使用します。ヘッダーおよび Cookie ベースのルーティング、証明書の自動検出、HTTP、HTTPS、QUIC をサポートし、クラウドネイティブアプリケーションのレイヤー 7 トラフィックをより適切に処理します。ALB と SLB の機能比較については、「SLB 製品ファミリーの概要」をご参照ください。
移行プロセス
移行例
この例では、エンドポイントが demo.ingress.vip に解決される Ingress リソースを使用します。
ブラウザのアドレスバーに demo.ingress.vip と入力すると、Welcome to nginx! が表示されます。
ステップ 1:ALB Ingress の作成
-
「ALB Ingress controller の管理」に従って、ALB Ingress Controller アドオンをインストールします。
-
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: HTTPzoneMappings:ALB Ingress 用の vSwitch ID です。クラスターと同じ VPC 内にあり、かつ異なるゾーンに属する vSwitch を少なくとも 2 つ指定してください。
-
AlbConfig を作成します。
kubectl apply -f albconfig.yaml -
ALB インスタンスが作成されたことを確認します。
kubectl get albconfig <AlbConfig-name>出力例:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb-demo alb-eeee6gtqbmrm19**** alb-eeee6gtqbmrm19****.cn-shenzhen.alb.aliyuncs.com 27s
-
-
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の名前です。 -
IngressClass を作成します。
kubectl apply -f ingressclass.yaml
-
-
ALB Ingress を作成します。
-
次の内容で 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: Prefix-
name:Ingress の名前です。SLB Ingress とは異なる名前にしてください。
-
ingressClassName:IngressClass の名前です。
-
-
ALB Ingress を作成します。
kubectl apply -f albingress.yaml -
ALB Ingress のエンドポイントを取得します。
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 10m 46s出力から ALB Ingress のエンドポイント (例:
alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com) を控えてください。 -
ALB Ingress を介して Nginx アプリケーションにアクセスします。
curl -H "Host: demo.ingress.vip" http://alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com出力例:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> .............
-
ステップ 2:ALB Ingress へのトラフィック切り替え
ALB Ingress を介してトラフィックをルーティングするには、demo.ingress.vip の DNS レコードを更新し、SLB エンドポイントではなく ALB エンドポイントを指すように設定します。
-
Alibaba Cloud DNS コンソールにログインします。
-
ドメイン名の設定 ページで、すべてのドメイン名 タブのドメイン名をクリックします。
-
解決設定 ページで、対象の DNS レコードを見つけ、操作 列の 変更 をクリックします。
-
Modify Record ダイアログボックスで、レコード値 を ALB Ingress エンドポイント (例:
alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com) に設定し、OK をクリックします。 -
ブラウザのアドレスバーに demo.ingress.vip と入力します。
ブラウザに Welcome to nginx! が表示され、ALB Ingress を介して Nginx にアクセスできることと、SLB Ingress から ALB Ingress への切り替えが成功したことを確認できます。
ステップ 3:SLB Ingress の削除
-
SLB Ingress を削除します。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
-
Ingress ページで、適切な 名前空間を選択して SLB Ingress を探し、操作 列で を選択します。
-
ダイアログボックスで、OK をクリックします。
-
SLB Ingress Controller アドオンをアンインストールします。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
-
アドオン管理 ページで、その他 タブを開き、SLB Ingress controller を見つけて、アンインストール をクリックします。
-
ダイアログボックスで、OK をクリックします。
よくある質問
SLB Ingress から ALB Ingress へのシームレスな移行は可能ですか。
いいえ。ALB と SLB は異なるロードバランサータイプであるため、インプレース移行はサポートされていません。