Challenges

Focused, hands-on DevOps and server-side problems with hints, feedback, and automated solution checks.

Challenge

Pull a Deployment's Image from a Private Registry

A freshly rolled out Deployment runs an image from the team's private container registry, but its Pods are stuck in ImagePullBackOff and the catalog page returns 503. Find out why and get the Pods running.

Challenge

Split a Deployment Evenly Across Two Zones

A storefront needs eight replicas, and the platform team wants them split down the middle between the two availability zones. An uneven split must be refused by the scheduler rather than quietly tolerated.

Challenge

Debug a Pod Stuck at 0/1 Ready Due to a Readiness Probe

A new intern learning about probes wrote a small Pod manifest. The exec command and the application are both correct, but the Pod never becomes Ready because one probe parameter is missing. Find it and add it.

Challenge

Pick and Deploy the Least Permissive NetworkPolicy

The security team left five NetworkPolicy files on the workstation. Only one of them lets the frontend reach the backend while granting nothing more. Identify it and deploy it, unchanged.

Challenge

Expose the Snake Game via TLS Ingress

A Snake game Deployment and ClusterIP Service are already running in the snake namespace. Create a Traefik Ingress that serves the game over HTTPS using an existing cert-manager-issued TLS Secret.

Challenge

Port-Forward a Kubernetes Service to localhost

A Deployment running a distroless Chainguard nginx image (cgr.dev/chainguard/nginx) is deployed in the namespace webapps, fronted by a ClusterIP Service. Port-forward that Service to localhost port 3333 on cplane-01, use curl to save the response body to /home/laborant/index.html, and verify the file is accessible and contains the expected content.

Challenge

Debug a Failing Kubernetes Job

A Job manifest at /home/laborant/batch-job.yaml is exiting with a non-zero exit status. The Job has limited retries configured. Inspect the cluster and the manifest to find the bug, fix it, and reapply.