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

Container Service for Kubernetes:ACK コンソール のマーケットプレイス ページにインストールされている ack-ingress-nginx のアップグレード

最終更新日:May 30, 2025

このトピックでは、Container Service for Kubernetes (ACK) コンソール のマーケットプレイス ページにインストールされている ack-ingress-nginx をアップグレードする方法について説明します。

背景情報

Kubernetes 1.24 では、Ingress API v1beta1 は非推奨となっています。 ack-ingress-nginx によって NGINX Ingress コントローラー 0.44.0 がインストールされている場合、コントローラーは Ingress API v1beta1 を使用します。 この場合、クラスタの Kubernetes バージョンを 1.24 にアップグレードした後、NGINX Ingress コントローラーは期待どおりに動作しません。

NGINX Ingress コントローラー 1.1.0 以後は、ack-ingress-nginx-v1 によってデプロイされます。 NGINX Ingress コントローラーが期待どおりに動作することを保証するために、ack-ingress-nginx を ack-ingress-nginx-v1 に置き換えることをお勧めします。

説明

このトピックは、ACK コンソール のアドオン ページからデプロイされた NGINX Ingress コントローラーには適用されません。 アドオン ページからデプロイされた NGINX Ingress コントローラーの管理方法の詳細については、「NGINX Ingress コントローラーを更新する」をご参照ください。

前提条件

  • Kubernetes 1.20 以後を実行する ACK クラスタが作成されている。

説明

チャートバージョン 4.0.17 以後 (ack-ingress-nginx-v1 1.8.0-aliyun.1 以後) は、ACK クラスタが Kubernetes 1.22 以後を実行している場合にのみ選択できます。 ACK クラスタが Kubernetes 1.20 を実行している場合は、チャートバージョン 4.0.16 (ack-ingress-nginx-v1 1.2.1-aliyun.1) を選択してください。

  • ACK コンソール のマーケットプレイス ページから、ack-ingress-nginx がクラスタにインストールされている。

手順 1: ack-ingress-nginx-v1 をインストールする

ACK コンソール のマーケットプレイス ページから ack-ingress-nginx-v1 をインストールする

ack-ingress-nginx をインストールすることでデプロイされた各 NGINX Ingress コントローラーに対して、ack-ingress-nginx-v1 をインストールします。 詳細については、「クラスタに複数の Ingress コントローラーをデプロイする」をご参照ください。

説明

ack-ingress-nginx-v1 の controller.ingressClassResource.name パラメーターの値を、ack-ingress-nginx の controller.ingressClass パラメーターの値に設定しないでください。 そうしないと、Ingress クラスの競合が原因で、NGINX Ingress コントローラーが期待どおりに動作しない可能性があります。

(オプション) SLB の仕様とパラメーターを変更する

ack-ingress-nginx で Server Load Balancer (SLB) の仕様またはパラメーターを変更した場合は、変更を ack-ingress-nginx-v1 に移行することができます。 これを行うには、ack-ingress-nginx-v1 の controller.service アノテーション (インターネット向け SLB インスタンスの場合) または controller.service.internal アノテーション (イントラネット SLB インスタンスの場合) を構成して、LoadBalancer サービスを構成します。 サービスアノテーションの構成方法の詳細については、「アノテーションを使用して CLB インスタンスを構成する」および「アノテーションを使用して NLB インスタンスを構成する」をご参照ください。

手順 2: 新しい Ingress を作成し、ack-ingress-nginx-v1 が期待どおりにトラフィックをルーティングできるかどうかをテストする

ack-ingress-nginx-v1 をインストールした後、元の Ingress の構成に基づいて新しい Ingress を作成します。 Ingress で指定されている Ingress クラスを変更します。 元の Ingress の例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx-intranet # 元の Ingress で指定されている Ingress クラスは nginx-intranet です。
spec:
  rules:
  - host: test-ingress.com
    http:
      paths:
      - path: /foo
        backend:
          service:
            name: web1-service
            port:
              number: 8080
        pathType: ImplementationSpecific
      - path: /bar
        backend:
          service:
            name: web1-service
            port:
              number: 8080
        pathType: ImplementationSpecific

新しい Ingress を作成します。

  • アノテーションを使用して Ingress クラスが指定されている場合は、Ingress クラスの名前を変更する必要がありますが、他のアノテーションは変更しないでください。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test-ingress-v1 # 新しい Ingress を作成します。
      namespace: default
      annotations:
        kubernetes.io/ingress.class: nginx-intranet-v1 # Ingress クラスの名前を、nginx-intranet-v1 で使用されている Ingress クラス名に変更します。 この例では、Ingress クラス名は nginx-intranet-v1 です。
    spec:
      rules:
      - host: test-ingress.com
        http:
          paths:
          - path: /foo
            backend:
              service:
                name: web1-service
                port:
                  number: 8080
            pathType: ImplementationSpecific
          - path: /bar
            backend:
              service:
                name: web1-service
                port:
                  number: 8080
            pathType: ImplementationSpecific
  • spec.ingressClassName パラメーターを使用して Ingress クラスが指定されている場合は、上記の手順を繰り返して新しい Ingress を作成し、新しい Ingress の spec.ingressClassName パラメーターの値を変更します。

新しい Ingress を作成した後、hosts ファイルを構成して、ドメイン名を新しい Classic Load Balancer (CLB) インスタンスの IP アドレスにマッピングできます。 次に、ack-ingress-nginx-v1 が期待どおりにトラフィックをルーティングできるかどうかをテストします。

手順 3: トラフィックを ack-ingress-nginx-v1 に切り替える

ack-ingress-nginx-v1 が期待どおりにトラフィックをルーティングできることを確認した後、DNS 解決設定を変更して、トラフィックを ack-ingress-nginx-v1 に切り替えます。

Alibaba Cloud DNS コンソール、または使用しているドメイン名の解決設定を構成できるコンソールにログインし、ドメイン名を新しい CLB インスタンスの IP アドレスにマッピングします。 DNS 解決設定の変更は、一定期間後に有効になります。 この期間中は、エラーが発生した場合に備えて、ビジネスに注意することをお勧めします。 コンテナーログとメトリックを表示して、スイッチオーバーの進行状況を監視できます。

次の手順

トラフィックが完全に ack-ingress-nginx-v1 に切り替えられ、ビジネスに期待どおりにアクセスできることを確認した後、ack-ingress-nginx をアンインストールします。 ACK コンソール にログインします。 クラスタを選択し、クラスタ詳細ページに移動します。 左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。 ack-ingress-nginx という名前の Helm リリースを見つけ、[アクション] 列の [削除] をクリックします。