# Kubernetes Ingress Not Working - "ingress class not found" / No Address in CI

> Fix a Kubernetes Ingress with no ADDRESS in CI - a missing or wrong ingressClassName, or no IngressClass at all, so no controller claims the Ingress and routes are never programmed.

Source: https://latchkey.dev/learn/kubernetes/k8s-ingress-class-not-found  
Updated: 2026-06-25

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.

## Diagnose it: read events, not just status

A deployment that never becomes ready has the reason in its events and in the pod state, not in the deployment status. Read both before changing the manifest.

```Terminal
kubectl rollout status deploy/<name> --timeout=120s
kubectl describe deploy/<name> | sed -n "/Events/,$p"
kubectl get pods -l app=<name> -o wide
kubectl describe pod <pod> | sed -n "/Events/,$p"
kubectl logs <pod> --previous --tail=50   # the crash before the restart
```

> `--previous` gives you the logs of the container that died, which is the one that explains a CrashLoopBackOff. The current container is usually still starting and tells you nothing.

## FAQ

### What causes Kubernetes ingress not working?

There are 2 common causes: no ingressclassname and no default class and class name does not match the controller. Modern controllers ignore Ingresses without a matching class unless one IngressClass is marked default.

### How do I fix Kubernetes ingress not working?

There are 2 fixes depending on which cause you have: list the available classes and the ingress class and set a class the controller serves. Work through them in order, since the first is the most common.

### What does Kubernetes ingress not working actually mean?

kubectl get ingress shows an empty ADDRESS, and traffic to the host 404s or never connects.

### How do I stop Kubernetes ingress not working happening again?

Always set ingressClassName explicitly to an installed class. The prevention section lists 3 changes that keep it from recurring.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
