Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD)受験記

## はじめに

CNCF主催の認定試験 **Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD)** を受験し合格したので、受験記を記載します。同認定試験の受験を考えている方の参考になれば幸いです。

## 免責事項(Disclamer)

:::note warn
* 本投稿は受験当時の情報となります。受験を検討する際は最新の情報の確認をお願いします。
* 本投稿は個人の所感です。
    * 所属する企業や団体は関係ありません。
    * 情報の利用は自己責任でお願いします。
:::

## この受験記について

* 2022/4月にCKA、5月にCKADを取得したので、その受験Tipsをまとめます。

:::note warn
* CKA試験は私が受験したタイミングからアップデートされ、試験範囲が一部追加されています。
* 改めてカリキュラム確認をお願いします。
:::

* 同じように受験を検討している人の参考になれば幸いです。
* 他にもインターネット上に受験記はあるため、それらで書かれている内容はこのページではさらっと書きます。受験記にない、以下のような内容がこのページのメインです。
    * CKA、CKADを合格して得られる知識レベル
    * CKA、CKADをうまく受ける方法

## 試験概要

* 受験日：2022/4/26, 2022/5/6
* 試験形式
    * オンライン試験
    * 1回再受験可能
    * 実機オペレーション形式
    * 試験時間120分
    * 試験言語は日本語、英語が提供
    * 100点満点中67点以上で合格
    * 試験中はKubernetesドキュメントを参照することができます。

## CKA,CKADとは

* Linux Foundationが主催する、Kubernetesに関する知識を認定する資格。2025年3月時点でKubernetes関連資格は以下が存在する。
    * CKA (Certified Kubernetes Administrator)：Kubernetesに関する基本的な知識 + Kubernetesクラスタの管理知識を問う資格
    * CKAD (Certified Kubernetes Application Developer)：Kubernetesを利用する側としての知識を問う資格。主にアプリケーション開発者を想定していると思われる。
    * CKS (Certified Kubernetes Security Specialist)：この試験を受けるにはCKAを持っていることが前提となる。これからもわかるように、CKAレベルの知識はある上で、セキュリティ向上のための知識を問う試験。
    * KCNA (Kubernetes and Cloud Native Associate)：Kubernetes、クラウドネイティブに関する基礎的な知識を問うアソシエイトレベルの試験。
    * KCSA (Kubernetes and Cloud Native Security Associate)：Kubernetes、クラウドネイティブにおけるセキュリティに関する知識を問うアソシエイレベルの試験。
* 上記5つの認定を取得すると[Kubestronaut](https://www.cncf.io/training/kubestronaut/)に認定されます。

### CKA, CKADを合格して得られる知識レベル

* この試験への学習では、各MWのコンテナなどをKubernetesで利用する際に備えておきたい基本的な知識が得られる（設計の前段となる基本的な知識という位置づけ）
* 一方、各MWを活用して商用レベルのシステムを組むにはこの試験に向けた学習だけでは足りないと思う。特にエコシステムやよくあるアーキテクチャなどについても学習が必要と思われる。
* CKA、CKADに向けてはHow(どう実現するか)の学習が主となるイメージ。AWS資格などはベストプラクティスとしてWhy(なぜそうするのか)、What(何を作るのか)まで一部踏み込むが、CKA、CKADはそれはあまりない。

#### 得られる知識レベル

* Kubernetesの基本的な動作コンセプト、管理コンポーネント（APIサーバ、etcd、controller manager、schedulerなど）の役割と動き
* 主要なリソース（Pod、Deployment、PV、ConfigMap、Secretなど）の扱い方
* KubernetesのマニフェストYAMLが読めるようになる
* CKAの場合、クラスタのバックアップ、クラスタ管理コンポーネントのトラブルシューティング方法、kubeadmを用いたクラスタのアップグレードなど

#### 得られない知識

* Kubernetesでシステムを組むために、機能要件・非機能要件を実現する方法
* Kubernetesをとりまくエコシステムを使ったシステムの組み方

## 勉強方法

### 学習リソース

* 以下のUdemy講座だけやっておけば基本はOK。講座の中でKodeKloudのラボ問題を解くことができる。
    * [Certified Kubernetes Administrator (CKA) with Practice Tests](https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/?srsltid=AfmBOooO0HCAybzISga7920K-qaDN7-IIM2_rlL-xrSjBRqN2wJw9hCW&couponCode=CM240325)
    * [Kubernetes Certified Application Developer (CKAD) with Tests](https://www.udemy.com/course/certified-kubernetes-application-developer/?couponCode=CM240325)

## CKA、CKADをうまく受ける方法

* 個人的には、CKA→CKADの順で間をおかず受験するのがうまい受け方かなと思います。その理由を以下に記載します。
* CKAとCKADのカリキュラム範囲は、実は8割がた重なっている
* CKAを受けたあと、CKADを受けようとすると追加で学ぶべき項目は Udemy講座 だと以下くらい。
    * セクション5: Observability
        * Rediness and Liveness probe
    * セクション6: POD Design
        * Jobs, CronJobs
    * セクション8: State Persistence
        * Stateful Sets
    * セクション9
        * Admission Controllers
        * API Versions
        * Custom Resource Definition
        * Deployment Strategy
        * Helm
* 追加で学ぶべき項目の学習にかかる時間は1~2時間程度。CKAD用の講座の最後にある模試(Mock Exam)は必須ではないが、練習として受けておいたほうがいいとは思う。
* なので、CKAの知識が生きているうちにCKADを受けると学習時間が少なく済む