【ベンダー試験】Cettified Kubernetes Application Developer挑戦記


CKAD挑戦。
合格しました!!


はじめに

これまでJavaやAWSの資格は得ているが、業界的にホットなキーワードである「コンテナー」や「マイクロサービス」などの観点での実践的なスキルを資格として保有しているわけではなかったので、それらについて対外的に明する能力・スキルが欲しい、と前々から思っていた。
2020年末(12月)くらいから本格的に挑戦に向けた動きを取り始め、今回CKADに挑戦するに至った。

バックグラウンド

  • 私自身のkubernetesの利用経験は、総合しておおよそ半年程度である。
    2019年(つまり2年前)に、実際にとあるデリバリ案件で一時的に触れてはいるものの、以後一切触っていない時間が続いていた(今も実業務で触れる機会は残念ながらない)。
    趣味でDockerコンテナ作ってたりしてるが、コンテナに関する知識も基本的にその程度の軽いものである。
    要するにそんなにがっつりKubernetesやDockerに触れている方の人間ではない。
  • 私自身、完全なインフラ屋というわけではないが、Linuxサーバでのコマンド操作はある程度やってきた経験がある。
    実試験ではこの手のLinuxコマンドの基礎的な知識もある程度ある前提で構えられている節がある(特にviなどエディタが使えないときついと思った)
  • 下記に挙げるUdemy講座や、Linux FoundationのCandidate Handbookなど、試験に向かう前に英語が多数発生する。
    このため英語に苦手意識があるとキツイかもしれない。
    といいつつ、私も得意な方ではないが、結果的にはなんとかなったので、頑張ってみても良いと思う。

勉強

多肢選択式のCBTではなく、実際に手を動かしてdeployしたりfixしたりする試験なので、基礎知識の習得のための座学はもとより、それ以上に実戦形式のHand-Onが何より不可欠である。

座学(Udemy講座)

https://www.udemy.com/course/certified-kubernetes-application-developer/
まず間違いなくこれだろう。
基礎知識の面だけでいえば、ほぼこれだけでなんとかなる。
Kubernetesのコンセプト的な部分から実践的な知識を含めて総合的にカバーできる。
CKADを受けるなら絶対受講するべき講座である。

正規の講座価格は24000円とかなんだが、衝撃の99%オフとかをたまにやってて(Steamかよ)1500円とかになってるときがあるので、そこを狙うべき。
私もそれで申し込みした口である。
ついでに言うと、本試験の受験料$300についても、15%オフのクーポンコードを教えてくれる。
そういう意味でも是非受講するべき講座である。

なお、動画は勿論だが、後述するPracticeを含めて、全編通して完全に英語なので、英語が苦手な人はキツイかもしれない。
といいつつ、私も英語は得意な方ではないが、基本的に技術用語ばかりが出てくるため、日常会話的な英語に比べると馴染みやすかった。
動画のほうには英語の字幕も付くので挑戦してみるのはアリだと思う。
ちなみに動画の字幕は一部が変な間違え方している(「Kubernetes」が「Cubernas」になってたりとか)ので察して解釈する必要がある。

動画の視聴時間は9.5時間ということだが、後述するPracticeの分などを含めると、総合的には恐らく15時間は軽く超える。
要するにそこそこボリュームがある。
私の場合、日にちょこちょこ進めていく感じだったので、全モジュールをやりきるまで1か月くらいかかった。
もう少しペースあげればもっと早く終わらせることはできただろうが、ある程度長丁場になるのは覚悟しておいた方が良いと思われる。

この講座の各章のPractice(KodeKloud)はとても参考になる。
非常に丁寧に順序だてた形で出題されるので、理解しやすい。
また、Practiceは、自分専用のkubernetes環境を与えられてHands-Onをする形の問題なので、問題を解き終わって余裕があったら、問題と関係ないコマンドやYAMLの書き方のいい練習の機会になる。
Feedbackを送信しちゃうと環境が消えてしまうのと、Practiceに時間制限が設けられている(60分)というのが制限事項にはなるが。
概ね時間余るので、これを機会に練習してみるのはいいと思う。

ただ、ちょっと気になった点でいうと、Practiceで与えられる環境(ブラウザベースのターミナル)は微妙に反応が遅い。
フランクフルトあたりにたてたEC2にSSHで接続してるときのモッサリ感に似ている。
試験環境はもっとスピーディだった(スムーズに反応がかえってきた)のでKodeKloudだけの問題かもしれない。

