Certified Kubernetes Application Developer(CKAD)を受験してみた

# Certified Kubernetes Application Developer(CKAD)を受験してみた

CKAを2018年12月に取得したが、その後、CKADも受験し取得することができたため、そのときに実施した内容を覚え書きとして残しておく。

# Motivation

- Kubernetesを実運用で使ったアプリケーション開発の機会が増えてきたため、整理しておきたかった。
- CKAの出題範囲と重なる部分が多いため、準備期間を短くできる見込みがあった。

# Prerequisite

自分自身のバックグラウンドについて簡単に前提として紹介させてもらう。
- 今までオンプレミス、パブリッククラウドを利用した環境でのサービス開発・運用経験は10年ほどある。 
- 直近は、パブリッククラウド(GCP,AWS)、Kubernetesを利用した環境でのサービス開発をメインでしている。

# Exam Overview

- Certified Kubernetes Application Developer(CKAD) Programの詳細は[こちら](https://www.cncf.io/certification/ckad/)
- Cost: $300 オンライン試験
- 2時間: 19問 (合格ライン:66%) 

## Exam Resources

公式に公開されている資料は以下の通り。
- [受験者向けハンドブック](https://www.cncf.io/certification/candidate-handbook)
- [カリキュラム](https://github.com/cncf/curriculum)
  - [Certified Kubernetes Application Developer(CKAD) Exam Curriculum 1.14.1](https://github.com/cncf/curriculum/blob/master/CKAD_Curriculum_V1.14.1.pdf)
- [試験Tips](https://www.cncf.io/certification/tips)

##  Exam Details (As of 25/9)

- 13% – Core Concepts
- 18% - Configuration
- 10% - Multi-Container Pods
- 18% – Observability
- 20% – Pod Design
- 13% – Services & Networking
- 8% – State Persistence

# Tips - 試験前・試験時にやったこと・工夫したこと

主に以下の教材をベースに準備した。CKAで利用していた教材の復習を中心となっている。

- [Certified Kubernetes Administrator (CKA)@Linux Academy ](https://linuxacademy.com/linux/training/course/name/certified-kubernetes-administrator-preparation-course)
  - 各カテゴリ別に学習できるのに加え、範囲を網羅した試験想定の予想問題が用意されている。
  - 試験想定の予想問題を使って、Kubernetesの公式ドキュメントのみを参照するようにしてオペレーションを手になじませてできるように利用した。

- [kubernetes-the-hard-way](https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/07-bootstrapping-etcd.md)
  - GCP上にKubernetesのインストールからセットアップ全般が通してできるチュートリアル。
  - 今回は、Linux Academyの予想問題を実施するための環境構築のためだけに利用。
  - トレーニング用にGCPのアカウントを新設した初回は約30000円分のクレジットがついってくるため便利。

- [kubernetes 公式ドキュメント](https://kubernetes.io/docs/)
  - 試験中に参照可能な公式のドキュメント。何がどこに書いてあるかを把握してあると良い。  

- [GitHub:dgkanatsios/CKAD-exercises](https://github.com/dgkanatsios/CKAD-exercises)
  - 過去にCKAD受験した人がまとめてくれたexerciseや、リンク集。
  - ざっと出題範囲とよく見直しておきたい公式ドキュメントと突き合わせするのに使った。


- 1度のバウチャーチケットで2回受験可能。1回落ちても、1年以内ならもう1回の再受験が可能。
- 自分の場合、1回目は63%で落ちたが、2回目の再受験で75%でパスすることができた。

## 準備期間

- 期間：約1ヶ月 (2019/3月下旬 〜 2019/4月下旬)

- 2019/3月下旬 〜 2019/4月中旬: アウトプット中心の学習 (0.5ヶ月)
    - Linux Academy のCKA予想問題を使って、問題に対してオペレーションをすぐに回答できるように練習。管理者用のコマンドは今回は扱われないため、適宜skipした。
    - 1回目の受験。
- 2019/4月中旬 〜 2019/4月下旬: アウトプット中心の学習(0.5ヶ月)
    - 本番の試験問題でできなかったところを中心に公式ドキュメントを読み込み復習。
    - 時間計測して、公式ドキュメントを参照するだけで回答できるように練習する。

# 試験中に工夫した点

- 1問あたり約5-6分で回答できるようにコマンドでのオペレーションを訓練する。
- さくさくオペレーションできるように、kubectl run --dry-runの使い方を覚えておく。
- `kubectl run --dry-run -o yaml`によるyamlの雛形作成方法を覚える
  - deployment, pod, job などyamlが用意できるようにしておくと試験中にyamlを用意する時間短縮できる。
  - [Using kubectl to jumpstart a YAML file — #HeptioProTip](https://blog.heptio.com/using-kubectl-to-jumpstart-a-yaml-file-heptioprotip-6f5b8a63a3ea)
  - [Kubernetes Tips: kubectl でマニフェストの雛形を作る](https://qiita.com/tkusumi/items/4f63cea4c4d910b368c4)

- kubernetes.io内のブックマークリスト(kubectl cheatsheetなど)
  - cheatsheetとすぐ探せるように整理しておく。
 
- 全ての問題はオペレーションが必要となる問題であるため、コマンドの実行が手に馴染んでいないと想像以上に時間が取られる

# 試験前の工夫した点

- 会場の手配。会社の集中ルームを利用した。
- 受験費用を割引いてくれるクーポンコードはでまわっているので一度、探してみるのがオススメ。
- 試験開始直前に、身分証明書の確認が必要となる。パスポートがあると楽。

# 苦労した点

- CKADもCKA同様、知識よりも実際のオペレーションが問われる内容のため、ひたすら手を動かす訓練が必要。ただし、一度CKAの出題範囲の内容を理解できておければ学習時間は、節約可能となる。

# Conclusion

今回は、CKADの受験にあたって、自分なりの工夫した点や苦労した点を紹介させてもらった。
あくまでこの資格取得したからといって、即現場の環境で戦力化できるかというのは違うが、取り掛かりやすい部分については、すぐに学んだ内容を利用することができる。

# Ref

## Blog

- Certified Kubernetes Application Developer (CKAD) 受験ログ
(https://qiita.com/sotoiwa/items/70cf93ebe2718a3be6b3)

## Github

- [GitHub:dgkanatsios/CKAD-exercises](https://github.com/dgkanatsios/CKAD-exercises)

## Books

- [Kubernetes: Up and Running](http://shop.oreilly.com/product/0636920043874.do)