見出し画像

CKA/CKADを取ってKubernetes始めました

CKA (Certified Kubernetes Administrator) / CKAD (Certified Kubernetes Application Developer) を取得しました。

 🌊 Kubernetes

自分はこれまで仕事でKubernetes (以下、k8s)を使ってクラスター構築を行った経験はなく、プライベートな時間で学習した延長で、取得しました。
もともとk8s自体に興味があったわけではなく、クラウドネイティブという広義のテクノロジートレンドについて関心があり、どこかのタイミングで学んでおきたいなという気持ちがありました。
なので、最初からk8sの扱い方を知りたくて学んでいたというよりも、クラウドネイティブの文脈からk8sを学ぶことの必要性に駆られて学んでいった流れでした。

テクノロジーがこれまでどういったを進化を遂げてきたのか。現在はどういった進化が進んでいるのか。そして、進化を遂げた未来は今後どうなるのか。という歴史的な背景と将来展望の理解を最初は進めており。幸いにもクラウドネイティブ文脈の話は文献や動画が豊富にあり、それらの成熟度も年々上がってきているので、情報ソースの不足によって理解に苦労することはなかったです。

特に、分散と集中の歴史というタイトルでテクノロジー進化の歴史について話された内容は非常に面白かったです。

そして、クラウドネイティブの話を知れば知るほど、その中心にあるk8sの価値に気付き、自然とk8sについて学ぼうという気持ちになり、公式ドキュメントと書籍を手に取って学び始めました。

k8sを学習した中で個人的に1番面白さを感じたところは、k8s自体の構造です。k8sはGoogleが開発していたBorgと呼ばれるコンテナオーケストレーションシステムの知見を活かして作られたという話はよく語られますが、その知見が素晴らしく。複数の自律的なコンポーネントが協調動作し、期待する状態へ収束する様に設計されている仕組みを知った時には、謎にテンションが上がってしまいました。仕組みとして非常に洗練されており、これまで培ったシステム運用の知見を活かして作られていることがよくわかりました。

その他にも、k8sには独特なシステム概念であるリソースとオブジェクトが存在しますが。これらは長年のシステム運用で明確になったワークロードを漏れなく重複なく表現しており、程よく抽象化されているなという印象を受けました。さらに、ビルドインで存在するリソースの他、k8s自体の可能性の余白として、独自のリソースとコントローラを定義することが可能である点にも将来性を強く感じています。

この辺りは、そもそもその抽象化はいるのか? 複雑でわかりにくいのでは?という議論もあったりする様ですが、一度覚えてしまえば共通言語として扱える様になる恩恵の方が大きいのではないかと個人的には思っています。

🦑/🐙 CKA/CKAD

CKAとCKADはCNCFが提供している認定資格で、k8s自体の理解を客観的に示す資格になります。詳細の説明は既に多くの方がブログにしてくださっているので、ここでは自分なりの感想に留めたいと思います。

<Good>
一定の理解レベルの示す基準にはなる
Kubernetesの理解に必要な知識の足掛かりになった
知識の暗記ではなく、理解を問われるので上っ面な学びにはならない
少し達成感は感じる

<Bad>
実戦で必要な肌感覚は学べない (当たり前か)
試験はちょっと大変、2時間と3時間 (長くて疲れる)
お金ちょっと高い (人による)

そもそも、資格とかどうなんだ? 実践成果が一番でしょ! という気持ちもわからなくないですが。客観的に理解のレベルを確認できるのと、学ぶことの足掛かりになるという点においては無価値ではないかなと思っています。
ことCKA/CKADにおいては、知識の暗記ではなく理解がなければ解けない問題ばかりなので、正しい理解の壁打ちになっている感覚があって良かったです。最速で正しく体系的な理解を得たいという方には、登竜門の1つというイメージで取り組むのが良いのかなというのが、取り終えた後の印象です。

🌴 試してみた工夫とか

ちょうど良いタイミング?(7月下旬)に、「効率的に新しい事を学ぶ方法」という記事を目にし、せっかくだから試してみようとやってみました。
記事中で紹介されている内容は以前から無意識的にやっていたものもあれば、今回意識的に取り組んだものもありました。

学習の流れは兼ね同意で、学習対象の全体像を掴む事を最初に行い、そこから細部の理解を進めていくという流れでいつも取り組んでいます。これは情報の関係性と位置を捉えておくと覚えやすくなるからです。

<全体像を掴む>
全体像を掴むために自分が具体的に行っていることは、複数の情報ソースに並列で当たって、事象に対して存在する話題に濃淡をつける様にしています。類似の文献に並列で当たると説明の度合いが近しい箇所が存在しており、大抵がその学習対象の理解において重要な位置づけにある話題であることが多いです。また、文献によっても表現や言い回しであったり、比喩のわかりやすさが違ったりするので、自分の理解が進みやすい文献を都度変えてインプットしています。

