技術(tech)

Kubernetes認定資格CKADに合格するための学習戦略を紹介

はじめに

 

2021/09/05にCKADを受験し、無事に合格することができました。

周りにCKADを受講したことがある人が居なく、Kubernetesも未経験であったため
完全に手探り状態で勉強を進めつつ、試験を受けました。

試験に合格した今だからこそ分かることをここに書き記すことで、
同じような境遇の人が本記事を読んで、
CKAD合格の助けになることを期待しています。

ちなみにですが、同年3月に本資格を取得しようと考え、
細々と勉強に取り組んできたので学習期間は約半年弱です。

 

この記事の妥当性

筆者の実体験を元に紹介しております

 

想定する読者

 

  • CKADの受験を考えている人
  • CKAD合格のために、何を目指して勉強すればいいのかが分からず、困っている人
  • CKAD合格後にどのような状態になっているのか、イメージが沸かない人

 

この記事を読んで得られるもの

 

  • CKADの取得を通じて得られたもの
  • CKADに求められるスキルセットが何なのか
  • CKADの学習戦略のモデルケース

 

ゴンくん
ゴンくん
CKAD合格までのイメージがより具体的になることを期待しています

 

注意事項

 

本記事を読む上で、以下にご注意ください

  • 2021/09/27までの試験を受講した際の体験記です
    •  CKADの出題範囲は2021/09/28に変更となります
    • 詳細はこちらをご覧ください
    • デプロイ戦略的(Blue/Green、カナリア等)な出題が新たに加わる模様です
  • CKADという資格自体が変わるわけではないです
    勉強の仕方のような点は同じく参考になるのではないかと思います
  • 守秘義務の関係もあるので、具体的な問題の中身には触れません
  • 受験日当日の流れには触れません(色んな方々がブログで紹介してくれているので)

 

CKADとは

 

こちらの記事が参考になります。

上記記事より抜粋しますと、CKADとは以下のような資格です。

Certified Kubernetes Application Developer(CKAD)試験は、認定者がKubernetes用のクラウドネイティブアプリケーションを設計・構築・設定・展開できることを証明する資格試験です。 この試験の目的は、Kubernetes上で動くアプリケーションの開発者に必要なスキル、知識、および能力がCKAD認定者に備わっていることを保証することです。

 

CKAD試験の概要は以下の通り

受験形式 オンライン
各受験料 41,300円
試験時間 2時間
受験日 自由に指定可能
再受験 1回のみ無料で可能
有効期限 3年間

余談にはなりますが、Kubernetes管理者向けのCKA(Certified Kubernetes Administrator)もあります。

筆者は、自分の手を動かしてKubernetesを扱える状態になりたかったため、
CKADを受講しました。

とはいえ、CKADとCKAとで試験範囲として重なる部分は大きいようです。

 

CKADの勉強前と合格後の変化

 

CKADの勉強を通じて、何を得られたのかを整理します。

具体的には、CKAD勉強前の筆者のスキルセット(前提条件)と、
CKAD合格後に筆者がどのような状態になったのか、
個人の主観で記載します。

 

CKAD勉強前

  • Kubernetes完全未経験
    • Kubernetesという言葉だけ知っている。中身は完全にブラックボックス
    • 「オーケストレーションツールだよね」程度の理解
    • マニフェストを作ったことも、触ったことも無い
  • Linuxコマンドは多少使える
    • vim, touch, cp, mv等の基本的な操作は出来る
    • sed, awk, grep等での文字列操作は苦手
  • 応用情報レベルの知識は持っている

 

CKAD合格後

  • Kubernetesをちょっとだけ分かる状態
    • 概要レベルの概念的な理解(Node, Pod, Network等)
    • コマンドラインから各種マニフェストを作成し、状態確認・編集等ができる
    • 分からないことをコマンドラインのヘルプや公式ドキュメントから調べられる
  • Linuxコマンドの知識が少しだけ増える
    • grepやlessを使って、コマンドラインのヘルプを素早く検索できる
    • vimの操作に慣れる

 

例えばですが、以下の要件に沿ったインフラ程度であれば
自分で構築出来る状態になると思います。

  • フロントとバックがある簡単なWebアプリ
  • バックにはフロントのみから通信可能
  • バックとフロントは可用性を確保するためにオートスケールさせる
  • LBを用いて負荷分散させる
  • フロントを外部に公開させる
  • 各種リソースのロギング・障害発生時の解析

 

