Kubernetes Ingress Errors
404 default backend, missing TLS secrets, IngressClass and path matching.
Understanding Ingress errors
An Ingress failure is a routing failure, and there are only a few places it can break: the IngressClass is missing so no controller claims the resource, the path or host does not match, the backing Service has no endpoints, or the TLS secret is absent or in the wrong namespace. The "default backend - 404" page is the controller saying it received the request but found no rule for it.
How to debug Ingress errors
- Work backwards from the pod:
kubectl get endpoints <service>. If it is empty, the Service selector does not match any ready pod and no Ingress configuration will help. - Check that a controller has claimed the Ingress:
kubectl describe ingress <name>should show events and an assigned address. No address means no controller is watching that IngressClass. - Read the controller's own logs (
kubectl logs -n ingress-nginx deploy/ingress-nginx-controller). They log rejected configuration and certificate problems explicitly. - Remember TLS secrets must live in the same namespace as the Ingress. This is the single most common TLS mistake.
- Verify path type semantics:
Prefix,ExactandImplementationSpecificmatch differently, and regex behaviour varies between controllers.
Tools worth reaching for
kubectl describe ingresskubectl get endpointscontroller logscurl -H 'Host: …'openssl s_client -servername
All 20 Ingress errors
- AWS Load Balancer Controller: couldn't auto-discover subnets NewThe controller builds an ALB by finding subnets tagged for load balancers, and none in the cluster's VPC carry the…
- cert-manager: Failed to determine a valid solver configuration NewNone of the solvers on the Issuer matches the domains being requested, so cert-manager has no way to attempt a…
- cert-manager: Order is pending / challenge failed to propagate Newcert-manager created an ACME order but the challenge never validated. For HTTP-01 the challenge path is not reachable…
- Gateway API: HTTPRoute Accepted=False, reason NoMatchingParent NewThe HTTPRoute names a Gateway in parentRefs, but no listener on that Gateway will take it, so the route is ignored and…
- ingress-nginx: 400 The plain HTTP request was sent to HTTPS port NewThe controller is speaking plain HTTP to a backend that only accepts HTTPS, and the backend's own web server answers…
- ingress-nginx: failed calling webhook "validate.nginx.ingress.kubernetes.io" NewThe API server tried to ask the ingress-nginx admission webhook whether your Ingress is valid and could not reach it…
- ingress-nginx: host "example.com" and path "/" is already defined in ingress NewThe admission webhook rejected the Ingress because another Ingress, possibly in a different namespace, already claims…
- ingress-nginx: Service does not have any active Endpoint NewThe controller resolved the Ingress to a Service but the Service selects no ready Pods, so it serves the default…
- ingress-nginx: upstream timed out (110: Connection timed out) NewThe controller gave up waiting for the backend and returned 504 after its own timeout, which defaults to 60 seconds…
- Ingress: ADDRESS column stays empty and the host never resolves Newkubectl get ingress shows no address because no controller has claimed the object, so nothing ever programmes a load…
- Ingress: configuration-snippet annotation cannot be used Newingress-nginx 1.9 turned allow-snippet-annotations off by default after snippets were shown to let any namespace…
- Ingress: default backend - 404No Ingress rule matched the request, so it was routed to the default backend which returned 404. The host or path may…
- Ingress: path not matching any backendThe request path does not match any rule defined in the Ingress resource. May be a pathType (Prefix vs Exact) or regex…
- Ingress: spec.rules[0].http.paths[0].pathType: Required value Newnetworking.k8s.io/v1 made pathType mandatory on every path, where the old v1beta1 API filled it in for you. Manifests…
- Ingress: TLS secret not foundThe TLS secret referenced in the Ingress spec does not exist in the same namespace. HTTPS termination will fail.
- Ingress: too many redirects (redirect loop)An infinite redirect loop between the ingress controller and backend, usually caused by SSL redirect annotations…
- IngressClass not foundThe specified IngressClass does not exist or no ingress controller is installed that handles that class.
- Kubernetes Ingress Controller Fake Certificate served instead of yours Newingress-nginx serves its built-in self-signed certificate whenever it cannot match the request to a usable TLS secret…
- Kubernetes Ingress errorIngress controller cannot route traffic to the specified service, often due to misconfigured rules.
- Traefik: middleware "default-redirect@kubernetescrd" does not exist NewA router refers to a middleware by a name Traefik cannot find. With the Kubernetes CRD provider the full name is…
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 18Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 20Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 20Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 20OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 17Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 18NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- C++ 20Segfaults, linker errors, memory corruption and template deduction failures.
- Caching 20Cache stampedes, stale content, Varnish and CloudFront failures.
- CI/CD 18GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and…
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 20Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 20NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 18GenServer timeouts, supervision failures and Mix compilation problems.
- Email 20Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 19Validation, depth limits, N+1 queries and fragment problems.
- gRPC 17Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 18Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 20Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 20Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 18Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Performance 19GC pauses, thread pool starvation and event loop blocking.
- PHP 20Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 20nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 17Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 20Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 17Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 20Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 19Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 19S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- Svelte 20Store subscriptions, load functions and server/client boundaries.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 20VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- Web3 17Gas estimation, nonce management and reverted transactions.
- WebAssembly 17Compile errors, memory bounds and host binding mismatches.
- WebServer 20nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 20Installer failures, missing runtimes, update errors and permission problems.