対策期間2週間！？数々の苦難を乗り越えCKA(Certified K8S Administrator)に合格したので色々まとめてみた

つい先日、Linux Foundationが実施しているCKA(Certified Kubernetes Administrator)に:cherry_blossom::cherry_blossom:無事:cherry_blossom::cherry_blossom:(ギリギリ滑り込み:sweat_smile:で)合格:cherry_blossom::cherry_blossom:しました。しかし、筆者自身の勘違いにも起因していたとは言え、合格までの道程は数々の苦難を乗り越えてのものでした。そこで、記憶が薄れないうちに情報をdumpしておこうと思います。

# 事の起こり
そもそもの事の起こりは今から約1年前。以前所属していた部門の教育部門が利用期限間近のKubernetes(以下、K8S)の資格試験、教育講座の受講クーポンの処分に困っている様だったので、以前後学のためにK8Sを勉強しようと思って挫折したことを思い出し、リベンジのためにKCNAとCKAの受験クーポンと教育講座の受講クーポンを貰いました。しかし、その後社内転職で部署異動し、異動先での業務などに追われているうちにK8Sの勉強の優先度は(そもそも異動前から低かったものの)ドンドン下がり、気付けば、期限切れまで数ヶ月。。。何とかKCNAをまず片付け、お次はいよいよCKA。しかし、1回目の受験で不合格でも1年間は無料で再受験可能なので、1回目はその再受験の権利をゲットするだけとして、そこからゆっくりじっくり対策をして受験をと計画を変更。1回目は対策もせず。受験したという事実だけを残し、そして来年再受験と脳天気なことを考えていました。ところが。。。何とよくよく再試験のルールを確認すると、**最初の購入から1年以内**との記載が有ります。。。:scream: :scream_cat: で、再受験期限を確認したら8月中旬まで。。。つまり、2週間程の期間しか残っていません。。。これは万事休す。。。もう諦めようと一度は考えました。

https://training.linuxfoundation.org/ja/about/faqs/certification-faq/#:~:text=%E5%86%8D%E5%8F%97%E9%A8%93%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%BE%E3%81%A7%E3%81%AE%E5%BE%85%E3%81%A1%E6%99%82%E9%96%93%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F

https://qiita.com/y-vectorfield/items/12acd820268d9976b1d3

しかし、物は試しと2週間でCKA対策について解説している記事はないかと探してみたところ、以下の記事を発見しました。これぞ正に渡りに船です。筆者は数々の資格試験にこれまで挑戦してきました。趣味の1つに「資格取得」を挙げているくらいです。ではこの記事に記載されている方法を検証してみて合格出来るか実験してみようと思い立ち、実際に検証しました。結果は先述の通り、(ギリギリ滑り込みですが)無事合格しました。

https://gametech.vatchlog.com/2023/02/20/cka-exam-report/

# 勉強開始時の筆者のスキルレベル
上記参考記事の執筆者の方はコンテナに関する知識0で2週間の対策期間でCKAに合格したとのことです。筆者のスキルレベルは。。。

* 業務でコンテナ(Docker)は頻繁に利用しているが、K8Sは皆無。。。趣味のお遊びでKindを用いてチョコチョコ動かした経験が有るのみ。運用経験なんて皆無の状態。。。:scream:
* KCNAには受かっているので知識0というレベルでは無い状態

ということで、行けるだろうと楽観的な発想のもと開始したのですが。。。(後述)

# CKAについて
CKAについて簡単に解説を記載します。公式サイトには以下の様に説明されています。

> 認定Kubernetes管理者は、基本的なインストールを実行できるだけでなく、本番環境レベルのKubernetesクラスタを構> 成および管理する機能を実証しました。また、Kubernetesのネットワーキング、ストレージ、セキュリティ、メンテナンス、ロギ> ングとモニタリング、アプリケーションのライフサイクル、トラブルシューティング、APIオブジェクトプリミティブ、エンドユーザー> の基本的なユースケースを確立する機能などの主要な概念を理解します。

## 受験の申し込み
受験申し込みについて解説しているページは山の様に有るので、わざわざ記載する必要は無いかもしれませんが、念の為。Linux Foundationのページから受験申し込みが出来ます。

https://training.linuxfoundation.org/ja/certification/certified-kubernetes-administrator-cka-jp/

## 試験範囲
上記申し込みページには試験の出題範囲とその割合が記載されています。但し、実際の試験はこのパーセンテージに厳密には則っていない様な気がします。配点の割合の可能性も有ります。ちょっとコマンドを使って調べた結果を指定のファイルに書き込むだけの問題と、kubectlコマンドを駆使してyamlファイルまで作成して完成させる問題が同じ点数では受験する側としてもたまったものではありません。。。

|分野|割合|
|:---|:---:|
|クラスタのアーキテクチャ、インストール、構成|25%|
|ワークロードとスケジューリング|15%|
|サービスとネットワーキング|20%|
|ストレージ|10%|
|トラブルシューティング|30%|

# 対策教材
筆者は以下の教材を活用して試験対策を実施しました。このうち、2週間の試験対策期間で用いた教材はUdemyの講座とKode Cloudの演習教材です。各々について簡単に説明したいと思います。

