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

Extend kubectl with a Custom Image-Inspection Plugin

A helper script that lists every container image running in the cluster — along with its on-disk size and the workload that uses it — has been downloaded to cplane-01. Install it as a kubectl plugin named kubectl-images so that kubectl images works from any directory.

Submissions: 14/16
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: 13/15
Challenge,  Medium

Render and Install Argo CD with Helm, Skipping Pre-Installed CRDs

Add the official Argo CD Helm repository, then use helm template to render the Argo CD chart for a dedicated namespace while skipping the chart's bundled CRDs, since they are already installed in the cluster.

Submissions: 9/13
Challenge,  Medium

Exclude a Sidecar from VPA Using Per-Container Resource Policy

Configure a Vertical Pod Autoscaler (VPA) with a per-container resource policy that provides recommendations for the main container while excluding the sidecar container from any VPA-managed scaling.

Submissions: 21/25
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: 16/24
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: 31/54
Challenge,  Medium

Enable Per-Pod DNS Records for a Deployment

A service in the mesh namespace returns only a single IP during DNS lookup, preventing the peer-server pods from finding each other. Investigate why DNS does not return one address per pod and change the service configuration so that peer discovery works correctly.

Submissions: 25/30
Challenge,  Medium

Extend the Cluster with an Additional Service CIDR for the dev Team

Add a new, separate Service CIDR range for the dev team using the ServiceCIDR API object — without touching or restarting the cluster's default Service CIDR — then create a Service with an explicit ClusterIP inside that new range and verify DNS resolution.

Submissions: 18/22