本文へスキップ

CKAD 模擬試験の練習環境を作る

  • kubernetes
  • ckad
  • kind
  • killer-sh

CKAD の準備をしながら killer.sh シミュレーターを解いてみたのですが、思ったほど点数が取れませんでした。そこで、本番の試験のように模擬試験を練習できる環境を作ってみました。

名前は cncf-practice で、試験画面は https://cncf-practice.developerryou.workers.dev/ にデプロイしています。

この記事ではなぜ作ったのかと使い方を、次の記事では中でどう動いているのかを扱います。

きっかけ

CKAD の試験を購入すると、killer.sh シミュレーターのセッションが付いてきます。本番と同じ形式で、ブラウザの左側に問題があり、右側のターミナルで実際の k8s クラスターを触りながら解く方式です。難易度は本番より高めに設定されているそうですが、実際に解いてみると時間にも追われて、点数もあまり取れませんでした。

試験範囲に沿って概念ノートは書いていましたが、概念を整理するのと、制限時間内にターミナルで実際に解くのとはまた別の感覚でした。 それで、これに近い、本番のように解ける模擬試験を作ってみることにしました。

作りたかったもの

最初に決めた仕様です。

  • killer.sh のように実際のクラスターで作業する実技形式。選択問題はなし
  • 1回あたり5問、難易度はやや難しめ。小問があり、1問で概念を2〜3個組み合わせる
  • 終わったら自動で採点され、どこで間違えたかがすぐ分かること
  • ボタン一つでクラスターをきれいに作り直せること

問題は自分では作らず、AI エージェントに任せました。 エージェントが出題基準のドキュメントと公式ドキュメントを読み、Web 検索もして、問題用紙と事前準備スクリプト、採点スクリプトを作ります。 そのあと私が問題を解いて、解き終わったら採点が走る、という流れです。

クラスターは kind で WSL2 上にシングルノードで立ち上げます。

使い方の流れ

デプロイされたページを開くと、まずローカル環境を確認します。ページ自体は静的サイトなので、問題用紙とクラスター・ターミナルは各自の PC で動くローカルサーバーにつながる必要があります。ローカルサーバーがなければ、クローンして実行する方法をそのまま表示します。

ローカルサーバーがないときに表示される案内画面

WSL で次のように実行しておけば大丈夫です。

git clone https://github.com/DeveloperRyou/cncf-practice.git
cd cncf-practice
./scripts/install.sh   # kubectl, kind, ttyd を ~/.local/bin にインストール
./scripts/exam.sh      # ローカル試験サーバー + ターミナル

Chrome や Edge ではこのとき「ローカルネットワーク上のデバイスへのアクセス」を許可するかどうかの権限リクエストが一度表示されます。許可しないとページが localhost につながりません。サーバーが立ち上がると、ターミナル、Docker、kind、kubectl の準備ができているかを一つずつ確認し、ローカルのクローンがリモートリポジトリより遅れていれば git pull するよう知らせてくれます。

環境確認画面

次は回の選択です。資格ごとに回の一覧が表示され、すでに解いた回には点数も一緒に表示されます。

回の選択画面

回を選ぶと環境準備の画面に移ります。「Prepare environment」を押すと、クラスターを削除して作り直し、その回に必要なリソースをあらかじめ用意します。トラブルシューティングの問題なら、わざと壊した Deployment や Pod もこのとき作られます。ログがそのまま画面に流れるので、準備がどこまで進んだか見られます。

環境準備のログ

準備が終わると「Start exam」ボタンが有効になり、押すとすぐに試験が始まります。左に問題用紙、右に WSL の bash ターミナルが表示され、上ではタイマーが動きます。killer.sh の画面をできるだけ真似しました。問題ごとに番号タブがあり、あとで見直したい問題にはフラグを付けられ、問題用紙のインラインコードをクリックするとクリップボードにコピーされます。ターミナルには k エイリアスと自動補完があらかじめ設定されています。

試験画面: 左が問題用紙、右がターミナル

「End exam」を押すとタイマーが止まり、すぐに採点が走ります。合計点と合否(合格ラインは本番と同じ66%)、CKAD のドメイン別の点数、問題ごとの採点項目が表示されます。下の画面は何も解かずにすぐ終了したときのものなので、こんな点数になっています。

結果画面

同じ回をもう一度解きたければ、一覧からもう一度押せば大丈夫です。前回の解答と結果は別に保管され、クラスターはまたきれいな状態で作り直されます。

現状と今後の予定

2026年9月27日時点で、問題は CKAD round-01 の5問だけです。私自身まだ CKAD の準備中なので、準備しながらいろいろ追加していくつもりです。

  • CKAD の回を追加。これまでの回であまり扱っていないドメインから
  • その後、CKA など他の資格のディレクトリ
  • 解いてみて不便だった画面の機能

自分で試してみたい場合は、上のコマンド4行だけで動きます。ただ、今のところ確認したのは WSL2 + Docker Desktop 環境だけで、Safari は https ページからの localhost へのアクセスをブロックするため対応していません。

次の記事では、静的ページがどうやってローカルのクラスターとターミナルを扱うのか、そしてほかのサイトがこのサーバーに手を出せないようにどんな仕組みを入れたのかをまとめます。