今回のk8sを例にとると、詳細な扱い方の説明は公式ドキュメント。リソースの説明は完全ガイド。コンポーネントの説明はしくみがわかる本。直近5年のトレンドは動画。大局的なシステム変遷は動画。という感じで理解を深める情報ソースを切り替えて進めました。(次節で紹介してます)

精読・乱読・併読をうまく使いこなすことが個人的な学習におけるインプットのコツかなと思っています。

また、今回取り組んでいた中での新たな気付きとして、音声でのインプットは効率が良いということがありました。学び始めの頃は書籍を読まずに、YoutubeやPodcastにあるKubernetes関連の話題を流し見 or 流し聞きしており。特に青山さんのトークなどは恐らく5回以上聞き直すことで、ざっくりとKubernetesのイメージを頭に残す事を行っていました。

これが非常に良く、音声だと言葉のニュアンスなどが印象として残りやすいせいか、以後の文献の読み込みではつまづくことが少なかったと感じています。これまで書籍、ブログ、スライドが有力な情報ソースとして考えられていましたが、今後は動画なども活用するのがインプットを効率よく行う鍵になると思っています。

知識の幅を広げるのがインプットであるのに対して、知識の理解を深めるのがアウトプットだと考えています。こちらは言わずもがな、"やってみる"が一番なのですが。もう少し丁寧に説くと、自分なりの論理を組み立てることと、手を動かして検証することがあると思っています。

<自分なりの論理を組み立てる>
自分なりの論理を組み立てるというのは、インプットした内容を話しながら絵を書いて説明してみたり、図解してみたりする作業です。
重要なのは自分なりのという部分で、本や動画で話されている内容はあくまで他人の理解で作られた他人の論理であり、自分がそのまましっくりくる場合は稀であると思っています。それは言葉選びであったり、論理を理解する順番が人によって異なるからです。なので、細切れに自分なりの論理の組み立てを行い、理解の解像度を上げていきます。

例えば、自分がやっていることとしては、whimsicalで要素を整理しながら一通り説明するということを何度か行いました。

スクリーンショット 2020-08-25 12.02.54

<手を動かして検証する>
もう一つが、手を動かして検証することで、こちらは肌感覚で理解するために行います。肌感覚で理解するというのは、インプットで得た知識や自分で組み立てた論理と、実際の動きの差を認識して修正することで。ここが上っ面な知識と、使える知識の差を分ける分水嶺になります。最も腰が重くなるところではあるのですが、この検証が実は一番理解を深めることの助けになるところでもあります。

k8sにおいてはリソースのオブジェクトとコアコンポーネントの関係性を理解するためには、検証して確認することは必要不可欠であると思っています。関係性を説いている書籍もあったりしますが、それでも知識や論理と実際の動きには差が必ずあるのと感じるからです。特にマニフェスト更新時の挙動の変化であったり、オブジェクトのセルフヒーリングの挙動などは実際に動かさなければイメージが掴めないと思います。

CKA/CKADではこの "手を動かして検証すること" を試験として強制させられるので、手触り感のある理解をつまづくことなく得られるので良いです。

これはCKA/CKADを取る時に得られる1番の恩恵かなと思っています。
何度もリソースを作り直してみたり、0からKubernetesクラスターをバイナリのダウンロードから行って構築してみたりして、理解を深めることができました。

🏄‍♂️ 個人的にオススメしたい、情報ソース

k8sを知るために個人的にオススメしたい情報ソースを紹介しておきます。

1 / Kubernetes Documentation 
1番信用できます。読むたびに味が出るスルメの様です。何度も読み漁りました。

2 / Kubernetes完全ガイド
界隈で知らない人はいない、青山さんが書いた本です。網羅的で解説もわかりやすく大変お世話になりました。

3 / しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識
恐らく、Kubernetes自体のシステムコンポーネントの仕組みを一番丁寧でわかりやすく解説している書籍。先に話したk8sの構造の理解で謎にテンションが上がったのはこの本を読んでいた時です。Slideもあります (参照)

4 / VM 時代の開発とKubernetes による Cloud Native な開発のこれから
この配信を見た事をきっかけにクラウドネイティブについて調べ始めました。「インフラ側から寄り添う流れ、アプリ側から寄り添う流れ」という解説が秀逸です。

5 / Kubernetesから始めるクラウドネイティブエンジニアへの道
前半の「分散の集中の歴史」という考察が大変面白く、オススメです。

🐳 最後に

CKA/CKADを取得したので、記録としてブログを書きました。
クラウドネイティブ周りを調べ始めてから1ヶ月、平日は2時間ほど、休日は5時間ほど時間を割いて、CKA/CKADの取得にまで到ることができました。本記事がこれからKubernetesを学ぶ方の何らかの足掛かりになれれば幸いです。


noteの記事は自サイトに移行しています。

https://www.yamarkz.com/blog/kubernetes-with-cka-and-ckad

いただいたサポートは、今後のクリエイティブな活動の資金にさせていただきます。