Kubernetes Ingress Not Working - "ingress class not found" / No Address in CI
An Ingress is only acted on by a controller that owns its class. With no ingressClassName (and no default IngressClass), or a class no installed controller serves, nothing claims the Ingress - it gets no address and routes nowhere.
What this error means
kubectl get ingress shows an empty ADDRESS, and traffic to the host 404s or never connects. kubectl describe ingress shows no controller events, or the controller logs ingress class "x" is not found.
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
api <none> api.example 80 8m
# controller log: ignoring ingress api: no IngressClass / class "nginx" not foundCommon causes
No ingressClassName and no default class
Modern controllers ignore Ingresses without a matching class unless one IngressClass is marked default. An Ingress with no class and no default is claimed by nobody.
Class name does not match the controller
A ingressClassName: nginx with no nginx IngressClass installed (or a different controller’s class) means no controller owns it.
How to fix it
List the available classes and the Ingress class
kubectl get ingressclass
kubectl get ingress <name> -o jsonpath='{.spec.ingressClassName}'; echoSet a class the controller serves
Reference an existing IngressClass (or mark one default), then confirm the Ingress gets an address.
spec:
ingressClassName: nginx # must match an installed IngressClass
# or mark one default:
# kubectl annotate ingressclass nginx ingressclass.kubernetes.io/is-default-class=trueHow to prevent it
- Always set
ingressClassNameexplicitly to an installed class. - Mark exactly one IngressClass default if you rely on the default behavior.
- Verify the Ingress receives an ADDRESS as part of a deploy check.