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

Container Service for Kubernetes:SLB イングレスから ALB イングレスへの移行

最終更新日:Mar 27, 2026

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 とは」をご参照ください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

移行の概要

Migration overview diagram

移行は以下の 3 段階で実施します。

  1. 既存の SLB イングレスと並行して ALB イングレスを作成し、正常動作を確認します。

  2. DNS を ALB イングレスのエンドポイントを指すように変更します。

  3. SLB イングレスを削除し、SLB イングレスコントローラーをアンインストールします。

移行の例

次の例では、ドメイン demo.ingress.vip のトラフィックをルーティングする SLB Ingress を nginx サービスに移行します。

2 つの Ingress マニフェストの主な違いは ingressClassName であり、slbalb に変更します。ALB イングレスの名前は SLB イングレスと重複しないようにする必要があります。ALB イングレスマニフェストを適用する前に、ステップ 1 で説明する AlbConfig および IngressClass リソースを作成しておく必要があります。

移行前(SLB イングレス):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ingress
  namespace: default
spec:
  ingressClassName: slb
  rules:
    - host: demo.ingress.vip
      http:
        paths:
          - backend:
              service:
                name: nginx
                port:
                  number: 80
            path: /
            pathType: Prefix

移行後(ALB イングレス):

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

ステップ 1:ALB イングレスの作成

  1. ALB イングレスコントローラーをインストールします。詳細については、「ALB イングレスコントローラーの管理」をご参照ください。

  2. ALB インスタンスをプロビジョニングするための AlbConfig を作成します。

    1. 以下の内容で 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: HTTP

      vSwitchId の値を、ご利用の vSwitch の ID に置き換えてください。異なる可用性ゾーンに配置された vSwitch を最低 2 つ指定する必要があります。また、両方ともクラスターと同じ VPC に属している必要があります。

    2. マニフェストを適用します。

      kubectl apply -f albconfig.yaml
    3. ALB インスタンスが作成されたことを確認します。

      kubectl get albconfig alb-demo

      出力例は以下の通りです。

      NAME       ALBID                    DNSNAME                                               PORT&PROTOCOL   CERTID   AGE
      alb-demo   alb-eeee6gtqbmrm19****   alb-eeee6gtqbmrm19****.cn-shenzhen.alb.aliyuncs.com                            27s

      DNSNAME の値をメモしてください。ステップ 2 で ALB イングレスのエンドポイントとして使用します。ALBID が数分経過しても空欄のままの場合、ALB イングレスコントローラーのログを確認し、プロビジョニングエラーがないか確認してください。トラブルシューティングについては、「ALB イングレスコントローラーの管理」をご参照ください。

  3. Ingress リソースを IngressClass を介して AlbConfig と関連付けるための IngressClass を作成します。

    1. 以下の内容で 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-demo

      parameters.nameAlbConfig の名前(本例では alb-demo)と一致させる必要があります。

    2. マニフェストを適用します。

      kubectl apply -f ingressclass.yaml
  4. ALB イングレスを作成します。

    1. 以下の内容で 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 は既存の SLB イングレスの名前と重複しないようにする必要があります。ingressClassNameIngressClass の名前(本例では alb)と一致させる必要があります。

    2. マニフェストを適用します。

      kubectl apply -f albingress.yaml
    3. 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      46s

      ADDRESS フィールドの demo-ingress-alb の値が、ALB イングレスのエンドポイントです。

    4. 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 イングレスのエンドポイントへ切り替えます。

  1. Alibaba Cloud DNS コンソール にログインします。

  2. ドメイン名解決 ページで、権威あるドメイン名 列のドメイン名をクリックします。

  3. DNS 設定項目 ページで、編集 をクリックします(操作 列)。

  4. DNS レコードの編集 パネルで、レコード値 を ALB イングレスのエンドポイント(例:alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com)に設定し、OK をクリックします。

  5. ドメインが ALB イングレスに解決されることを確認します。demo.ingress.vip をブラウザで開き、「Welcome to nginx!」が表示されることを確認します。

    Nginx welcome page

ステップ 3:SLB イングレスの削除およびコントローラーのアンインストール

ALB イングレス経由でトラフィックが正常に流れることが確認できたら、SLB イングレスおよびそのコントローラーを削除します。

  1. SLB イングレスを削除します。

    1. クラスターの詳細ページ左側ナビゲーションウィンドウで、ネットワークIngresses を選択します。

    2. Ingresses ページ上部で、SLB イングレスが存在する名前空間を選択します。SLB イングレスを検索し、その他削除 をクリックします(操作 列)。

    3. 確認のため、OK をクリックします。

  2. SLB イングレスコントローラーをアンインストールします。

    1. ACK コンソール にログインします。左側ナビゲーションウィンドウで、クラスター をクリックします。

    2. クラスター ページで、ご利用のクラスター名をクリックします。左側パネルで、操作アドオン を選択します。

    3. アドオン ページで、その他 タブをクリックします。SLB イングレスコントローラー を見つけ、アンインストール をクリックします。

    4. 確認のため、OK をクリックします。

次のステップ