はじめに
25年4月30日にCKS(Certified Kubernetes Security Specialist)に合格しました!
CKSを勉強し始めてから合格に至るまでに何度かつまずきがあったので、備忘録として残しておきます。合格のためのノウハウはあまり書いていないのでご注意ください。(ノウハウ関連は別の記事で投稿するかもしれません)
25年1月、学習開始
2025年になったら「CKSの勉強を始めよう」と思っていたので、正月休み明けにUdemyのCKSの学習コース(以下)を申し込みました。丁度いいタイミングでセール期間中だったので、定価の90%オフ(?うろ覚え)の3,600円で購入できました。
講義は非常にわかりやすいし、試験で出題される観点も丁寧に教えてくれて、親切な印象でした。ただ、自分で手を動かして実践するための環境が用意されていない点は、少し惜しかったです。唯一使えそうなコンテンツとして、講師が作成した以下のGitHubがありました。
このリポジトリには、講師がビデオで説明している環境やコマンドを再現するための手順やソースコードが格納されています。私はこれを参考にして自宅のLinux PCやAWSのEC2インスタンスにCKS学習用の環境を作って、なるべく実践ができるように工夫していました。
AWSのEC2インスタンスでのCKS環境作成は(自分の記事になりますが)こちらの記事を参考にしました。
このやり方は、「なるべく早くCKSに合格したい人」にはおすすめしません。CKSの試験に近い環境を手軽に手に入れたい場合は、KillercodaのCKSシミュレータ や KodeKloudのCKSコース(有料)を使うのがよさそう です。当時の私はこれらの存在を知らず、「CKSのシミュレータはあまり提供されていないから、それを補うために自分で頑張って環境作るしかないのかな。それはそれで学びになるし、そんなに合格を急いではいないからいいよね。」と思えてたからやれた気がします。
このような感じで、平日は1時間、休日は2時間程度、少しずつ学習を進めていきました。
そして一ヶ月経ったある日、予期せぬ事態が発生します。
25年2月、講義コンテンツの追加と大量入れ替え発生
コースを7~8割くらい終えた頃でしょうか。既に学習を完了している講義の動画にはチェック(✔)が入っているはずなのに、3~4割くらいの講義でチェックが消えています。「あれおかしいな、バグかな...」と思い、大して確認もせずに再びチェックをつけていきます。Udemyでは学習の進捗度合いが円状のバーで表示されるのですが、このバーが少しずつ進んで行くのが当時の学習のモチベーションの一つでした。それが75%くらいから一気に半分以下に減っていたので、75%くらいの進捗状況に取り戻そうと急いで対応してしまったのです。
未チェックの講義をチェックしていく途中で、見覚えのないタイトルの講義や、最後に "- New" と書かれている講義があることに気づきます。試しに一つ講義を開いてみると、「Hello! Today, we will ...」と話し始める講師の服の色と背景(撮影場所)が、これまで見てきた動画とは違うではありませんか。。。なんと、チェックが外れているように見えたのは「講義コンテンツの入れ替えや追加が発生したため」だったのです。
実は2024年10月15日に、CKSの試験プログラムは以下のように大きく更新されていました。
私が25年1月から受講していたUdemyの講義は、この更新内容がまだ反映されていなかったのです。そして学習を進めている途中で、一部の講義コンテンツが新しい試験カリキュラムに合わせて追加または更新されたことに気づきました。
この更新を落ち着いて素直に受け容れていれば、未チェックの講義を受講していくことで対応できたはずです。しかし私は未受講の一部の講義にチェックを入れてしまう過ちを犯してしまったために、どの講義が新しく追加されたものなのかがわからない状態になっていました。やむを得ず、「見覚えのあるタイトルかどうか」「講師の服と背景が新しいか(笑)」といった手がかりを頼りに、新しいコンテンツと受講の判断を進めることにしました。
講義コンテンツは一気に全部追加されたわけではなく、1,2週間程度の頻度で順次追加されている状況でした。少しずつ追加されていく講義をこなしながら、全部を受講し終えたのが3月下旬ごろでした。
25年3月下旬、本格的な試験対策を実施
一通り講義は終えましたが、試験環境に近い環境での実践演習はほぼできていない状態です。さすがにこの状態でCKSの申し込みをしてkiller.shをやるのは早すぎるかなと思い、無料で利用可能な「KillercodaのCKSシミュレータ」でトレーニングをすることにしました。
無料にも関わらずCKS用のシナリオが40個くらいあり、実戦経験を積むには良いコンテンツでした。半分くらい終わったところでそろそろ受験できそうな感触が得られてきたので、心を決めて Linux Foundationのページ からCKSの受験を申し込みます。
受験を申し込むと使える killer.sh(試験用シミュレータ)は、試験日の一週間前に一回、試験日の前々日から前日で二回解きました。同じ問題ばかり何回も解いて過学習になっている可能性もあるので、ChatGPTにCKSで出そうな問題を作ってもらって色んな問題を経験する工夫もしましたが、ChatGPTではシミュレータ環境まで再現するのは難しい点が、現状の限界なのかなと思いました。
※ この時点で KodeKloudのCKSコース(有料) の問題の存在も知っていれば、過学習を防げたのかもしれません。
25年4月14日、一回目不合格(PSIアプリが落ちるトラブル...)
そしていよいよ、4月14日のAMにCKSを受験。予期せぬトラブルに見舞われます。
最初にターミナルとFirefoxを開く時、ターミナルでコマンドを実行する時、ウィンドウをターミナルからFirefoxに切り替える時などに、キーボードやマウスの入力が画面に反映されるまでに結構なタイムラグがあります。ばらつきはありますが、最大で3〜5秒くらいでしょうか。なんか今日、試験環境やたら重くない??
試験環境の重さを実感した一番の出来事は、行数の多いテキストファイルをvimで編集する時に、上下スクロールがすごく遅れることでした。「全然スクロールしない!」と思って続けざまにスクロールするキーを入力すると、だいぶ時間が経ってからスクロールが始まります。そして、行きたい場所を通り過ぎてすごく下の方まで行ってしまう事態に...
別の症状だと、キーを一回入力しただけなのにターミナルでは何回も実行されるというのもありました。「k get pod」と入力したいのに「k geeeee」となるとか、vimで一回改行入れたいだけなのに、何回も改行されてしまうとか。
そんなハードモードの中でなんとか試験を続けること約30分。5問目を解き始めたあたりで、突然、試験問題と回答用のリモートデスクトップの画面が消え、真っ白な画面に次のようなメッセージが表示されました。
「試験を遂行するのに十分なネットワーク帯域が確保されていません」 (※かなりうろ覚え)
スプラトゥーンの「通信状況が不安定になっています」みたいな状態と言えばいいでしょうかw
しばらくして、一瞬だけ試験環境が復旧したものの、すぐにまた「通信が不安定です」の真っ白な画面に逆戻り。最終的にはPSI Secure Browserのアプリ自体が落ちてしまい、モニターにはデスクトップの背景だけがぽつんと映るだけの状態に陥ってしまいました。
「えっっ、試験、強制終了??」
ぼう然として椅子にじっと座ったまま、5分くらい待っても何も変化は起きません。試しにPSI Bridge Secure Browserのアプリを、MacのFinderから手動で立ち上げてみます。すると、試験開始前にやったのと同じように開始手続きのガイドが始まり、さっきやったのと同じように試験官と部屋環境のチェックがあり、最後は「OK. Good luck!」と見送られ、再びCKS試験の世界に戻ることができました。
ところが、90分くらい残っていたはず試験時間が、70分くらいに減っています。PSIアプリが落ちてCKSの試験環境に戻るまでの約20分、つながらない試験環境も同じ時を刻んでいたようです。ただでさえ試験時間が足りないと言われているCKSの試験で、この20分の時間ロスは痛すぎる...
20分の時間を取り戻すために、試験官に伝わるかどうかわからない英語で必死に状況を説明してお願いしますが、「ごめんなさい。試験環境の残り時間を変更することはできません。」と答えが返ってました。こんなやり取りをしている間にも時は過ぎていき、残り時間は65分に。あと12問も残っているのに...
トータルで25分の時間を失ってしまいましたが、仕方がないので残り時間65分で解けるとこまで解こうと心に決めます。わからなかったり行き詰まった問題はすぐにスキップしつつ、かなり駆け足で最後の16問目まで行き着けました。
しかし残念ながら結果は64点で、67点の合格点にあと3点足りず不合格でした。むしろ、よく64点も取れたなと思いました。
参考:試験環境のトラブルについて
今回のトラブルですが、以下のLinux Foundationのサイトを見ると同様の事象に出くわしている人が少なからずいることがわかりました。
かなり推測ですが、多くの受験者が受ける時間帯で試験環境が重くなる可能性がありそうなので、万が一事象が発生した場合、再受験時は曜日や時間帯を変えてみるといいかもしれません。
25年4月下旬、再受験に向けた勉強
ここまで頑張ってきたらやはり合格したいので、すぐに再受験に向けて勉強を再開し始めました。まずは今回の試験でわからなかった問題の復習をした後で、今までノータッチだった以下のKodeKloudのCKSのコースの問題を解くことにしました。
月額35ドルの標準プランでこのコースを受講できました。講義は既にUdemyで聴き終えており、また聴くと時間も掛かるし効率悪そうと判断し、問題(LabsとMock Exam)だけをひたすら解いていきました。
KodeKloudのCKSのコースの問題を全て解き終えて、次の試験日の4月29日までまで時間があったので、ついでに以下の "CKS - Challenges" もやってみました。
当時、CKS Challenges の解答がなくて困っていたのですが、以下のGitHubに解答があることを本記事の執筆中に気づきました。
最後の仕上げとして、試験前日にkiller.shの問題を解きました。既に2回のセッションを使い終えていたのですが、2回目のセッションが途中で落ちてしまうトラブルがあったようで(私はこれに気づいていなかったのですが)、LFからお詫びのメールが来た後で、3回目のセッションも追加料金なしで使えるようになってました。不運のあとに運が来たという感じでしょうかw
25年4月29日、二回目合格(一回目と全く同じ問題だった)
そして、二回目の受験を4月29日にしました。前回午前に受けてトラブルが発生したので、今回は午後にしました。
解き始めて5問目くらいに気づいたのですが、一回目とほぼ同じ問題が同じ順番で出てきてそうです。「今までがたまたまそうで、この後は別の問題が出てくるんだろうな」と思いながら解き進めます。すると何と、最後の16問目まで一回目と全く同じ問題でした。これはめちゃくちゃラッキー!! 一回目に解けなかった問題を復習していたおかげで、一回目よりは確実に2,3問くらいは得点できそうな感触。復習しといてよかったー
結果、81点で合格できました! 一回目とは逆で、感触的にもう少し取れた気がしたのですが。おそらく合ってると思い込んでいるところが間違っている可能性が高いです。それがどこなのかを知りたい。。
おわりに
これまでの人生で、実力不足で試験に落ちてしまったことは何回もあるのですが、今回のように「かなりの準備をしていたのに本番のトラブルで試験に落ちてしまった」のはおそらく初めてだったので、良い経験になりました。また不運のあとに幸運がやってくるという体験も、身をもって実感することができました。