実践勉強

Udemy講座 - Lightning Lab / Mock Exam

Lightning Lab、Mock Exam共に、上記のUdemy講座の最後のほうに用意されている。

Lightning Labは難しい。
難しいというより、やることが多いわりに時間が足りない。
まあこの「時間の足りなさ」は本番に当てはめると緊張感あっていいとは思うが…
とはいえ、色んなリソースに総合的に触れることになる問題が多いので、全体的な知識チェックをするいい演習問題になるとは思う。
とりあえず一度やってみた方が良い。

もう一つ最後のほうにMock Examという別の模擬試験も用意されているが、こっちはLightning Labに比べると難易度は比較的優しい方の部類に入る。
基礎知識の総復習みたいな感じなので、知識の棚卸が出来てよい。
順番的にLightning Labの次にこのMock Examが控えているので、Lightning Labで受けた自信へのダメージが若干ここで回復できる。

なお、実際の試験を受けてみた感想で言うと、Lightning Labほどの難易度はないが、Mock Examよりは難しいという感覚だった。
勿論出題される問題によっては色々だと思うが、まあ、参考までに。

Game Of Pods

https://kodekloud.com/p/game-of-pods
Udemy講座の最後のほうで紹介されているやつ。
これはUdemy講座とは独立しているらしく、誰でも完全無料で挑戦できるらしい。

これはLightning Labと同レベルの難易度がある。
難易度というか、やることが多いわりに時間が足りない。
個人的には最初の問題を解決した段階でそれ以上の問題に挑戦することはしなかったので、それ以外の問題の難易度は知らないが、大体同じ難易度だと思う。

Lightning Labと同じで、様々なKubernetesのリソースに触れられるという経験ができるので、良いと思う。
解けない(時間内に解ききれない)ことで精神的なストレスになる覚悟は必要だが、一度やってみるのはいいと思った。

CKAD Exercise

https://github.com/dgkanatsios/CKAD-exercises
Githubで公開されている問題集。

CKAやCKADの体験記には大体これが出てくるが、これは全部やったし、なんなら3周くらいした。
各単元ごとに問題が用意されてる形で、全般通して広く基礎知識をカバーできており、実践的な理解はかなり深まった気がする。
「基礎知識」という部分にフォーカスされている部分が色濃く出ているように思われる分、正直にいうとLigtning LabやGame Of Podsに比べると難易度的には優しい印象であるが、総合的な能力の底上げや知識補正には十分活用できる。

ちなみに「問題」と「回答」だけが提供されているだけで、↑の2つ(Lightning LabとGame Of Pods)と違って環境が用意されていない。
このためこれを実際に解くには別途環境の用意が必要になる。
環境については後述しているので参考までに。

なお、これも全部英語で書かれてるので、英語キツイ人はキツイかもしれない。
Google翻訳とかDeepLとか駆使して頑張ってほしい。
それだけでもやる価値があると思う。

総合的に見て

とにもかくにもUdemy。
リソースの種類、名前、使用法、コンセプトなどの基礎知識は大体全てここで習得できるうえ、各単元ごとに演習用のPracticeも用意されているという、いいことづくし。
基本これだけで「勉強」はなんとかなると思う。

これに加えて実践能力を得る意味でCKAD Exerciseは是非やっておくべき。
書かれてることをほぼ完全に覚えて、同じこと言われてもパッと答えが浮かぶようになるまでになっておいた方が良い。

なお、巷で話題の「Kubernetes完全ガイド」については、私は購入していない。
それでも一応、受かってるので、必須で必要な本というわけでもないらしい。
個人的には上述のUdemy講座とCKAD Exerciseがあれば大体なんとかなるという認識である。
ただ一応実務経験がちょっとだけある、というのが基礎知識部分の補正をしている可能性があるので、完全無知で挑むならその限りではないかもしれない。

勉強環境

CKADの試験環境はUbuntuなので、クラスタを操作する(kubectlする)ための環境としては、少なくとも何かしらのLinux環境を用意しておいた方が良い。
私のパソコンはWindowsだが、そうした意味もあり、操作実行するためのクライアント環境には必ずLinux環境を使うように心がけていた。
一応それも書きためておく。

