未経験から一年でCKA ,CKAD ,CKSを取得
業務ではほぼKubernetes(k8s)未経験の中、約一年でCertifiedKubernetesAdministrator(CKA),CertifiedKubernetesDeveloper(CKAD),CertifiedKubernetesSecuritySupectialist(CKS)に合格したので記憶が新しいうちに勉強方法・感想などを残しておきたいと思います。
なぜ受けようと思ったのか
「ほぼ未経験」とはいえ、業務でKubernetes(k8s)のPodやDeploymentなどをDeployすることはありました。そういった中で耐障害性や高速かつ軽量に使いたい環境を構築できるところに惹かれ、どういう仕組みで動いているのだろうと興味を持ったのと、よく触れるOSSでk8sと連携できることが多いことなどから知っておいて損はないプロダクトであろうと考えたことが受けようと思った理由です。
スケジュール
Developerとしての視点ではなく、仕組みを理解したいというAdministratorとしての視点の知識を手取り早く得たかったのでまずはCKAから受験することに決めました。その後、せっかくならCKAの範囲にないJob,Cronjobも使いこなせるようになるかと思い、CKADも受験。コンテナオーケストレーションならではの脆弱性やセキュリティ対策について知ってみるかと思い、CKSも受験という流れです。
- 2021.04月CKA1回目 :勉強不足のため不合格
- 2021.08月CKA2回目 :合格
- 2021.10月CKAD1回目:合格
- 2022.02月CKS1回目 :合格
試験対策方法
CKA
不合格前の勉強期間含め、約5ヶ月ぐらいだらだらと試験対策をしました。ただ今思えば、未経験者とはいえ追い込めば2ヶ月ぐらいの試験対策で対応できたかなと思います。
以下が試験対策に用いた教材で、Kubernetes完全ガイド・Udemy->Kubernetes The Hard Way->Udemy(模擬試験)の順で試験対策をしました。
-
Kubernetes完全ガイド
- 初学者向けの教材で、WorkloadsAPIs/ServiceAPIs/Config&StorageAPIs/ClusterAPIs/MetadataAPIsの基本的な作成方法から、taint/affinityの違いClusterRole/Roleの違いなどなど、この1冊で知ることができます。
- Udemyを行いながら十分に理解しきれなかった点を調べるのに使用しておりました。
- 初学者向けの教材で、WorkloadsAPIs/ServiceAPIs/Config&StorageAPIs/ClusterAPIs/MetadataAPIsの基本的な作成方法から、taint/affinityの違いClusterRole/Roleの違いなどなど、この1冊で知ることができます。
-
Udemy
- 動画教材・章ごとのKodekloudのPractice-test・Mock形式の模擬試験が揃っているセットです。
- 全て行いました。模擬試験については3回ぐらい行ったかと思います。
- 動画教材は英語でつらいですが、字幕を有効にすれば「なんとなく」説明していることがわかります。
- 模擬試験は全て合格点を取れるまで繰り返した方が良いかと思います。(1回目落ちた要因)
- 動画教材・章ごとのKodekloudのPractice-test・Mock形式の模擬試験が揃っているセットです。
-
Kubernetes The Hard Way
- k8sを環境を構築するにはkubeadmを構築するか、ランタイムや各種証明書などを自前で用意して構築するかが挙げられるかと思いますが、後者を行うチュートリアルです。
- RaspberryPiを用いて構築し、k8sの各ControlPlaneについて理解を深めました。
- チュートリアルは流しながら(=全てを理解しなくても)問題ないかと思いますが、構築されたAPIServerの
kube-apiserver
のオプションの種類や、OCIランタイム(runsc,runc)などについて理解しておくと、後々CKSの受験も考えている方は助かるかもしれません。
- k8sを環境を構築するにはkubeadmを構築するか、ランタイムや各種証明書などを自前で用意して構築するかが挙げられるかと思いますが、後者を行うチュートリアルです。
またyamlをさくっと書けるようにするためにkubectl run
やkubectl create
,--dry-run=client
,kubectl -h
を使いこなせるようにしました。
CKAD
CKAに合格してから、気が向いた時にという気持ちで約1ヶ月、CKAで対策しきれなかった範囲を重点に勉強しました。用いた教材は上記Kubernetes完全ガイドとUdemyです。
-
Udemy
- CKAと同じく、動画教材・章ごとのKodekloudのPractice-test・Mock形式の模擬試験が揃っているセットです。
- CKAで対策しきれなかった範囲の動画教材の視聴・章ごとのKodekloudのPractice-test・Mock形式の模擬試験を行いました。
- 模擬試験で合格点を取れるレベルようになれば十分かと思います。
- CKAと同じく、動画教材・章ごとのKodekloudのPractice-test・Mock形式の模擬試験が揃っているセットです。
CKS
年末の冬休み(10日間ぐらい?)と1ヶ月追い込んで試験対策をしました。Falco,TrivyなどのThirdPartyツールやCRDあたりの知識がゼロのところからスタートしたのでなかなかハードでした。
以下が試験対策に用いた教材で、Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド->Udemy->Killer.sh(1回目)->Udemy・サイト->killer.sh(2回目)の順で試験対策をしました。
-
Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド
- 本のタイトル通りでDocker(Podman)とKubernetesのセキュリティ実践ガイドです。内容はDocker/Kubernetesの基本的な知識がないと難しいかもしれませんが、2章で脆弱性を紹介しその後具体的なDocker/Kubernetesごとの対策の紹介という流れになっており、読みやすかったです。
- 日本語でk8sのセキュリティについてまとまっている教材が見当たらなかったので、まずはこちらを読んで体系的に学びました。
- Docker(Podman)の部分は飛ばしながらでも良いかもしれません。
- 本のタイトル通りでDocker(Podman)とKubernetesのセキュリティ実践ガイドです。内容はDocker/Kubernetesの基本的な知識がないと難しいかもしれませんが、2章で脆弱性を紹介しその後具体的なDocker/Kubernetesごとの対策の紹介という流れになっており、読みやすかったです。
-
- 動画教材・章ごとの簡単なハンズオンテストが揃っているセットです。CKA,CKADのように充実した模擬試験はありません。
- GCPを使いk8sの環境を整え、動画教材に倣って手をならしていきました。章ごとのハンズオンについては2回ほど繰り返したかと思います。
- 動画教材・章ごとの簡単なハンズオンテストが揃っているセットです。CKA,CKADのように充実した模擬試験はありません。
-
- 試験を購入するとついてくる(?)模擬試験です。36hのみ起動するClusterと模擬問題(25問)が用意されており、2回のみactivateすることが可能(1回のうちにClusterの初期化はn回可能)です。また2回とも同じ模擬問題でした。
- Udemyを一通り終えた後に1回activateにして受験しましたが、惨敗しました。解答を見て理解しながら真似をして、1回目は終えた感じです。
- その後理解不足のところをしっかりと勉強し、2回目のactivateをして復習できたことを確認しました。また36h内にClusterの初期化を行い手をならすようにもしました。
- CKA,CKADの模擬試験の問題は割と本番試験と似たような問題でしたが、killer.shでの問題は本番試験と似てるとは言い難いと思います(むしろ本番の方が複雑なような?)しかし受けるに越したことはありません。
- Podのget/exec権限しかない中、PodにmountされたServiceaccountのTokenを使ってAPIServerにGETmethodを送ってSecretのValueを読み取ろうという問題が、CTF感あって個人的に面白かったです。
- 試験を購入するとついてくる(?)模擬試験です。36hのみ起動するClusterと模擬問題(25問)が用意されており、2回のみactivateすることが可能(1回のうちにClusterの初期化はn回可能)です。また2回とも同じ模擬問題でした。
-
サイト
-
https://wuestkamp.medium.com/
- Udemyの講師の方が作成した簡単なCKSの問題です。10シリーズぐらいあります。一通り問題を(脳内)で解き、理解を深めました。
-
https://github.com/walidshaari/Certified-Kubernetes-Security-Specialist
- 有志の方々がまとめてくれているcksの出題分野(ClusterSetup/SystemHardening etc)ごとのリンクのまとめなどです。苦手な分野はこちらのページをもとに学習しました。
-
https://wuestkamp.medium.com/
実際に受けてみた後の感想
難易度感:CKS>>>CKA>>CKAD
CKA
17問近くの問題を2時間かけて解くのですが、CKSよりは割と単純な問題が多く、試験対策を十分にした2回目は少し余裕を持って問題に取り組めた気がします。全問題をただただこなす->心配な問題がしっかりできているか確認という流れで問題に取り組み、時間通りに終了しました。
ETCDのbackup/restoreやKubernetesのバージョンアップなど、管理者としての問題が必ず入っているかと思います(それはそう)が、配点が高いので捨てないようにしたほうが良いと思います(それで1回目落ちたので)。
CKAD
こちらも17問近くの問題を2時間かけて解くのですが、CKAと同じ単純な問題で、CKAよりは余裕ありすぎる状態で問題に取り組めた気がします。全問題をただただこなす->全問題がしっかりできているか確認という流れで取り組み、早めに終了しました。
CKS
自分の時は16問出題されました。これを2時間で解くのですが、CKAのときと比べてかなり時間がなかったです。というのも、1問1問のうちにtaskが3つ4つあったり,APIServerの立ち上がりが遅かったり,ConnectionErrorが多発したり,という物理的な時間もですが、問題が抽象的(XXなPodを消して/YYなところを直して/ZZなログを取って)であり、問題でやってほしいことを理解をする時間も自分には必要でした。1問目から「間に合わない感」を感じたので、全問題をただただこなすことに集中し、こなした頃には確認する時間もなく試験が終了してしまいました。前述したように、killer.shの問題とはあまり似ていない問題で戸惑いましたが、新鮮味があり面白かったです。
振り返り
試験を通し、ようやくk8sの基本的なところの理解をすることができたのではないかと思います。OPAの書き方やServiceMesh,各ControlPlaneの中の動き方など、まだまだわからないことがたくさんです。k8sムズカシイ!ですが、これからもキャッチアップしていきます。
※CKS1回目で合格と書いてあるが、AM12:00とPM12:00を間違え本当は2回目
Discussion