逆に、CKADに合格したとしても身につかないと感じるのは以下です。

  • Kubernetesを用いたシステムの運用知識
    • あくまで手を動かしてインフラを構築する能力が伸びます
    • 作ったマニフェストをどのように管理、運用するかは本試験の対象外
  • KubernetesのIaC(Infrastructure as Code)化
    • 上記と被る部分もありますが、個々に作成したリソース
      (Deployment, NetworkPolicy等)をどのように管理するかという部分は学べない
    • これにはKustomize等のマニフェスト管理の仕組みを理解する必要あり

 

ゴンくん
ゴンくん
あくまで構築する能力が伸ばせます。運用のスキルはまた別ですね…

 

合格に必要なスキル

 

試験合格のためには、以下が出来るようになっている必要があると筆者は感じました。

  • Kubernetesの基本的な操作を調べなくても分かる
    • 各種リソース(Deployment, Pod, Service等)の作成、編集、削除
    • 環境変数のマウント
    • 各種リソースを結ぶネットワークの設定
  • コマンドライン上でヘルプを駆使できる
    • 各種kubectlコマンドの使用例が調べられる(kubectl -h | grep kubectl)
    • マニフェストに設定可能な値を調べられる(kubectl xxx explain –recursive)
  • 分からないことは公式ドキュメントを逆引きして調べられる
    • サンプルコードを参考にしてマニフェストを作成できる
    • 細かな設定値の意味を調べつつ、内容をマニフェストに反映できる
  • ファイル操作・編集、文字列検索等のLinuxコマンドが使用できる
    • cp, mvコマンド等によるファイル操作
    • vimを用いたファイル編集
    • less, grep等を駆使したドキュメント検索

 

ゴンくん
ゴンくん
短い時間の中で数多くの問題をこなすために、上記のスキルが求められます

 

学習に使用した教材

 

筆者が学習に使用した教材は以下の通りです。

他の方々のCKAD受験記を見ていても、
大体は同じような教材を使用しているようです。

Kubernetes完全ガイド

created by Rinker
¥4,400
(2024/05/30 00:55:29時点 楽天市場調べ-詳細)

Kubernetesについて、網羅的かつ体系的に学ぶことが出来ます。

ボリュームが多いため、全部をきちんと読み込むというよりも、
Kubernetesの全体像を把握するためや、逆引き辞書として使用することが多かったです。

 

Kubernetes道場

https://cstoku.dev/posts/2018/k8sdojo-01/

何も分からない状態で「とりあえずKubernetesに触ってみたい」
という方にオススメです。

勉強の序盤でしか使っておらず、途中から勉強方法を切り替えたため、
最後まで完走はしていないです。

 

Kubernetes公式チュートリアル

https://kubernetes.io/ja/docs/tutorials/

Nodeって何?、Podって何?というKubernetes初心者の方にも
分かりやすいチュートリアルです。

ハンズオン形式で学べます。

Kubernetesの全体像を把握するのに役立ちます。

 

Kubernetes公式ドキュメント

https://kubernetes.io/ja/docs/home/

CKADを勉強する上で何度もお世話になります。

試験中はこのページは開いても良いことになっています。

試験中に分からないことを迅速に調べられるようになるために、
普段から分からないことは本ドキュメントの中から調べるように訓練します。

 

Udemy CKAD with Tests

http://Kubernetes Certified Application Developer (CKAD)

動画での解説の他に、章ごとの練習問題や実際の試験に近い形式の練習問題が
付属しています。

勉強序盤から終盤まで満遍なくお世話になりました。

セール時に購入しておくことをオススメします。

 

Github CKAD Exercises

https://github.com/dgkanatsios/CKAD-exercises

こちらも勉強序盤から終盤まで満遍なくお世話になりました。

実践に限りなく近く、使用する頻度が高いコマンドを学ぶことが出来ます。

このエクササイズをこなせるようになるだけで得点を上げることが出来ると思います。

 

Linux Foundation 試験シミュレーター(練習問題)

https://training.linuxfoundation.org/ja/blog/linux-foundation-kubernetes-certifications-now-include-exam-simulator/

試験に申し込むと無料で練習問題を受ける事ができます。

試験本番とほぼほぼ同じ形式で練習問題を受けられる、まさにシミュレーターです。

実際の試験よりも難しめの問題が出題されます。
この問題をすらすらと解けるようになれば、試験本番も問題無いと思います。

 

筆者が立てた試験受験までの学習戦略

 

これまで必要なスキルや使用した教材を紹介してきましたが、
これらを踏まえて、筆者がどんな学習戦略を立てて、
試験受験を迎えたのか、紹介していきたいと思います。

前提として、筆者は特に時間に追われていたわけではないので、
約6ヶ月という長いスパンを置いて、緩く学習戦略を立てました。