自分環境

自分のローカルマシン上(のVirtual Box)に作成した環境。
このエントリで書いたやつである。
自分の手元にあり、後述するクラウドベンダに比べて利用に課金が発生しないという点で、最初のほうは重宝した。

ただ毎回Virtual Boxでサーバー立ち上げないといけないというのが面倒くさいのと、低スペックで動かしてる関係でたまにちゃんと動作しないときがあり、クラウドベンダーのマネージドKubernetesに比べると使い勝手が悪く、最初のほうだけ使ってたがすぐに使わなくなってしまった。

もっと言うと、ことCKADに関して言えば、「自分でKubernetes環境をつくる」というのはちょっと範囲外になるという点もひっかかる。
CKAD分野の勉強のために、わざわざ「Kubernetes環境を作る」ところから始めなきゃならんのか、と思うと、若干抵抗を感じる部分があるとは思う。
そもそもKubernetesをローカルに用意するなら、MinikubeかDocker DesktopのKubernetesを使う方が手っ取り早い。

以上を総合すると、基礎知識部分の勉強にはなるとは思うが、CKAD向きかといわれると、今振り返ってみると決してそうではないな、と思っている(自分で作っといてなんだけど…)。

--- クライアント側 ---
マスターノードにあたるVMにTera Termで接続して操作していた。
上のエントリに従えば、作成完了時点でその辺の環境は全部整う(ワーカーノードでも同じことができる)。
試験環境と同じUbuntuサーバーというのも利点にはなる。
といいつつ、最低限のスペックで動かしてるうえ、マスター+ワーカー×2だとホスト自身もけっこキツイことがあり、この勉強以外の作業に色々支障をきたしたので、早々に諦めた。。。

OKE(Oracle Container Engine for Kubernetes)

Oracle Cloud(OCI)のマネージドKubernetesサービス。
クラウドサービスなので利用にあたっては課金が発生する。
ワーカーノードのシェイプには、Allways FreeのVM.Standard.E2.1.Microは選べないようだったが、選べる中では最低スペックのシェイプVM.Standard.E2.1を選んで1ノードで稼働させてたら、Computeの代金だけでは1日80円弱だったので、実際のところかなり安いと思う。

なお、普通にクラスター作成すると、Flannelが入った状態でクラスターが作成される関係で、NetworkPolicyの検証には使えない(NetworkPolicy作ってもシカトされて動作しない)。
NetworkPolicyの検証をするために、別途Calicoをインストールする方法は公開されているが、なんか面倒くさそうだったのでやめた。

あと、重要なポイントとして、何故か普段の通信(kubectlの実行)がやけに(無駄に)遅い。
後述するGKEに比べると、GKEに対してkubectlして0.5秒くらいで返ってくるやつが、OKE相手だと2~3秒くらいかかるイメージ。
これはOCI CLIの実行自体も同じ感じのもっさり感なので、それに引きずられているような気がするが、根本的な原因はわかっていない。
この「もっさり感」が嫌で、結局これも使うのをやめてしまった。
金額が安いのは魅力的だっただけに残念である。

--- クライアント側 ---
Oracle CloudはVM.Standard.E2.1.Microのシェイプなら完全無料なので、そのシェイプのVMをたてて、OCI CLIやらkubectlやらなんやらいれて操作していた。
ワーカーノードに直接sshしてもいいが、確かOCI CLIもkubectlも入ってなかったので(kubeletだけが動いてる)、kubectlで操作できるようになるまでの作業の手間は上述したのと同じくらい。
どうせなら金かからないほうがいいやと思ってAllways FreeのVMを使っていた。
まあGKEのほうが使い勝手良いと気づいたらすぐに殺してしまったのだけど…

GKE(Google Kubernetes Engine)

Google Cloud PratformのマネージドKubernetesサービス。
これもクラウドサービスなので利用にあたっては課金が発生する。
とはいえ、なんだかんだ一番使った環境だと思う。

