Kubernetes v1.24.3 Upgrade Broke Ingress-Nginx – How to Fix

azurehelmkubernetesnginx-ingress

After upgrading our AKS kubernetes cluster to from v1.23.8 to v1.24.3 our ingress stopped working properly. No errors logged in events and the ingress-nginx pod does not report any errors on the console. Everything looks fine from within the cluster, but all ports for the public IP is closed externally.

Even curl'ing the web-apps that run in the cluster from within the cluster works fine.
It seems like it's just the opening of the ports externally that's broken.
Ingress-nginx is deployed via helm release (HR v4.2.5).

I have a feeling it must be some config for the ingress or controller that needs to be changed.

UPDATE: we did a new install of a plain AKS cluster and did helm install quickstart ingress-nginx/ingress-nginx in 1.23.8 (which works), 1.24.0 (which does not work) and in 1.24.3 (which does not work either).

Any ideas or pointers?

Best Answer

We found the issue.

For clusters v1.24.0 and up the health probes for the load balancer is set to HTTP and HTTPS instead of TCP. When we changed the health probes to use TCP it all worked again.

Created an issue for AKS on this: https://github.com/Azure/AKS/issues/3210

The proper fix was to add the following annotation to the nginx service (see link to AKS issue above):

values:
controller:
  service: 
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz
Related Topic