Challenge Easy Submissions: 1/1
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:
| Endpoint | Backend |
|---|---|
http://railway.local/ticket | ticket |
http://railway.local/booking | booking |
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