はじめに
本記事の内容
Certified Kubernetes Application Developerに合格しました(CKAD-1900-001515-0100)ので、
自身の事前学習/申し込み/受験の流れをまとめました。
これから受験される方のお役に立てば幸いです。
CKADとは
https://training.linuxfoundation.org/certified-kubernetes-application-developer-ckad-jp/ より抜粋
Certified Kubernetes Application Developer (CKAD) プログラムは、The Linux FoundationとCloud Native Computing Foundation(CNCF:Kubernetesのホスト プロジェクト)により、標準化されたトレーニングと認定を通してKubernetesエコシステムを拡充するために開発されました。
- 試験の仕組み
- 試験の実施方法
- オンライン
- 試験の所要時間
- 2時間
- 認定の有効期間
- 2年間
- 受験料
- $300
- 受験料に含まれているもの
- 12ヶ月間の試験受験資格
- 無料の再受験
- PDF形式の証明書
- 経験レベル
- 中級
- 試験の実施方法
- 参考リンク
事前学習
学習開始時点の状況
筆者のスキルレベルは下記の通りです
- v1.7くらいから趣味でちょこっと触っていた
- 本格的に触りはじめたのが今年入ってから
ある程度は触っていたので、本番にあわせて公式ドキュメントを読みつつkubectlを叩くことに集中しました。
学習環境
- Kubernetes
- Minikube
- 試験環境はv1.15だったので、それに合わせて構築
- Minikube
- エディタ
- Vim
- 試験中はVimで操作するため
-
~/.vimrc
のカスタマイズも一旦消して初期状態のVimで練習
- Vim
CKADではクラスタ自体を作成するような問題はでないためMinikubeでサクッと構築しました。
minikube start
の--kubernetes-version
オプションでK8sのバージョンを指定できますので、自分が受験するバージョンで構築すると良いです。
学習コンテンツ
CKAD Curriculm
試験の出題範囲ですが、CNCFよりCKADのカリキュラムが公開されています。
https://github.com/cncf/curriculum
LinuxFoundationの研修やUdemyの研修もありますが、自分は上記カリキュラムから試験内容をイメージして勉強をしました。
試験に向けた勉強としては10時間程度です。
大項目 | 小項目 | 試験に向けてやったこと 赤:コマンド系 青:Resouceの設定項目系 |
---|---|---|
CoreConcepts (13%) |
Understand Kubernetes API primitives | (なし) |
" | Create and configure basic Pods | ・Podを作る ・kubectl run --restart=Never ・特定のPortを公開するPodを作る ・kubectl run --port=8080 --restart=Never ・特定のコマンドを実行するPodを作る ・kubectl run --restart=Never --command |
Configuration (18%) |
Understand ConfigMaps | ・ConfigMapを作る ・kubectl create configmap --from-literal/--from-file ・Podから利用する ・環境変数として利用する(env) ・ファイルとして利用する(volumes/volumeMounts) |
" | Understand SecurityContexts | ・ユーザIDを固定する(securityContext) ・SELinuxオプションを変更する ・capabilityを変更する |
" | Define an application's resource requirements | ・コンテナごとにリソースを割り当てる(request/limit) ・Namespace内のリソースを制限する(ResourceQuota/LimitRange) |
" | Create & consume Secrets | ・Secretを作る ・kubectl create secret ・Podから利用する ・環境変数として利用する(env) ・ファイルとして利用する(volumes/volumeMounts) |
" | Understand ServiceAccounts | ・ServiceAccountを作る ・kubectl create serviceaccount) ・PodにServiceAccountを設定する(serviceAccountName) |
Multi-ContainerPods (10%) |
Understand Multi-Container Pod design patterns(e.g.ambassador,adapter,sidecar) | ・複数のコンテナを含むPodを作成する ・initContainerで初期化処理を行う |
Observability (18%) |
Understand LivenessProbes and ReadinessProbes | ・コンテナに対してProbeを設定する(livenessProbe/readinessProbe) |
" | Understand container logging | ・コンテナのログを見る ・kubectl logs ・直前に稼動していたコンテナのログを見る ・kubectl logs -p |
" | Understand how to monitor applications in Kubernetes | ・イベントを見る ・kubectl get event ・詳細を見る ・kubectl describe ・出力形式を変更する ・kubectl get -o json |
" | Understand debugging in Kubernetes | ・(同上) |
PodDesign (20%) | Understand how to use Labels, Selectors, and Annotations | ・ラベルをつける ・kubectl label ・アノテーションをつける ・kubectl annotate |
" | Understand Deployments and how to perform rollingupdates | ・Deploymentを作る ・kubectl run ・Deploymentを更新する ・kubectl edit deployment ・更新状況を確認する ・kubectl rollout status |
" | Understand Deployments and how to perform rollback | ・Deploymentを前回の状態に戻す ・kubectl rollout undo ・Deploymentの履歴を確認する ・kubectl rollout history |
" | Understand Jobs and CronJobs | ・Jobを作る ・kubectl run --restart=OnFailure ・CronJobを作る ・kubectl run --schedule |
StatePersistence (8%) | Understand PersistentVolumeClaims for storage | ・PersistentVolumeを作る ・StorageClassを作る ・PersistentVolumeClaimsを作る ・PodからPVCを利用する ・StatefulSetからPVを利用する |
Services&Networking (13%) | Understand Services | ・Serviceを作る ・ClusterIP ・NodePort ・LoadBalancer ・labelを付け替えてBlue/Greenをやってみる |
" | Demonstrate basic understanding of NetworkPolicies | ・NetworkPolicyを作る |
<参考>研修等
研修などもいくつかあります。お財布&時間と相談して受けてみるのも良いかと。
Certified Kubernetes Application Developer (CKAD-JP)(個別だと$300。試験とセットだと$199)
Kubernetes Certified Application Developer (CKAD) with Tests(24,000円だけど定期的に90%近くオフに)
dgkanatsios/CKAD-exercises(無料)
申し込み
試験の申し込み
公式サイトから申し込みます。特に要望がなければCKAD-JPで。試験官とのやりとりが(多分)日本語になります。
https://training.linuxfoundation.org/certified-kubernetes-application-developer-ckad-jp/
時間帯について、自分が申し込んだ際は平日08:00~16:00の間でいくつか枠が用意されていました。
休日には枠がなかったようにみえましたが、もともとないのか埋まっていたのかは不明です。
試験会場の準備
貸し会議室を借りたり会社の会議室をおさえておきましょう。カフェのようなオープンな場はNG。
試験は2時間ですが、事前準備等あるので前後30分くらい余裕をもっておさえておくと良いです。
端末の準備
- Chromeブラウザ
- 受験用のExtensionを事前にインストール
- Kubernetesのサイトをブックマークしておくと◎
- Webカメラ
- 自分はUSBで接続するカメラを利用しましたが、ノートPCのカメラでも可能です。
試験
試験直前の準備
- ブラウザの確認
- 試験官の指示に従って確認作業を行います。会話の必要はなく、チャットでのやりとりとなります
- CKAD-JPで申し込んだためか、日本語でのやりとりでした。
- 試験官の指示に従って確認作業を行います。会話の必要はなく、チャットでのやりとりとなります
- 受験者の確認
- 国が発行する写真つきの証明書が必要となります。
- 自分はパスポートを利用しました。
- 国が発行する写真つきの証明書が必要となります。
- 周囲の確認
- 机の周りや下などをチェックされます
- このとき外付けカメラだと取り回しやすいです。
- 机の周りや下などをチェックされます
試験
時間は結構短いです。自分は下記を意識しつつ&使いつつ進めました。
-
kubectl --dry-run -o yaml
などでベースを作る- 時間を節約するために。残りはvimで手直し
-
kubectl -h
でオプションを確認- ちょっとしたオプションであれば、公式サイトを検索するより早い
- はじめに
source <(kubectl completion bash)
を叩いて補間を使えるようにしておく- Pod名などの補間が効くので便利
- ctl+c/ctl+v(コピペ)はブラウザ上では使えないのでマウスでコピペ
- Ins+特定のキーでコピペ可能なようですが、変な操作をしてしまいそうだったのでマウスに
tmuxが使えるといったことをどこかで見た気がしたのですが、自分は必要ありませんでしたので利用できるか確認していません。必要に応じて利用しましょう。ブラウザ上で起動するNotepadも利用できます。
あとはvimになれておくと◎。
結果&おわりに
試験終了から36時間以内に結果が届くとのことで、自分の場合は32時間後くらいに届きました。
結果はスコア89%で合格でした。(66%が合格ライン)
手も足も出ない問題はなかったのですが、単純にYAMLの記述ミスで時間がかかってしまったところはありました。
ほぼ手ごたえ通りのスコアかなと思います。
基本的なところから実践的な問題までいろいろあって楽しかったです。
(「K8sのあのコンセプトをこの問題で説明させたいんだな」的な)
1回は無料で再受験できるので、受けてみるのをオススメします。
次はCKAをがんばりたい。