あくまで参考です。

最終的には読者各々の事情に応じて、
戦略を立てていただければと思います。

 

受験後の今だからこそ言えることですが、
CKADにおけるKubernetesの知識レベルは以下の段階に分けられると考えます。

  1. 未経験。Kubernetesという言葉しか知らない
  2. Kubernetesでどんなことが出来るのか、全体像をぼんやりと理解している
  3. Kubernetesで扱う各種リソースの概要を理解している
  4. Kubernetesで扱う各種リソースを個々に作成できる
  5. Kubernetesで扱う各種リソースの関連性を理解している
  6. Kubernetesで扱う各種リソースを関連させて、複合的なマニフェストを作成できる
  7. 提示されたお題に沿ったマニフェストを迅速に作成できる

レベル7に達した時点で、CKADに合格可能な水準と言えます。
※便宜上レベル毎に分けましたが、実際にはレベル3〜6の間を
行ったり来たりすることになると思います

 

それぞれのレベルにおいて、どんな学習をすべきなのか紹介いたします。

レベル1
未経験
(1ヶ月目)
完全未経験の状態です。レベル2になるためには、これから勉強する対象となる
kubernetesの全体像を把握します。まずはKubernetes公式チュートリアルを試します。Kubernetes道場の序盤の記事を試すのも学習の支えになります。
レベル2
全体像のぼんやり理解
(2ヶ月目)
レベル3になるためには、Kubernetesにおける各種用語を
インプットすることが大切です。Kubernetes完全ガイドを3周ほど読みます。流し読みで構いません。
「この単語は聞いたことがある」状態になればいいです。具体的な理解は、レベル4を目指す過程で手を動かしながら学ぶで構わないと思います。
レベル3
各種リソースの概要理解
(3ヶ月目)
レベル4になるためには、手を動かして各種リソースを作成することです。ここからインプット量が多くなるので大変です。まず現状把握のためにGithub CKAD Exercisesを一通り解きます。
おそらくこの段階だと、解答を見ずに解ける問題が無いでしょう。
それでも中身まで理解する必要はありません。雰囲気が分かればそれで良いです。並行してUdemy CKAD with Testsを読み進めていきます。
章ごとにあるテスト問題が理解の助けとなります。
レベル4
各種リソースの作成
(4ヶ月目)
ここまで来るとGithub CKAD ExercisesやUdemy CKAD with Testsの簡単な問題は解けるようになっていると思います。レベル5になるためには、Kubernetesの肝となる重要なリソース
周りの知識を深める必要があります。もう一度Github CKAD Exercisesを解いたり、Udemy CKAD with Testsの最後にある練習問題を解きます。解けなかった難しい問題について、具体的な解法を調査し、理解を深めます。おそらく、DeploymentやService、Configmap、VolumeMount辺りの内容が立ちはだかることでしょう。
レベル5
リソースの関連性理解
(5ヶ月目)
レベル4の際に実践する内容と被ります。レベル6になるための目安として、Github CKAD ExercisesやUdemy CKAD with Testsの練習問題がすらすらと解けるようになり、8割程度の正答率が確保出来れば上出来です。練習問題を解き、コマンドラインからマニフェストを作成することに慣れていきましょう。
レベル6
複合的なマニフェスト作成
(6ヶ月目前半)
ここまで来ると、あとはお題に沿って「素早く」、「正確に」マニフェストを作成出来るようになることが目標です。試験の1, 2週間前の仕上げの段階と言えるでしょう。Linux Foundation 試験シミュレーター(練習問題)を実施しましょう。本番と比べるとかなり難しい問題が並んでおり、所見だと通常の倍程度の時間がかかることでしょう。このシミュレーターの問題がすらすらと解けるように、解法を確認し、問題を解くための前提知識を復習します。ここまで来ると、最初は全く解けなかったGithub CKAD Exercisesの問題が簡単に解けるようになっているはずです。
レベル7
お題通りのマニフェスト作成
(6ヶ月目後半)
あとはCKAD受験に備えるのみです。一度落ちても、二度目は無料で再受験できるので、
100%のコンディションを目指す前に、さっさと試験を受けてしまうことをオススメします。

 

おわりに

 

CKADの学習で得られたもの、出来るようになったことを振り返ると共に、
筆者のCKAD学習戦略を整理し、紹介いたしました。

CKADの学習に悩んでいる方にとって、
本記事が勉強の支えとなることを期待しています。

筆者自身、この振り返りと整理を通じて、
資格勉強における成功の再現性を確保できることを期待しています。

ここまで読んでいただき、ありがとうございました。

 

コメントや意見などがあればご連絡ください。