CKAD/CKA 合格体験記

# はじめに
2021年にCKADとCKAを続けざまに取得したので、学習方法などの記録として投稿します。

# CKAD/CKAとは
Cloud Native Computing Foundation(CNCF)とThe Linux Foundationによる、Kubernetes(k8s)に関する(事実上唯一の)認定資格。

## CKAD
https://www.cncf.io/certification/ckad/

Certified Kubernetes Application Developerの略。
k8s上でのクラウドネイティブなアプリケーションを開発するスキルを認定する試験。

## CKA
https://www.cncf.io/certification/cka/

Certified Kubernetes Administratorの略。
k8sクラスタ管理者としてのスキルを認定する試験。

# 個人的バックグラウンド

- k8s実務経験は4年ほど(そのうち実際に密に触っていたのは2年)
  - Workload/Networking関係のリソースについて、kubectlで操作したりmanifestを書いたり
  - クラスタ管理については、机上の知識は少々ついていたものの、自分で触れる機会はなし

# 学習方法

## 共通
### [Kubernetes完全ガイド](https://www.amazon.co.jp/dp/4295009792/)
- k8sに関しての網羅的かつ体系的な知識を身につけるのに有用
- 試験で直接的に役に立つのは一部分だけだが、実務経験がない人にとっては必須といってもいいかもしれない
- 個人的には、実務経験で基礎知識はあったため、結果として必要なかったと思う

### minikube
- ローカルでkubectlを叩く練習をする環境を構築しておくと便利
- クラウド環境でもその他のツールでも問題はないが、受験時のk8sのバージョンと合わせて構築しておかないと、コマンドの微妙な違いで戸惑うことになる可能性があるので注意

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

- 飽きるまでこれを周回する
- 回答例が、受験時のk8sのバージョンより古いものの可能性があるので注意

[A Cloud Guru](https://acloudguru.com/course/certified-kubernetes-application-developer-ckad)

- CKAD-exercisesをローカルで演習しているだけだと、やっていることが本当に合っているか不安になってくるので、Hands-onで正誤判定をしてくれるコースを受講
- 基礎知識の学習のためにコースを一通り見てもよいが、自信があれば飛ばしてHands-onをやるだけでもある程度有益
- トライアル期間で無料で済ませた

## CKA
[Udemy](https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/)

- こちらも主にHands-on目的
- 定価は高いが、90%以上割引のセールを頻繁にやっているので、そのタイミングを狙えばかなり安価に済む

# 試験
申込みや試験当日の流れについては多くの諸先輩が書かれているので、そちらを紹介するに留める。
[CKAD合格ログ～事前学習/申し込み/試験～](https://qiita.com/gashirar/items/e66ad5a15124febce661)
[Linux経験ゼロからCKAD（Certified Kubernetes Application Developer）に合格するまで](https://qiita.com/suke_masa/items/e48d7fe544fdedd64659)
[初学者が5ヶ月でCertified Kubernetes Administrator (CKA) 合格までにしたこと](https://qiita.com/sourjp/items/5822aa4c9e3a96caf225)
[CKA(Certified Kubernetes Administrator) & CKAD(Certified Kubernetes Application Developer) 合格体験記](https://qiita.com/go_vargo/items/3644c3a44734e2c155f4)
[Certified Kubernetes Administrator (CKA) を受験してみた](https://qiita.com/nsega/items/bd17363583c04f49847a)

自宅のデスク周りから物を排除するのが困難だったため、近所のレンタルスペースを利用したが、全く問題なく受験することができた。通信環境や、デスク周りに余計なものがないかなどをチェックするために、下見を行っておくことは強くおすすめする。


# 結果&所感

全体としては、呆気なく合格してしまったという感覚が強い。あと、元々Emacs派だが必然的にVim操作にも多少慣れた。

## CKAD
- 91%で合格。
- 「時間が足りない」とおっしゃる受験者の方も多いようだが、kubectlでdry-runからresourceを作成するのに慣れておくのと、kubectlで作れないもの(pv/pvcなど)は公式をブックマークしておいて爆速でコピペで持ってこれる状態にしておくと、時間が足りなくなることはないはず。
- 得られたもの
  - 各種リソースなどk8sの基礎知識
  - kubectlの使い方、慣れ
  - 個人的には上記2つとも実務経験があったため、試験の勉強、資格の取得を通じて新しく何かが得られたという感覚は少なかった。
- (本試験だけでは)得られないもの
  - k8sアプリケーション開発者としてのスキル
     - kubectlコマンドを使って各種リソースを作成するのがCKADのメインのタスクとなるが、実務ではその場でコマンドラインからリソースを作成することは少ないと考えられる(通常はmanifestをバージョン管理してCI/CDパイプラインと連携したりするはず)
     - コンテナイメージとして問題に出てくるのはbusyboxとnginxのみ。よって、「クラウドネイティブなアプリケーション開発」のスキルは特に身につくことはない。

## CKA
- 87%で合格。
- よく理解できなかった問題が1問、取り返しのつかないミスをした問題が1問。それでも時間はそれなりに余った。
    - CKAでは、単純にリソースを作ったりコンポーネントを直したりするだけでなく、不可逆な操作を必要とする問題があるため、後から気づいても手遅れとなることがある。
- 得られたもの
    -  k8s control planeに関する体系的知識
        -  kube-apiserver/etcd/kube-scheduler etc.
-  (本試験だけでは)得られないもの
    -  k8s cluster adminとしてのスキル
        -  k8sの基礎知識を持った上で、ある程度ハンズオンの演習を積めば容易に合格点には達することができてしまう。
        -  [Kubernetes The Hard Way](https://github.com/kelseyhightower/kubernetes-the-hard-way)などクラスタ構築のハンズオンをやれば身につくかもしれないが、この試験にはそれなしでも合格できてしまう

## 今後
[CKS](https://www.cncf.io/certification/cks/)にも手を出したいが出せていない。