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リリースを見つけ、[操作] 列の [削除] をクリックします。