## Udemy
CKA合格者のブログ記事などを参照すると必ず取り上げられている教材です。恐らくCKAに最短で合格したければ、この教材一択なのではないかと筆者も思います。この教材の良い所は何と言っても、実際に手を動かして演習を行う環境をKode Cloudという形で、しかも無料で提供される点です。このUdemyの教材自体は価格が2万円を超えていますが、Udemyはしばしばセールが実施されます。セール時は3,000円でお釣りが来る価格にまで割り引きされます。筆者は勤務先がUdemy Businessに契約しているため、実質無料で受講出来ました。ただし、音声は全て英語です。講師の英語は少しインド訛り？の英語で時々聞き取り辛い箇所が有ります。その場合、字幕を表示すれば追うことが出来ました。但し、日本語字幕の翻訳精度はいまいちです。音声の英語を認識してそれをそのまま日本語に翻訳している様で、支離滅裂な日本語が表示される場面が多々有りました。筆者は途中から英語字幕にして受講していました。(時々、正しい日本語で翻訳されている部分も有ります。)

https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/?couponCode=JPLETSLEARNNOW

## Kode Cloud
上記Udemyの講座受講者は無料で受講出来る演習教材です。K8Sを勉強する時に最もネックとなるのが、Kubernetesの環境構築です。K8Sの現実的なレスポンスで実行出来る環境を構築してさあそれから試験対策というのは大変です。。。Kode Cloudはそういった心配は要らず、環境構築済の環境が提供されます。(但し、1h毎にリフレッシュされるという時間制限は有)この教材を使えば、スムーズに試験対策が実施出来ます。

https://learn.kodekloud.com/user/courses/cka-certification-course-certified-kubernetes-administrator

## 公式教材(あまりお勧めでは無い)
実は、公式教材を受講するためのクーポンを貰っていたため、受講してみましたが、これは途中で挫折しました。そもそも数万円する価格設定ながら、内容はほぼPowerPointで作ったスライドをそのままWebページに掲載した様な教材で、特別分かりやすい内容でもありません。演習環境は自前で用意する方式のため、この教材で演習を進めながら受講するのは、非常に骨が折れます。

https://training.linuxfoundation.org/ja/training/kubernetes-fundamentals-lfs258-jp/

## 実際にこなしたスケジュール
筆者が実際に熟したスケジュールをまとめておこうと思います。

|期間|実施内容|
|:---:|:---|
|7/23~7/30|Udemy教材、Kode Cloud演習教材 1周目(最後の練習テスト部分は除く)|
|7/31~8/4|Kode Cloud演習教材 2周目|
|8/5~8/6|Kode Cloud演習教材 3周目(2周目でチェックした箇所)、練習テスト|
|8/7(0:00~2:00)|試験当日|

8/7の午前6時がタイムリミットですが、そんな早朝に起床して受験出来る自信は無かったので、深夜に受験することとしました。しかし、8/7は実家に帰省する予定となっていたため、そんな日の深夜に受験することを設定したのは、後々心底後悔しました。。。:scream: :scream_cat: :scream:

# 試験当日
試験当日はKCNAの時と同様にあの独特なシステムに苦しめられました。今回はなぜか、身分証明書を再度見せることは要求されませんでしたが、KCNAの時以上に部屋をWebカメラで撮影する時に細々と注文が付き、デスクチェアの背もたれに隠れた壁の様子を写せだの、天井の写り具合がどうのなどなどと、注文の多い料理店の店主もビックリな注文の多い試験官を相手に苦労しました。今回はKCNAの時の反省を生かして外付けのWebカメラを用意して臨んだのですが、Webカメラはワイヤレスではないので、あまり、引っ張りすぎるとUSBポートから抜けてしまって写らなくなります。これが罠で30秒後には試験システムがダウンする仕様です。で、再度最初からやり直しで結局3回目に何とか全部突破しました。。。あの問題数に試験時間でどうやってカンニングをして受験するのか方法が有るなら聞いてみたいと思う程に時間の余裕など無いにも関わらず、注文の多い試験官の注文に応え続ける羽目になりました。故丹波哲郎さんの様に受験者が壁にカンニングペーパーを貼って試験に臨むと疑っているのか散々再撮影要請に応え応え、しかもチャットメッセージの内容も分かりきった内容を何度も何度再度入り直す度に送り付けられて来るので、先にそれを見越してこちらも応答を書いているのに、また送られてくる。ここまでで激怒の一歩手前でした。そして、試験システム、つまりPSIセキュアブラウザを用いての試験は、予想以上にレスポンスが悪かったです。ブラウザのスクロールがスムーズに出来ない。。。しかも、この日は悪天候の影響か、ネット環境の調子もいまいち。。。CKAを受けるには最悪のコンディションだった可能性が有ります。後、常にカメラの撮影範囲に顔全体が写り続けているというのがとても辛い姿勢を続けなければならず、大変困りました。。。そして、K8Sのドキュメントのみ参照可能という試験で、最も利用する[Kubernetes.io](https://kubernetes.io/)が試験環境のスタートページになっておらず、最初このページに辿り着くのに苦労しました。このURLは暗誦しておけば良かったなと思います。。。(Kubernetes ioで検索をすると、<font color=RED>アクセス禁止</font>の警告が表示されます。ただ、当日の試験問題は詳細は書けませんが、上記の教材(Kode Cloud)で実際に取り組んだ問題とほぼ同じ問題も数問出題されており、それに結果として救われた結果となりました。

# 試験結果
試験結果は下図の通り合格点66点に対して68点であったため、ギリギリの滑り込み合格でした。。。:scream: :scream_cat: しかし、ここは終わり良ければ全て良しということにしておこうと思います。

![cka_results.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/e73f80c6-c688-b8aa-7a6e-8c9c223edc91.png)

業務でK8Sを使っている訳ではありませんが、2年後にめでたく？更新する必要性が出るという十字架を背負う羽目になりましたが、Udemy受講割引で次回は受講しようと思います。(クーポンは部門が違うのでもう貰えないため)次回はもう少し経験値を積んで、もう少し良いスコアで合格したいなと思います。

# 反省点
今回2週間CKA対策チャレンジを実施し、実際にCKAを受験し、合格しましたが、幾つか反省すべき点が有ります。次回の更新時には、この反省点を生かしたいと思います。

## 試験時間(2h)の予行演習を結局一度も実施しなかった
2h、しかもK8Sとがっぷり四つの闘いをしなければならないということも有って、実は試験までに実際の試験時間での予行演習(Kode CloudのMock Exams)を一度も実施しませんでした。時間が取れなかったという事情も有りますが、前日に1回だけでもやるべきだったなと思います。

## Killer.shを取り組むべきだった
これは受験者殺しの試験シミュレーターでCKAのレベルを超越した問題が出るという専らの噂です。受験申し込みをすると、2回分無料で付いてきます。変に難しい問題で苦戦して、メンタル的に引き摺るのは嫌だと思い、手を着けませんでした。しかし、1回分でもやっておけば、あのノロノロレスポンスの試験環境を体験出来ていたかと思うと、失敗だったなと思います。

# まとめ
CKAについて筆者の体験をまとめました。この認定試験は2週間で突破は可能です。というよりも最初から全力投入で臨み、短期決戦で決着を付けるべき認定試験だと思います。ダラダラ長い期間を掛けても恐らく突破は出来ないでしょう。(余裕を見るなら3週間〜1ヶ月集中で)今回の反省点は、2年後の更新時(または他の認定受験)に生かしたいと思います。

# (おまけ)今後取り組みたいこと
今回得たK8Sの知識を更に伸ばすために、以下のことに今後取り組みたいと思います。

## お家K8Sの構築
まず、お家K8SをKVMを用いて構築したいと思います。どうやらVirtual Boxを用いた方法の方が簡単に出来る様なのですが、スループットはKVMで構築した方が良好な様です。余っているサーバーマシンを使ってお家K8Sを構築して、今回得たK8Sの知識を使って、K8Sで遊んでみようと思います。

## JSON Path使い熟せる様になりたい
筆者が受験した時は出題されませんでしたが、kubecltコマンドの出力を活用する時に、知っていると便利だと思いつつ、クエリが覚えられず、そもそも今回は試験対策としては捨てていました。そもそもK8Sのドキュメントに載ってないクエリも有り、試験対策と別に研究する必要性が有りそうです。(※Udemy、Kode Cloudもここは解説が不親切)

## つくって、壊して、直して学ぶ Kubernetes入門読破
壊しながら学ぶというコンセプトが素晴らしい書籍です。破壊して戻すところまで解説されているとかいないとか。。。楽しみです。

https://www.seshop.com/product/detail/26164?utm_source=sebook&utm_medium=organic

## Kubernetes完全ガイド読破
K8Sのバイブルと言われる書籍です。CKA合格者の記事を読んでいると合格にはこの書籍の読破も必要と記載している方も居ますが、筆者の個人的な意見としては、この書籍はCKA合格後に次のステップアップのために読む書籍扱いで良いと思います。それよりは、UdemyとKode Cloudに全力投入する方が良いと思います。

https://amzn.asia/d/dM7EfCe

## CKAD, CKSの取得(K8S資格四冠達成)
折角K8Sについて理解を深めたので、更に研究ついでにCKADとCKSを取得するのも良いなと思い始めました。ただし、Udemyの受講割引が有るとは言え、なかなかのお値段。。。更新時期が重なると財布が空っぽになってしまうので、もう暫くK8Sを研究してからCKAD→CKSの順で受験(2025年中に)しようと思います。

https://training.linuxfoundation.org/ja/certification/certified-kubernetes-application-developer-ckad-jp/

https://training.linuxfoundation.org/ja/certification/certified-kubernetes-security-specialist-cks-jp/

どうやらKCSA(Kubernetes Cloud Native Security Associate)という試験も追加された様です。CKSを受験するまでに日本語試験が追加されていたら受験してみても良いかな？とは思っていますが、どうやらKCNAと同等の初級レベルの試験の様です。

https://training.linuxfoundation.org/ja/certification/kubernetes-and-cloud-native-security-associate-kcsa/