Challenge Easy

Troubleshoot an Ingress That Returns 503 Service Unavailable

A railway app publishes two endpoints through an Ingress, and both return 503. Find out why and make both endpoints answer again.

Scenario

The railway app in the railway namespace has two services, ticket and booking. An Ingress publishes them on one host:

EndpointBackend
http://railway.local/ticketticket
http://railway.local/bookingbooking

Both endpoints fail. From cplane-01:

curl -s -i http://railway.local/ticket
HTTP/1.1 503 Service Unavailable
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Mon, 12 Oct 2026 08:08:49 GMT
Content-Length: 20

no available server
curl -s -i http://railway.local/booking
HTTP/1.1 503 Service Unavailable
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Mon, 12 Oct 2026 08:08:49 GMT
Content-Length: 20

no available server

The Pods are Running, but the app is not reachable.

The manifests the team applied are on cplane-01:

/home/laborant/railway/
├── booking-deployment.yaml
├── configmaps.yaml          # do not change
├── ingress.yaml             # do not change
├── services.yaml            # do not change
└── ticket-deployment.yaml

Task

Make both endpoints answer with HTTP 200. Correct the manifests in /home/laborant/railway/ and apply them.

Important

Do not change the ConfigMaps, the Services or the Ingress. Do not remove anything from the Deployments: fix what is wrong.


Hint 1 | Where the request stops

Follow the request from the Ingress to the Pods. A Pod that is Running does not always receive traffic:

kubectl get pods -n <namespace>
kubectl get endpointslices -n <namespace>
kubectl describe pod <pod-name> -n <namespace>
Hint 2 | What the application really serves

The nginx configuration of each app is in a ConfigMap. Compare what it serves with what Kubernetes asks it for:

kubectl get configmap <name> -n <namespace> -o yaml

⚒ Test Cases