まず一つの利点として、探した限りでは、各クラウドベンダーのマネージドKubernetesサービスの中で、唯一v1.19系がある。(他は全部v.1.18系)
受験対象のKubernetesはv1.19系だった(※私が受験した時の話です)ので、この点でこの環境は貴重だった。
なお一応書いておくと、2021年1月時点では、この環境はRapidチャンネルでしか選べず、かつまだベータ版でProdcution環境での利用は認められておらず、SLAも補償対象外ということだった。(作成時にNote表示される)
まあ個人の勉強観点の利用ならこの程度何の問題ないし、振り返ってみるとOKEのv1.18系でも基本的な勉強するのには特に不足はなかったので、別にv1.19系にこだわる必要もなかった気がするが、念のため。

デフォルトだとノード数3で作られるが、ノード数1に変更すると、1日100円程度の課金で済んだので、そこそこ安いのも良い。
ただ課金が発生すること自体に抵抗がある場合は勿論完全に選択肢からは除外されてしまう。
また、「そこそこ安い」と書いたが、正直最低スペックで回すならOracle Cloudのほうが安いのは事実である(「最低スペック」がOCIとGCPで同値なのかどうかは評価しておらず、「両クラウドベンダーで選べる最低スペック」という意味での課金の観点のみの比較である)。

OKEと同様、最初はCalicoが入ってないが、gcloudのCLIを使うことで簡単にCalicoを入れる方法が公開されている
この点でもOKEに比べて個人的にGKEに軍配が上がった。

--- クライアント側 ---
gcloudのオフィシャルDockerイメージをベースにちょっと改造したイメージを自作して、そのDockerコンテナに入って作業していた。
これは本件の本旨ではないので別の記事にまとめた。
興味ある方はこちらを参考にしてほしい。

その他

AWSのEKS(Elastic Kubernetes Service)も試そうと思ったんだが、ノードプールの作成が何度やってもうまくいかず、諦めた。
できあがったEC2インスタンスからクラスターにjoinできないというエラーが出て失敗していた。
インスタンス自体は問題なく作成されており、IAMロールもセキュリティルールも確認したのだが、何故かだめだった。
そうこうしてるうちにGCPの環境が作れてしまい、これで勉強が進められそうになったので、とっとと諦めて原因を追及することもしなかったが、結局何が悪かったんだかは気にはなっている。
まあ今となってはあまり興味もないのだが…

試験

受験申込編

この試験は「Register」(申し込み)と「Schedule」(受験日の決定)が工程として分離している。
AWS SAAなどピアソンビューを使って申し込む試験と違うので最初は若干戸惑った。
Registerした後、向こう12か月の間で自分の好きな日時を選んでScheduleするという形である。

Registerに際して、CKADは(CKAもそうみたいだが)「日本語試験」というのが選べるらしい。
ここは絶対間違えずに「日本語版」を選ぶように注意する必要がある。
試験中、試験官とやり取りをするためのLive Chatというチャット窓が用意されていて、何かしら試験官と会話したい・あるいは試験官からこちらに何かを伝えるとき(例えば試験当日の15分前から開始される、事前チェックプロセス-「パスポート見せろ」とかその辺)は、そのチャットを通じて文章でやり取りするのだが、そのときの言語が、この申し込みの際に選んだ言語になる。
つまりここで日本語版を選んでいないと=英語版を選んでいると、当日の試験官とのやり取りが全部英語になってしまう。
私は日本語版を選んでいたはずなのだが、どうも英語版を選んだことになっていたらしく、上述した事前チェックプロセスを含めて全部英語になってしまい、なかなかしんどい思いをした。

ScheduleはTimeZoneを日本(UTC+09:00)にしておく。
最初はUTC-5:00とかのアメリカ時間になっていたはずなので、これを日本時間に直しておかないと変な時間に受けなければいけなくなる。
その時点で1週間後の日程が選べたので割と自由は効きそうなイメージである。
余談だが試験日程を決めるための検索がとても遅かった。。。
気長に待った方が良い。

試験準備編

