CNCFが認定するKubernetesの開発者向けの試験 CKAD(Certified Kubernetes Application Developer) に合格しました。
実は昨年9月に受験して一度不合格になっていて、今回のリベンジ受験でようやく合格を勝ち取りました。 失敗したことも踏まえてCKAD合格までにやったことを書き連ねます。
前提
私自身のKubernetes歴は約1年程度です。
学習を始めた段階ではPodとDeploymentは分かる、YAMLも読めばなんとなくわかる、けれど一からYAMLを書くのは自信がないといったレベルでした。
合格するまでにやったこと
試験を受けるまでに以下の記事を参考に学習を進めました。
学習材料
- Kubernetes完全ガイドを一通り読む
- まずはこの本を読むことから始めました。
- 自分のKubernetesの知識をアップデートして、知らないことがあれば公式のドキュメントを確認してMinikubeで手を動かしながら理解を深めました。
- 今でもKubernetesを使うときの私のバイブルです。仕事でも辞書の代わりに使用しています。
- Exam prepを3周する
- GitHubにはCKADの対策問題集があったので、3周解いて自信をつけました。
- 1周するとどのリソース・分野の理解が浅いのか目星がつくので、その分野はKubernetes完全ガイドを参照しながら振り返りを繰り返しました。
- YAMLではなくコマンドラインでKubernetesのリソースを操作する方法はここがよくまとまっています。
- お仕事でKubernetesを触りまくる
- 最後は実践あるのみ。知識で「分かる」ことをスキルとして「使える」に変える手段としてはこれが一番効きました。
- 幸いにも継続的にKubernetesに触る機会があったのはラッキーでした。
- 実際に触る環境がない方は、YAMLで作成されたマニフェストをコマンドで作ると良い練習になると思います。何がコマンドラインから作成できて、何が指定できないのか理解できるようになります。
対策ポイント
ここからは試験を受けて感じた対策ポイントです。
とにかくYAMLを作らずにコマンドラインを駆使する
試験時間は2時間ですが、問題量がそこそこあります。 コマンドラインで指定できないパラメータもあるのでYAMLを使う場面もありますが、 YAMLを最初から書いているとあっという間に2時間は溶けます。正直コマンドラインを駆使しても時間ギリギリでした。
以下の3つを準備しておくと格段にスピードアップが見込めます。
-
- Podは
kubectl run <POD_NAME> --image=<IMAGE_TAG> --restart=Never
で作ることを覚えます。 - 雛形は上記のコマンドを
--dry-run=client -o yaml
でファイルにリダイレクトして作成する。あとは必要なパラメータを追加するだけ。
- Podは
エイリアスを張る
- 試験が始まったらターミナルで
alias k=kubectl
。 - kubectlと7文字打つことさえ時間が惜しいし、なぜかタイポしやすい。
- 試験が始まったらターミナルで
Bashのコマンドとパイプを駆使する
問題で指定されたクラスターを使う
試験ガイドにも記載されているように、試験中は複数のクラスターを操作します。
使うクラスターを間違えると問題文中のリソースが見つからず混乱しますし、解ける問題も解けなくなってしまいます。
ちなみに私は使うクラスターを間違えて一度目の受験は不合格になりました。
同じクラスターを使用していると明らかでも、
問題ごとに k config current-context
で質問のクラスターで作業していることを確認しましょう。
ど忘れした時の検索方法押さえておく
スキルとしてオペレーションを覚えていたとしても、やり方をど忘れすることはあります。
ガイド上は試験中にkubernetes.ioドメインのドキュメントだけは追加で1つタブを開けるので活用しましょう。 最低限Cheat SheetとConceptのページをブックマークすることをおすすめします。
use their Chrome or Chromium browser to open one additional tab in order to access assets at: https://kubernetes.io/docs/, https://github.com/kubernetes/, https://kubernetes.io/blog/ and their subdomains. This includes all available language translations of these pages (e.g. https://kubernetes.io/zh/docs/)
また、ブックマークしたページを見ても分からない・見つからない場合にパニックにならないように対策も必須です。
コマンドラインからリソース定義のヘルプを確認する kubectl explain
は覚えましょう。
例えば、PodのVolumeの定義方法が分からない場合は kubectl explain pod.spec.volumes
と打てば何かしらのヒントは得られるはずです。
参考
受験直前にTwitterでExam Tipsが流れてきて、これも役立ちました。 もうちょい早く読みたかったなと思うようなTipsが満載だったので、これから受験する方はぜひ一読をおすすめします!
以上。