Certified Kubernetes Application Developer (CKAD) #1 試験環境: kubectl マスターと dry-run、generators

K8s 実務トラック 26 編 でクラスターを自分で動かしてみて、KCNA シリーズ 9 編 でクラウドネイティブの大きな絵を選択式で検証したなら、次は ターミナルの上で直接マニフェストを作り、直す力 を証明する番です。CNCF Kubernetes 認定のうち、アプリ開発者の視点から受ける実技試験が Certified Kubernetes Application Developer (CKAD) です。本シリーズは CKAD 合格に必要なすべてのドメインを 21 編で解きほぐすトラックです。

KCNA が概念を選ぶ選択式だったなら、CKAD は 空のターミナルに自分で答えを作り出す 実技です。そのためこの最初の記事は、試験が何を問うのかだけでなく、2 時間をどう運用するか を分ける kubectl 環境セットアップまで一緒に扱います。このセットアップが合格と不合格を分けるケースが多いのです。

CKAD はどんな資格か #

CKAD は Kubernetes の上にアプリケーションを設計し、デプロイし、運用する能力 を実技で検証する資格です。クラスター自体をインストールしたり control plane を復旧したりする運用者の領域は CKA が扱い、CKAD はその上で アプリを動かす開発者の仕事 に集中します。次のような作業を空のターミナルで制限時間内に終えられるかを見ます。

  • マルチコンテナ Pod を設計し、init container と sidecar を配置する
  • Deployment をローリングアップデートし、問題が起きたらロールバックする
  • ConfigMap と Secret を env または volume で注入する
  • liveness と readiness probe を正確な形式で付ける
  • SecurityContext でコンテナの権限を制限する
  • Service と NetworkPolicy で通信経路を開く

この試験に通った人はマニフェストを暗記して書くのではなく、kubectl と公式ドキュメントを素早く組み合わせて 求めるリソースを作り出せます。

どんな人に価値があるか #

職種効用
バックエンド / アプリ開発者Kubernetes 上でのデプロイを直接扱う実務の証明
DevOps / プラットフォームエンジニアCKA へ進む前にアプリレイヤーの実技感覚を確保
SREアプリのデプロイとトラブルシューティングの手の速さの検証
クラウドネイティブ移行チームマニフェスト作成の標準を備えた人材

KCNA が概念入門だったなら、CKAD は 最初の実技資格 です。CKA・CKS へ続く実技 3 種の出発点であり、ここで身につける kubectl の速度と dry-run の習慣はその後の 2 試験にもそのまま使えます。

試験の構造 #

CKAD 試験の表面的な情報は短く覚えておく価値があります。

項目
形式実技 (performance-based)。実際のクラスターで作業
問題数約 15〜20 個の作業 (task)
試験時間2 時間
合格ライン66%
受験料$395 USD (再受験 1 回を含む)
有効期間2 年
受験資格なし (誰でも受験可能)
ドキュメント閲覧試験中に kubernetes.io/docs などの公式ドキュメント閲覧が許可される
受験方式オンライン監督 (PSI)。リモートターミナル
Kubernetes バージョン受験時点の最新マイナーバージョン基準 (予約時に確認)

KCNA と決定的に違う点 #

KCNA は選択式なので概念を選べば済みましたが、CKAD は 空のターミナルに直接リソースを作り、採点スクリプトがその結果を検査します。暗記して書く試験ではなく 作り出す 試験なので、同じ知識でも手が遅いと時間が足りなくなります。そのため本シリーズは概念の説明ごとに kubectl コマンドとマニフェスト を一緒に置き、読むのではなく打ちながら身につけられるよう構成します。

ドキュメント閲覧が許可される意味 #

CKAD は試験中に公式ドキュメントの閲覧が許可されます。そのためすべての YAML フィールドを暗記する必要はありません。しかし ドキュメントを探る時間も試験時間 なので、よく使うリソースは generator で骨組みを即座に作り、ドキュメントは詳細フィールドを確認する用途だけに使うのが合格戦略です。

試験ドメインの比重 #

CKAD の出題範囲は 公式試験カリキュラム に 5 つのドメインで整理されています。

#ドメイン比重シリーズ対応
1Application Design and Build20%#2 · #3 · #4
2Application Deployment20%#5#10
3Application Observability and Maintenance15%#11 · #12
4Application Environment, Configuration and Security25%#13#17
5Services and Networking20%#18 · #19

最も大きなドメインは Application Environment, Configuration and Security (25%) で、ConfigMap・Secret・SecurityContext・リソース管理がここに集まっています。次いで設計・デプロイ・ネットワーキングがそれぞれ 20%、観測が 15% です。比重はそのまま学習時間の配分ガイドになります。

kubectl 環境マスター #

CKAD の半分は知識で、半分は 速度 です。試験開始と同時に次のセットアップをしておくと、作業ごとに数十秒ずつ節約できます。

alias と環境変数 #

# kubectl を k に
alias k=kubectl

# dry-run + YAML 出力を do に
export do="--dry-run=client -o yaml"

# 即時削除を now に (Pod を素早く消して作り直すとき)
export now="--force --grace-period=0"

こうしておくと k run nginx --image=nginx $do > pod.yaml のようにマニフェストの骨組みを 1 行で抜き出せます。試験環境のデフォルトシェルには k alias と bash 自動補完がすでに設定されているケースが多いですが、なければ最初の 1 分で自分で設定します。