とりあえずCandidate HandbookAgreement Documentを一通り読んで、いくつか準備した。
なお、下記に挙げるものは試験に臨むにあたって私が実施したり心がけたりしたものだが、あくまで私自身の行動であり、上記ドキュメントの翻訳ではないという点は断っておく。
単に上記ドキュメントを読んでの私個人の理解・解釈に基づく行動というだけなので、これがLinux Foundationが定める正式な試験実施ルールや要件と必ずしも一致しない点はご理解いただきたい。
いずれにせよ自分でドキュメント読んで何をしなければならないか/あるいはしてはいけないかをご自身で判断いたく必要があるということである。

  • このご時世なのもあり、私は自宅で受験したが、ルールにもある通り、「試験する部屋はprivateでなければならない(他の人が映ってはいけない)」「机の上には基本的に一切のものを置いてはいけない」などの制約があり、これが結構警戒心を生んだ。
    私は在宅で仕事しているため、普段机の上にはprivateのパソコン以外に会社のパソコンや社給のケータイが置いてあったりするが、試験にあたってそれらは一回部屋の外に出したし、
    個人で趣味で絵を描くためのペンタブがprivateのパソコンにつながってるが、それも取り外して部屋の外に出したし、
    あと筆箱とか眼鏡ケースとかその辺の普段机の上に乗ってる一切合切を全部一時的に片づけた。
    ID確認のためのパスポートは試験開始前の試験官とのやり取りで必要になるので机の上に置いておいたが、これも確認が済んだら「机の上に置かないように」と指示があったレベルで徹底している。
    まあこの辺は試験のルールに従えば当然実施しておかねばならない事項だと個人的には思っていたが…

    唯一「ラベルがはってない透明な飲み物」だけは置くことを許可されているので、いろはす買ってラベルはがして机の上に置いておいたが、緊張とそもそも飲んでる時間などないくらい試験が忙しくて、飲む機会はほとんどなかった。

    あと、一応自宅で自分の部屋があるのでそこで受けたが、妻が仕事に・子供が小学校に行ってて自分以外家にいない時間帯(部屋に確実に自分以外はいない状況と時間帯)を狙って受験した。
    勿論この試験中は仕事のMTGなども一切入れないよう事前に配慮していた(まあスケジュールブロックしてるだけだが)

  • 色々な体験記を見ると、「試験中、kubernetes.ioだけは見ていい」というような記述を見かけたが、実際のところはもう少し見ていいサイトがあるらしい。
    ここに載ってる。
    確かにkubectl explainでgithubのURL出てくるときあるからこれもだめなのかなーとは思ってたのだ。
    まあとはいえ結局kubernetes.io以外見ることはなかったが…

    このルール、「それ以外を見ないようにするのは受験者の責任です」と記載があるように、「万が一許可外サイトを見た瞬間アウト」というようにも読み取れる。
    どちらかというと「見ていいよ」ではなく「それ以外見たらNG」というようなマイナスのルールというように個人的には受け取った。
    だから試験開始前に全部のブックマークをエクスポートし、kubernetes.io以外のブックマークは全部消して臨んだ。
    万が一(それが仮に意図のない誤操作だとしても)「見てしまった」だけでルール違反になるので、そこで試験終了されるかもしれないと思うと、そんなことで(実力とは別の観点で)NGになる可能性があるくらいなら、それくらいの準備はしておいて当然だと個人的には思った…
    が、この辺は個人の心構えに依存する感じがするので、「見ない」という自信のある人なら別にそこまで準備しなくてもいい気がする。
    実際、許可外サイトを見てないので、「見た瞬間即試験終了」という扱いになるのかはわからないが…

  • 上のルールに関連するが、試験開始前の試験官とのやり取りの中でバックグラウンドプロセスを全部終了させられるので、基本的には問題ないはずだが、例えばGmailやSlackなどの通知が試験中に意図せず「来てしまう」可能性もあると思っていて、私は事前にこれらの通知を全部OFFにした。
    仮にGmailやSlackなどの通知が来たとしても、通知欄を押さない限りは開かないので「外部サイトを見た」ことには当たらない…というような気は個人的にはするが、一方で一部とはいえ外部ドメインの情報を表示していることに変わりはないので、「通知が来てしまう」こと自体ルールに払拭するようにも読み取れる。
    大事をとって可能性は全て潰しておくべきと判断した。
    というわけで実際私は試験中にあらゆる通知が来ることはなかったが、実際来てしまった場合にどういう扱いになるのかはわからない。
    この辺は気になるなら問い合わせて見た方が良いと思う。
  • 受験者本人確認のためのID情報は、私はパスポートを使った。
    (もともとパスポートの期限が切れていたのだが、このために2020年末に新たに取得しなおした。このご時世で海外渡航するわけでもないのにパスポート取るのに何か違和感はあった)
    パスポート以外だと色々手間がかかったみたいな体験記も見たが、私の場合、パスポートでの本人確認は速攻で終わった。
    やはりパスポートが最強だと個人的には思う。
  • CKADの試験環境には4つのクラスターが用意されている。
    これは公開されている
    普段勉強で使う環境は、当然クラスタは1つだったので、試験に際して「クラスタを変更する」という考えが直前までなかった。(namespaceの変更くらいは意識していたが)
    このため事前にこれを読んでおいて良かった…と、個人的にはと思った。

