Challenges

Focused, hands-on problems for sharpening your DevOps and server-side skills. Some teach specific concepts while others mirror real-world scenarios. Every challenge includes hints, feedback, and automated solution checks.

Collection
Category
Difficulty
Challenge,  Medium

Grant Read-Only Access to a Developer Using RBAC Role and RoleBinding

A developer named siddhi requires read-only access to specific resources in the production namespace. Create a Role and RoleBinding to grant the minimum required permissions without any write access.

Submissions: 20/21
Challenge,  Medium

Mount Only the Required ConfigMap Keys as Files to Run a Node.js Application

A Deployment is failing because application configuration is missing. Mount only specific keys from an existing ConfigMap as files inside the Pod at the correct path so the application can start successfully.

Submissions: 21/48
Challenge,  Easy

Access the Kubernetes API Server via kubectl proxy

Use kubectl proxy to open a local, already authenticated HTTP endpoint to the Kubernetes API server, then use curl to list every Secret in the gliese-581 namespace and save the raw JSON response to /home/laborant/secret-list.json.

Submissions: 22/26
Challenge,  Easy

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.

Submissions: 20/26
Challenge,  Easy

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.

Submissions: 11/13
Challenge,  Medium

Provision Ephemeral Storage for a Pod Using a Generic Ephemeral Volume

Create a Pod that uses a generic ephemeral volume backed by a dynamic StorageClass. Unlike emptyDir, ephemeral volumes are provisioned as PersistentVolumeClaims and support storage requests and access modes.

Submissions: 9/9
Challenge,  Medium

Inject a Config File Without Overwriting the Image's Existing Directory

A webapp deployment in the prod namespace is stuck in CrashLoopBackOff. The application's startup probe checks that its existing config directory is intact before the container is marked healthy. Fix the deployment so configuration is injected correctly and the pod reaches Running state with its health check endpoint responding on port 8080.

Submissions: 15/23
Challenge,  Medium

Reclaim a Retained PV with a New PVC and Restore a Lost MariaDB Database

A MariaDB deployment and its PVC were accidentally deleted. The PersistentVolume survived due to its Retain policy. Restore the database by rebinding the existing PV without losing any data.

Submissions: 15/18
Challenge,  Medium

Configure Health Probes and Graceful Shutdown for a Kubernetes Deployment

A deployment is running without health probes or graceful shutdown configuration. Add startup, liveness, and readiness probes plus a preStop hook and terminationGracePeriodSeconds to make it ready for real traffic.

Submissions: 30/53