Ingress-Nginx Controllerのアップグレード

はじめに

1624.org でhelmを使用してIngress-Nginx Controllerのインストールしています。

Kubernetesのアップグレードに伴い、こちらもアップグレードします。

現状整理

ingress-nginx-4.11.3 を使用しています。

$ helm list -A
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
cilium                  kube-system     4               2026-02-28 22:44:14.572991811 +0900 JST deployed        cilium-1.18.7                   1.18.7     
ingress-nginx           ingress-system  2               2024-12-28 20:06:15.445725916 +0900 JST deployed        ingress-nginx-4.11.3            1.11.3     
metallb                 metallb-system  2               2024-12-28 20:13:40.636524556 +0900 JST deployed        metallb-0.14.9                  v0.14.9    
metrics-server          metrics-server  2               2026-02-28 09:56:34.930551084 +0900 JST deployed        metrics-server-3.13.0           0.8.0      
rook-ceph               rook-ceph       1               2024-07-07 16:31:29.805143536 +0900 JST deployed        rook-ceph-v1.14.8               v1.14.8    
rook-ceph-cluster       rook-ceph       1               2024-07-07 17:01:51.829417353 +0900 JST deployed        rook-ceph-cluster-v1.14.8       v1.14.8    

これに対応するIngress-NGINX のバージョンは v1.11.3 です。

$ kubectl -n ingress-system get deploy ingress-nginx-controller -o jsonpath='{.spec.template.spec.containers[0].image}{"\n"}'
registry.k8s.io/ingress-nginx/controller:v1.11.3@sha256:d56f135b6462cfc476447cfe564b83a45e8bb7da2774963b00d12161112270b7

https://github.com/kubernetes/ingress-nginx によると、Kubernetesのバージョンは 1.30までの対応です。

$ helm search repo ingress-nginx --versions
NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
ingress-nginx/ingress-nginx     4.14.3          1.14.3          Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx     4.14.2          1.14.2          Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx     4.14.1          1.14.1          Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx     4.14.0          1.14.0          Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx     4.13.7          1.13.7          Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx     4.13.6          1.13.6          Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx     4.13.5          1.13.5          Ingress controller for Kubernetes using NGINX a...
・
・
・

最新のhelmチャート 4.14.3 (Ingress-NGINX のバージョンは v1.14.3)

アップグレード

helm upgrade ingress-nginx ingress-nginx/ingress-nginx --version 4.14.3 \
  -n ingress-system

実行結果

$ helm upgrade ingress-nginx ingress-nginx/ingress-nginx --version 4.14.3 \
  -n ingress-system
Release "ingress-nginx" has been upgraded. Happy Helming!
NAME: ingress-nginx
LAST DEPLOYED: Sun Mar  1 14:23:05 2026
NAMESPACE: ingress-system
STATUS: deployed
REVISION: 3
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the load balancer IP to be available.
You can watch the status by running 'kubectl get service --namespace ingress-system ingress-nginx-controller --output wide --watch'

An example Ingress that makes use of the controller:
  apiVersion: networking.k8s.io/v1
  kind: Ingress
  metadata:
    name: example
    namespace: foo
  spec:
    ingressClassName: nginx
    rules:
      - host: www.example.com
        http:
          paths:
            - pathType: Prefix
              backend:
                service:
                  name: exampleService
                  port:
                    number: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
      - hosts:
        - www.example.com
        secretName: example-tls

If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:

  apiVersion: v1
  kind: Secret
  metadata:
    name: example-tls
    namespace: foo
  data:
    tls.crt: <base64 encoded cert>
    tls.key: <base64 encoded key>
  type: kubernetes.io/tls

$ kubectl get service --namespace ingress-system ingress-nginx-controller --output wide --watch
NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE    SELECTOR
ingress-nginx-controller   LoadBalancer   10.110.78.190   192.168.10.62   80:31330/TCP,443:32369/TCP   594d   app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx

$ k get pod -n ingress-system
NAME                                        READY   STATUS    RESTARTS   AGE
ingress-nginx-controller-564b775c95-d9mnd   1/1     Running   0          78s

$ kubectl -n ingress-system get deploy ingress-nginx-controller -o jsonpath='{.spec.template.spec.containers[0].image}{"\n"}'
registry.k8s.io/ingress-nginx/controller:v1.14.3@sha256:82917be97c0939f6ada1717bb39aa7e66c229d6cfb10dcfc8f1bd42f9efe0f81
Copied title and URL