試験実施編

この手の試験の常で内容に関しては一切言えないのだが、とりあえず思ったところを。。

  • Udemy講座でも紹介されているが、「一度考えて『よくわからん』って思ったら無視して先に進め」というのは真理だった。
    そもそも時間は基本的に足りないので(私も1問最後まで解けなかった問題がある)、解ける問題を先に解いておかないと最終的に時間不足で詰みになる。
    先のほうの問題に簡単なのがあったりするので、「時間かかりそうだな」と思ったら無視してとっとと先進んだ方が良い。
  • 「試験問題の日本語版は訳がひどいので英語版読んだほうがまだマシ」という体験記も見かけたが、個人的には、運が良かったのかそれとも改善されたのか、日本語で問題読んでもほぼほぼ支障はなかった。
    ただ1、2問、確かに「無理やり直訳したんだろうな」と思われる問題が見受けられ、「多分こうすればいいんだろうが本当にそれが問うてることかわからない」という問題があったのは事実である。
    このときばかりは問題を英語にして読み直した。
    というわけで場合によっては英語版の問題読まないとそもそも解けない可能性があるというのは覚悟しておいた方が良いと思われる。
  • みんな言ってるのでalias k=kubectlを私もやって挑んだが、やはりこれはやっておいた方が良いと思った。
    私の場合kubectlを毎回打つとなるとタイポすることが多く、試験時間との戦いが強いられるこの試験において、このタイポの連続は時間を圧迫する要素になるので、潰しておいて損はない。
    ただこれは普段(の勉強の段階)からalias k=kubectlを実行したうえでの環境操作をしていて、それに慣れているという前提付きである。
    普段はkubectlをちゃんと打ってるんですというところで、試験でいきなりalias k=kubectl打っても逆に足かせにしかならないと思うので。
    このため自分は勉強のために環境に接続する際は毎回alias k=kubectlを実行してから環境に触るように心がけていた(それを癖にしていた)。
  • 基本的にある程度のリソースは全部CLIで=つまりkubectlコマンドで作れるようにして挑んだ。
    とはいえCLIでは細かいspecは指定できないので、その際は--dry-run=client -o yamlをつけてYAMLに吐き出し、そこでいじくる。
    そしてYAMLに付け加える要素はkubectl explain --resucrsiveで探る。(※--recursiveは私の趣味です)
    このとき、「この要素名ってなんだったっけ」とか「この要素どの階層位置に書くんだっけ」とかの疑問はあってもいいが、「見れば思い出す」レベルにしておかないときつい。
    そのうえでなお分からなければ、そこで初めてkubernetes.io等を検索する。
    これを基本路線としていた。
    つまりkubernetes.io等の「試験中に見ていい外部サイト」は基本的には最終手段にしておいた方が良い。
    ある程度基礎知識を持っていて自走出来る状態にしておいて、何かどうしてもわからないときだけkubernetes.io見るくらいの感じでないと、毎回kubernetes.io調べてるようじゃ多分時間が足りなくなる。
    「試験中に答えの載ってるサイト見れるなんて余裕♪」みたいな大学生的なノリは危険だと実感した。(正直最初受けるまではそんな感じのナメてる態度があったのは否めない。スミマセン)
    • PODはkubectl runで、serviceはkubectl exposeで、それ以外は基本的にkubectl createで作れる。
      secretやconfigmapも--from-literal=aaa=bbbで大体指定されたものはCLIだけで作れる。(特にsecretはYAMLに書く値をいちいちbase64エンコとかしてると面倒くさくてかなわない)
      最低限この辺は覚えておいた方が良いと思う。
    • ただそんな中でも、私が知ってる限りでは、NetworkPolicy、PersistentVolume/PersistentVolumeClaim、Ingressに関しては、CLIで作る手段がない(kubectl createで作れない)ので、こいつらに関しては、Kubernetes.ioのYAMLのサンプルが載ってる該当ページをブックマークしておいた方が良い。(私はしておきました)
    • リソース名のショートカット名を覚えておいた方が良い。
      例えばserviceはsvcで、deploymentはdeployで代用可能である。
      kubectl explainするときもこのショートカット名が使える-例えばdeploymentを指定する場合はkubectl explain deploy.specで実行できる。
    • 一部例外はあるが、配列要素になるものは、基本的に要素名が複数形(~s)になっているものがおおい。
      例えばpod.spec.containersとかpod.spec.volumesとか。
      「これ配列だっけ、オブジェクトだっけ」というのはこれで簡易に見分けられたりはする。
      ただ例外もある-例えばpod.spec.containers.envとか。これは要素名が複数形の表現になっていないが配列要素だし、
      pod.spec.containers.resourcesは複数形の表現してるが中身は配列ではないObject。
      …というわけでつまりただの私の個人的な感覚論に過ぎない…かもしれない(すみません)

