CKAD (Certified Kubernetes Application Developer) 受験備忘録

今年の1月末にCKAD(Certified Kubernetes Application Developer)という、Kubernetesクラスタにアプリをデプロイする開発者向けの資格を取得したので、その時の気づきをメモしていきたいと思います。

だいたいにおいて、 [CKAを受験した同僚の記事](https://qiita.com/ssc-ynakamura/items/5e5eb564120d01be3251)　のほうが詳しいのですが、自分の備忘録として書いておきます。（記憶が薄れかかってますが）


## どんなスキルの人間が受けたの？

- Linuxの知識・経験あり 〜 10年強ぐらい
    - UbuntuでのCLI操作が試験に大量にあり、Linuxの知識は非常に役に立った
- Dockerの知識・経験あり 〜 8年ぐらい
    - Dockerの知識はもちろん役に立った
    - が、逆にDockerでの経験や常識がKubernetesの理解を妨げる部分も少しあった
        - PodごとにIPアドレスが1つとか、コンテナ間の相互通信方法とかDockerと勝手が違う
        - Kubernetes自体はもはや初期と違ってDocker専用ではない


## どういうスケジュールで取得したの？

- 2021-01: CKADの教材付きバウチャーをアクティベート (期限:1年間)
- 2021-02〜: その後、受験日を決めながらも、特に勉強せず、試験を延期（リスケ）するを繰り返す　「ま〜だ余裕あるっしょ〜♪」
- 2022-01: とうとうリスケできる期限に到達してしまい、勉強を開始する
- 2022-01: 受験＆取得（1回目で取得）

まじめに勉強した正味の勉強期間は正直にいうと、1週間程度だと思うんですが、ここは背景や密度が人それぞれなので、全く参考にならないと思います。ちゃんとやって損はないです。


## どういう資格試験なの？

自宅等で受けるオンライン試験です。試験会場はありません。

試験内容としてはAWSの試験にあるような選択問題は一切ありません。すべてLinux上(Ubuntu)の実技です。

ブラウザ上に試験問題と試験環境(LinuxのCLI)が用意されるので、ブラウザ（Google Chrome）とプラグイン以外、追加のソフトウェアは要りません。

おそらく試験完了後に下記を評価して、合否が決まるのでしょう。

- Linuxマシンの状態（Kubernetesクラスタやファイルの状態）
- 試験中に不正行為がなかったか

合否通知までには24時間かかります。


## どういう流れで試験がはじまるの？

[公式のガイド](https://docs.linuxfoundation.org/tc-docs/certification/tips-cka-and-ckad) もありますが、私の主観的体験を思い出すと、

- あらかじめ、試験への同意、パスポートなどの身分証、ブラウザへのプラグインインストールやPC環境のチェックなどの事前タスクを済ませておく
    - ブラウザのブックマークも試験前にそろえておきます。別に試験に関係のないブックマークが試験中の画面に出ていても問題ありませんでした。
    - 身分証はパスポートが一番無難です。英語記載があるかどうかでスムーズに通るかが決まる気がします。
    - Webカメラが必要です。現代的なノートパソコンで受験すればだいたいは問題ないと思います。
- 試験当日
    - 試験用に部屋を綺麗にしておく
    - 試験サイトへの入室可能時間が来たらサイトにアクセス
    - オンラインで試験官とテキストチャット(英語)しつつ、身分証撮影〜周囲撮影を行う
    - 時間が来たら試験開始
    - 時間が来たら終了
- 試験完了したらしばらくして(1日程度)、試験結果がメールで送られてくる


## どういう知識が問われるの？

- Kubernetes のアプリデプロイに関するCLI操作・YAMLファイル作成をLinuxのCLI上でできる

以上！

実際の試験は、こういうPodを動かしたいから自分で作ってデプロイしてね、とか、なにかの原因でうまく動かないYAMLの間違った場所を直してリデプロイしなおしてとか、そういう感じの問題がたくさん出てきます。

いかに素早く手が動くかが重要です。なお、公式のリファレンスは試験中に参照できます。

Kubernetesにはどういうオブジェクトがあって、この要望にはこのオブジェクトのこの属性を用いるので、ここのリファレンスを見れば解決できる、あたりを覚えておくといいです。試験中はかなりリファレンスやヘルプを参照します。


## 英語力は必要なの？

残念ながら多少は必要です。とはいっても英語のサイトや教材を読む＆試験官とコミュニケーションを取る程度ではありますが。

ちなみに私は 「CKAD-**JP**」という日本人向けっぽいコースを選択していたのですが、日本語は試験サイトのUIぐらいにしか出てこなかったです。教材も試験も試験官も英語でした。

果たして何が「**JP**」だったのか？まあ同じ値段なら選択して損は無いと思いますが、日本語を期待するべきじゃないです。


## 試験部屋はどういうふうにしておけばいいの？

[公式のガイド](https://docs.linuxfoundation.org/tc-docs/certification/tips-cka-and-ckad) からあまり逸脱したことは言えないですが、私の場合は、

-  机上にあるものはすべて除去
    - ただモニターアームを外すのは大変だったので、ディスプレイの電源を切って、画面側を机とは別方向に向けておきました。
- 部屋の中のものはすべて片付けられるものは片付け

逆に何を部屋に残していたかというと、

- ベッド
- 本棚とその上においてあるごちゃごちゃしたもの
- マッサージチェア
- (部屋の死角にあるニッチに)雑誌類＆ルンバ
- ケーブルボックス
- 空気清浄機＆加湿器
- PC机＆椅子＆試験を受けるPC(MacBook Pro)

ちなみに試験を受けるPCは外付けディスプレイからUSB-PD給電してたのですが、外付けディスプレイは利用不可なので、コンセントからの直接給電に変更しました。

また、我が家の愛犬が試験を邪魔しにくることはわかりきっていたので、入ってこれないようにしていました。

部屋のコンディションで予想外だったのが、昼過ぎ〜夕方にかけて試験していたのですが、試験始まりは冬(1月)で外の明かりで明るかったのが、試験の終盤に近づくにつれ日が落ちてしまい、部屋が真っ暗な状態で試験が終了したことですね。室内の灯りを最初からつけることをおすすめします。

あとはエアコンの設定も試験中は変えづらいので慎重になることをおすすめします。


## 試験対策はどうすればいいの？

公式教材もおすすめなのですが、割と教材をそのまま実践してもソフトウェアアップデートのせいで動かなかったりがあるので、特にこだわる必要はないです。公式教材が出してくるような知識問題（e.g., 「L2タイプのネットワークプラグインはどれ？」とか）も出てきません。

前述の通り、手が動くとかなり有利なのでGitHub上にある下記のリポジトリを実践してると強いです。

https://github.com/dgkanatsios/CKAD-exercises

LinuxやDockerの基礎知識があれば、メインの教材1つとリポジトリ実践でいけると思います。というか、上のリポジトリの内容はさっさとやったほうがいい。

あとは公式から試験シミュレーター（Killer Shell）が出ているのでそれをやりましょう。だいたい本番と似た雰囲気です。 （私は特に一生懸命やらなかったけど）


## 受験テク

普通のベンダー資格試験と同じで、わからなかったら飛ばす（マークしておく）、最後まで一旦完了したら、マークした問題でわかりそうな問題を再度解く、で問題ありません。

特にこの試験で顕著ですが、スキップした問題の答えが他の問題の内容で出てくるケースがあるので、分からなかったらあまり落ち込まず問題を飛ばしましょう。


## 再受験はできるの？

一度だけなら無料でできます。

が、私はそれを知らなかったので、バウチャーの期限ギリギリの一発試験のスケジュールで特攻してしまいました。

それはそうとして、バウチャーの期限ギリギリの人は再試験はどうなるかというと、公式に直接質問してみたところ、

> If you generate a retake exam on a date that is very close to the expiration date, **it will give you a new expiration date 2 weeks from the date you generate the free retake**.

(期限日に非常に近い日付で再試験が発行された場合、2週間の猶予が追加される)

というお返事をいただきました。ギリギリで受けても大丈夫だったようです。


## 実際受験してみてどうだった？

あまり勉強できていなかったので、落ちるかな〜、と思っていたんですが、意外や意外、受かっていました。

資格試験としては、あんまり難しくない部類だと思いました。AWSだとSAAレベルぐらいかな？

CKAも受けてみたいです。