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

Container Service for Kubernetes:ackコンソールのMarketplaceページからACK-ingress-nginxをack-ingress-nginx-v1に更新する

最終更新日:Nov 14, 2024

NGINX Ingressコントローラーをデプロイするには、Container Service for Kubernetes (ack) コンソールのMarketplaceページからACK-ingress-nginxまたはack-ingress-nginx-v1をインストールします。 このトピックでは、ackコンソールのMarketplaceページからACK-ingress-nginxをack-ingress-nginx-v1に手動で更新する方法について説明します。

前提条件

  • Kubernetes 1.20以降を実行するACKクラスターが作成されます。

説明

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

  • ack-ingress-nginxは、ACKコンソールのMarketplaceページからクラスターにインストールされます。

背景情報

Ingress API v1beta1はKubernetes 1.24で非推奨です。 その結果、以前のバージョンのNGINX Ingressコントローラーは、Kubernetes 1.24を実行するACKクラスターでは期待どおりに実行できません。

NGINX Ingressコントローラー0.44.0はIngress API v1beta1を使用します。 ack-Ingress-NGINXをインストールしてnginx ingressコントローラー0.44.0をクラスターにデプロイした場合、Kubernetesバージョンのクラスターを1.24に更新した後、NGINX Ingressコントローラーを期待どおりに実行できません。

テンプレートパラメータとの互換性を確保するため、NGINX Ingress controller 1.1.0以降はack-ingress-nginx-v1をインストールしてデプロイします。 NGINX Ingressコントローラーを1.1.0以降に更新するには、ack-ingress-nginx-v1を手動でインストールしてから、ack-ingress-nginxをアンインストールする必要があります。

説明

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

ステップ1: ack-ingress-nginx-v1のインストール

ACKコンソールのMarketplaceページからのack-ingress-nginx-v1のインストール

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

説明

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

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

ack-ingress-nginxでServer Load Balancer (SLB) の仕様またはパラメーターを変更した場合、変更をack-ingress-nginx-v1に移行することができます。 これを行うには、controller.service (インターネット接続SLBインスタンスの場合) またはcontroller.service.int (内部接続SLBインスタンスの場合) のアノテーションを設定して、LoadBalancerサービスを設定するack-ingress-nginx-v1にします。 アノテーションを使用してLoadBalancerサービスを構成する方法の詳細については、「CLBインスタンスを構成するためのサービスのYAMLファイルへのアノテーションの追加」をご参照ください。

ステップ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 # The Ingress class specified in the original Ingress is 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 # Create a new Ingress.
      namespace: default
      annotations:
        kubernetes.io/ingress.class: nginx-intranet-v1 # Change the name of the Ingress class to the Ingress class name used by nginx-intranet-v1. In this example, the Ingress class name is 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
  • Ingressクラスがspec.ingressClassNameパラメーターを使用して指定されている場合は、上記の手順を繰り返して新しい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コンソールにログインします。 クラスターを選択し、クラスターの詳細ページに移動します。 左側のナビゲーションウィンドウで、[アプリケーション] > [ヘルム] を選択します。 ack-ingress-nginxという名前のHelmリリースを見つけ、[操作] 列の [削除] をクリックします。