Skip to content
ckad-dojo: a local CKAD exam simulator

ckad-dojo: a local CKAD exam simulator

by Xavier GUERET · 4 min read
Kubernetes CKAD Python Bash Open Source

The starting point

When I started preparing for the CKAD certification, I quickly noticed a gap: there wasn’t really a local simulator that replicated real exam conditions. Online platforms are often paid, time-limited, and most importantly you can’t just relaunch them at will to work on your weak spots.

What I wanted was a tool I could run on my local cluster, with a real 2-hour timer, questions that set up their own Kubernetes environment, and automatic scoring to know exactly where I stand. So I built it.

What ckad-dojo is

ckad-dojo is a CKAD exam simulator that runs entirely locally. You launch a command, it deploys the required Kubernetes environment (namespaces, resources, Helm releases), opens a web interface with a 120-minute timer and an embedded terminal, and at the end you can score your answers against 400+ automatically evaluated criteria.

The core idea is simple: replicate the real exam experience as closely as possible — questions on the left, terminal on the right, countdown ticking.

The 9 dojos

The content is organized into 9 “dojos”, each inspired by creatures from Japanese mythology. Every dojo is a complete, standalone exam with its own naming theme for Kubernetes resources.

The first three are the Celestial Guardians (Shishin):

  • Suzaku (Vermillion Phoenix) — 21 questions, constellation theme
  • Byakko (White Tiger) — 20 questions, Greek mythology theme
  • Genbu (Black Tortoise) — 20 questions, Norse mythology theme

The next six are creatures from Japanese folklore:

  • Kappa — 17 questions, river and water theme
  • Kirin — 20 questions, ocean theme
  • Tengu — 20 questions, mountain theme
  • Tanuki — 20 questions, forest theme
  • Inari — 20 questions, harvest theme
  • Ryujin — 20 questions, sea and depths theme

In total: 178 questions covering the entire CKAD curriculum — pods, deployments, jobs, Helm, probes, services, storage, ConfigMaps, NetworkPolicies, sidecars, init containers, and more.

Integrating community contributions

An important aspect of this project: not all dojos were written from scratch. Some build on the work of other members of the Kubernetes community, and that’s intentional and credited.

Dojo Kappa (simulation 4) is adapted from @aravind4799’s CKAD-Practice-Questions repository. His questions had a pragmatic approach that I found complementary to my own exercises.

Dojos Tengu, Tanuki, Inari, and Ryujin (simulations 6 through 9) are adapted from @dgkanatsios’s CKAD-exercises, a well-known classic in the CKAD community. His work covered large sections of the curriculum that I wanted to integrate rather than reinvent.

In both cases, the integration went well beyond copy-paste. Each question was adapted to the ckad-dojo format: reformatted in Markdown, equipped with automated scoring scripts with precise validation criteria, provided with setup manifests to create the necessary environment, and renamed according to the dojo’s theme. It’s real adaptation work, but the raw material comes from these contributors and it’s important to acknowledge that.

How it works

Starting an exam

# Via the Python CLI (recommended)
uv run ckad-dojo

# Or directly with Bash
./scripts/ckad-exam.sh

This opens the web interface at http://localhost:9090. The layout is split into two panels: questions on the left, an embedded terminal (via ttyd) on the right. The timer starts, and off you go.

Scoring

At any point, you can evaluate your answers:

uv run ckad-dojo score -e ckad-simulation1

The scoring checks every criterion: does the pod exist, in the right namespace, with the correct labels, the right image, the proper probes? Each question has between 1 and 10 criteria, and you get a detailed score with the percentage and a pass/fail verdict (66% threshold, just like the real exam).

The web interface

The timer changes color based on remaining time:

  • Normal above 15 minutes
  • Yellow at 15 minutes
  • Orange at 5 minutes
  • Red at 1 minute

You can navigate between questions, flag them for review (F key), and move through them with arrow keys.

Tooling

The project uses a unified Python CLI (ckad_dojo.py) built with argparse and managed by uv. It orchestrates the Bash scripts that do the actual work (setup, scoring, cleanup). The web interface is vanilla JS with a standard library Python server — no framework, no external dependency.

On the code quality side: pre-commit with shellcheck, shfmt, flake8, yamllint, markdownlint, and gitleaks for secret detection. The project also includes unit tests for shared Bash functions.

License and philosophy

The project is licensed under CC BY-NC-SA 4.0 — free for personal and educational use, with attribution and share-alike requirements. Choosing this license over MIT reflects the educational nature of the content: the questions and solutions have real pedagogical value, and the idea is to keep them accessible to everyone without being repurposed for commercial use.

The repository is at TiPunchLabs/ckad-dojo — feedback, bug reports, and contributions are welcome.