試験結果編

試験結果は、試験終了時刻から36時間以内に受験者あてに通知される。
私の場合は34時間目くらいにメールが来た。
他の方の体験記を見てみても、大体そのくらいで通知が来るようだ。

受験した時間帯によるが、受験完了が夜だったりすると、結果を知るまで最長で3日目までかかることになる。
試験後の翌日中に結果が欲しいなら、午前中には試験を終わらせるくらいにしておく必要がある。
ちなみに私は昼の12時試験完了で翌日22時頃結果を受け取った。
それでも翌日ほぼ丸一日は結果待ちでソワソワしていたのでw、できればこういう気分の時間は短いほうが良い。

おわりに

とにかくCKAD取得である。
実際に手を動かす試験は初めてだったので、不安もあったが、なんとか合格に至れたのは安心した。
何より、勉強の過程で、Kubernetesの実践的なスキルが見に着いた実感があるのが嬉しい。
今のところ実務でkubernetesを使う機会がなさそうだというのが残念なところではあるがw、今回得たこのスキルを生かせるときがくるまで、薄れてしまわないように維持していきたい、と思っている。

余談

もともとCKAかCKADのどっちか、あるいはどっちも受けようと思っていて、最初に受験するのをCKAかCKADか、どっちにするか迷ったのだ。
色んな体験記を見ると、大体みんなCKAとCKAD2つゲットしているようだが、見てる限りでは、CKA→CKADというのが多かった。
だから最初にCKA取るか…というのも最初は思っていた。

しかしCKAのコンセプト、「kubernetesの仕組み・管理」という点に関しては、個人的にどうも受け入れ難く、CKAへの挑戦に踏み切れなかった。
「Kubernetesの中がどういう風に作られてるのか」とか「クラスターの管理・運用方法」とかには正直に言うと個人的に興味がない。
Kubernetes the hard wayというのもCKAの体験記の勉強素材としてよく取り上げられているが、自分でやるとしてもkubeadmが限界の人間からすると、ここまでしてkubernetesの中身を知ろうと思わなかった。
そもそもクラウドベンダーのマネージドk8sがある中で、これらを知ることにどこまでの意味があるのか?と思わずにいられなかった。(っていうとガチの中の人に怒られそうだが…単純に個人の興味の話をしており、煽る意図は一切ないことはご理解いただきたい)
どちらかというと、クラスターありきでその上にどういうアプリケーションをどのように乗っけていくか?という方に着目したい人間だったし、実際そっちのほうが興味が強かった。
私は過去の経歴なども含めてどちらかというと「アプリケーション開発者」よりで、インフラ畑の人間ではない(基礎知識はあるが…)ので、そういうのもこの辺の好奇心の向き方に関係しているような気はする。
というわけで、CKAではなく、CKADに挑戦することにした。

そしてそういう意味でも、現時点でCKAを受ける気があまりない。
少なからず試験の範囲が重複していることを考えると、この知識が薄れないうちに受験しておいた方がいいとは思うが、受験料も馬鹿にならんし、何よりCKAのための勉強(上に挙げたような範囲)をする気が個人的に起きない。
勉強し始めると多分面白くなるんだろうなとは思うが、CKADはとれたし、他にやりたいこともあるので、一旦ここでKubernetesの勉強については一休みする。
そのうち挑戦してみようかなーとは思っている。