# 自動補完 (k まで拡張)
source <(kubectl completion bash)
complete -o default -F __start_kubectl k

generators: 空のマニフェストを手で書かない #

CKAD でマニフェストを最初から手で書く人は時間を失います。ほとんどのリソースは命令型 generator で骨組みを作ってから必要なフィールドだけ直す方が速いです。

# Pod マニフェストの骨組み
k run nginx --image=nginx $do > pod.yaml

# Deployment の骨組み (replicas 込み)
k create deploy web --image=nginx --replicas=3 $do > deploy.yaml

# Job / CronJob の骨組み
k create job pi --image=perl $do > job.yaml
k create cronjob report --image=busybox --schedule="*/5 * * * *" $do > cj.yaml

# ConfigMap / Secret
k create configmap app-config --from-literal=KEY=value $do > cm.yaml
k create secret generic app-secret --from-literal=PASSWORD=1234 $do > secret.yaml

# Service (Pod/Deployment の公開)
k expose deploy web --port=80 --target-port=8080 $do > svc.yaml

kubectl explain: ドキュメントより速いフィールド確認 #

フィールドのパスが分からないときは、ブラウザでドキュメントを開くより kubectl explain の方が速いケースが多いです。

k explain pod.spec.containers.resources
k explain deployment.spec.strategy --recursive

vim セットアップ: YAML インデント事故の防止 #

マニフェストを直接編集するとき、タブとスペースが混ざるとパースエラーになります。試験開始時に ~/.vimrc に次を入れておきます。

set expandtab
set tabstop=2
set shiftwidth=2
set number

context 切り替えを真っ先に確認する #

各作業は指定されたクラスター/ネームスペースで解かないと採点されません。問題ごとに提示される kubectl config use-context ... コマンドを 先に実行する 習慣が誤答を防ぎます。

k config use-context <問題で指定されたコンテキスト>
k config set-context --current --namespace=<問題のネームスペース>

学習戦略 #

1) 読まずに打つ #

本シリーズのすべてのコマンドとマニフェストは、自分で打ちながら身につけることを前提にしています。minikube や kind でローカルクラスターを立てておき、記事の例をそのまま実行して結果を確認します。CKAD は手に覚えた分だけ点数が出ます。

2) dry-run を基本習慣に #

マニフェストが必要なほぼすべての作業は k ... $do > file.yaml で始まります。この習慣が身につけば、試験で空の画面に向き合うことはありません。

3) 部分点を狙う #

CKAD は作業単位で採点され、一部の作業には部分点があります。1 つの作業で詰まったら印を付けて次へ進み、簡単な作業から確実に点数を積み上げる運用が合格ラインを超える道です。時間管理は #20 で詳しく扱います。

4) 模擬試験は後半に #

本シリーズを一周したら、#21 にフルスケールの実技模擬試験を置いてあります。追加の練習が必要なら、killercoda の CKAD シナリオや受験券に含まれる killer.sh の模擬環境が信頼できる基準です。

登録と受験環境 #

登録の手順 #

  1. Linux Foundation 教育ポータル で CKAD を購入。頻繁に行われる割引キャンペーンを待てば安く購入可能
  2. 受験券に含まれる killer.sh 模擬試験 2 回 を活用。実際の試験とほぼ同じ環境
  3. PSI 監督システムで受験日を予約
  4. 受験前にシステム互換性チェック (ブラウザ・ウェブカメラ・ネットワーク) を通過

オンライン監督受験の準備 #

CKAD はリモートターミナルに接続して作業するオンライン監督試験です。

  • 身分証 — 英文表記のあるパスポートが最も安全。名前が登録情報と正確に一致する必要あり
  • 受験環境 — 机の上のすべての物を片付け、デュアルモニターは 1 台だけ使用、家族・ルームメイトの出入りを遮断
  • システム点検 — 受験 30 分前に入室してバックグラウンドアプリをすべて終了。安定した有線ネットワークを推奨

まとめ #

この記事で押さえたこと:

  • CKAD はアプリ開発者視点の最初の実技資格。空のターミナルに直接リソースを作り出す試験
  • 約 15〜20 個の作業 / 2 時間 / 66% / $395 (再受験 1 回を含む) / 2 年有効。試験中に公式ドキュメントの閲覧が許可される
  • 5 つのドメイン — Design and Build (20%)、Deployment (20%)、Observability and Maintenance (15%)、Environment·Configuration·Security (25%)、Services and Networking (20%)
  • kubectl セットアップ — alias kdo (dry-run)、now (即時削除)、generator、explain、vim インデント、context 切り替え
  • 学習戦略 — 読まずに打つ。dry-run を基本に。部分点を狙う。模擬試験は後半に

次へ — Pod とコンテナのライフサイクル #

環境は押さえました。ここから CKAD の最小単位である Pod に入ります。

#2 Pod とコンテナのライフサイクル: restart policy とコンテナ状態 では、Pod のライフサイクル (Pending・Running・Succeeded・Failed)、restartPolicy (Always・OnFailure・Never) が動作に与える影響、コンテナ状態 (Waiting・Running・Terminated) と終了コードの読み方、そして試験によく出る「この Pod がなぜ再起動を繰り返すのか」というタイプまで、自分で作りながら整理します。

X