Certified Kubernetes Administrator (CKA) 取得記【エンジニアに役立つ資格】
2023年06月05日 月曜日
CONTENTS
IIJ MVNO事業部の川崎と申します。
エンジニアブログへの寄稿は2回目でして、前回はNeural Networkをつかったいいね検出装置の紹介をしました。あれから数年、今やChatGPTをはじめとした(いわゆる)AI技術が栄華を極めており、時の流れとは早いものだなあと思う今日このごろです。
さて今回は「エンジニアに役立つ資格」という企画で再度寄稿の機会ができましたので、半年ほど前に合格したCertified Kubernetes Administrator (CKA) について投稿します。
※ 本記事に記載している情報は、いずれも本ブログ執筆時点の情報である点をご留意ください
CKAとは
CKAとはLinux FoundationとCloud Native Computing Foundation(CNCF)によって作成された、Kubernetesの管理者認定資格です。
Kubernetesを構成する要素やその作成方法、トラブルシューティング等を通して、Kubernetesというエコシステムへの理解が問われます。また、2時間連続でカメラで監視されながら行うという点から、「いかに時間内に管理者として正確に問題を解決できるか」という点も求められていると考えられます。
試験を受けた動機
IIJにはIKE(IIJ Kubernetes Engine)と呼ばれる自社Kubernetes基盤があります。
私もメイン業務の合間にIKEチームから提供されたドキュメントを元にコマンドを叩いてWebサービスを立ち上げて遊んでいたのですが、そのうちピンとこない部分や理解が浅いなと感じる部分が増え、もう少し体系的なKubernetesの知識をつけたいと思ったのがきっかけです。
IKEやKubernetesに関しては弊社田口を筆頭にSRE推進部メンバーが多数記事を投稿しておりますので、あわせてご覧ください。
試験に使ったもの
私が使ったものは以下の通りです。
Certified Kubernetes Administrator (CKA) with Practice Tests
CKA対策で有名な講座です。初学者でも1つ1つ順を踏んで理解できるように、丁寧に動画解説が作られています。特にNetworkingの項目ではKubernetes以前のコンテナ単位の仕組みから解説があるので、Docker等のコンテナ技術にまつわる経験の薄い私には非常にありがたいものでした。英語の講座ですが、平易な英語+図解で説明が展開されるので、聞き取りや意味把握にそこまで苦労はしませんでした。(最近は日本語訳も付いたようです)
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
KodeKloud
上記講座にバンドルが同梱されている、Kubernetesのシミュレーション環境です。講座の各講義と仮想環境が対応しており、講座で学んだ内容をすぐにアウトプットすることができます。問題の分量も練習には十分な量あり、Mock Examと呼ばれるミニ模擬試験も付いてきます。
Killer.sh
こちらは試験運営のLinux Foundationが試験申し込み時に使用権を提供してくれる、Kubernetesのシミュレーション環境です。Playgroundや練習問題数問の他、CKAの模擬試験が2回分提供されます。Killer.shへ至る導線が若干わかりづらいのですが、試験申込時に発行されるLinux FoundationのMy Portalにログインすると、練習用環境へのリンクがおいてあります。
Kubernetes The Hard Way
管理者としてKubernetesの設定やアップデート等を行う場合、kubeadmを使った方法が推奨されていますが、このkubeadmを使わず、Google Cloud Platform上にクラスタの各構成要素をデプロイしていくというものです。controll planeやworker nodeにそれぞれどのような仕組みが入っているのかを理解する手助けになりました。(執筆現在、現在最新のKubernetesのVersionよりかなり古くなっているので利用される方はご注意ください)
https://github.com/kelseyhightower/kubernetes-the-hard-way
試験までの勉強期間
およそ2ヶ月程度でしょうか。前述した講座の視聴とシミュレーション環境による演習をだいたい平日1~3セット、休日3~5セット程度繰り返し、自分で手応えを感じたタイミングで当日申込みを行いました。(その際、自宅近所のワーキングスペースの予約も同時に行い、試験会場を確保しました)
結果
上記のようなトレーニングを積んだ上で、昨年9月24日に受験。正直手応えが微妙で不合格を覚悟していたのですが、結果は無事合格でした。
練習しておいてよかったこと / 後悔したこと
ここからはN=1な感想になりますが、試験に臨む上で実施しておいてよかったことや後悔したことを記載していきます。
良かったこと / 公式ハンドブックを熟読したこと
https://docs.linuxfoundation.org/tc-docs/certification/tips-cka-and-ckad
試験で重要なことは全てこのドキュメントに書いてあります。必要な身分証明書の情報など詳細に記載してありますので熟読推奨です。
良かったこと / Resourceのテンプレートをコマンドラインで生成する癖をつけたところ
実際の現場では、マニフェストファイルを準備した上で、 $ kubectl apply -f hogehoge.yaml
を実行することが多いかと思います。一方でCKA受験に関しては、$ kubectl create <リソース名> <パラメータ>
といったimperativeなやり方が役に立つと感じました。
例えば以下のようなコマンドですね。
$ kubectl run test --image=nginx --dry-run=client -oyaml > test.yaml # podのテンプレをimage:nginxで作る
主なメリットは以下2つ。インデントやコピペのミスを減らせる点と、公式ドキュメントにない雛形でも柔軟に対応できる点です。
前者について。CKAでは試験中(仮想環境内においてのみ)公式ドキュメントを参照することができるため、ドキュメントをコピペして必要な場所を書き換えるというやり方でも良いのですが、探している時間がもったいないですし、思うように見つからないというトラブルも考えられます。コマンドラインで出せるならそちらのほうが早いですよね。
後者について。例えば、podとdeploymentに対しget操作を許可するRoleを作るといったタスクの場合、pod, deploymentそれぞれで別に項目を立ててrulesを指定する必要があります(apiGroupsが異なるため)。私の探した限りではありますが、これと完璧に合致するマニフェストファイルは公式ドキュメントに存在しませんでした。かつ、サンプルはapiGroupsの指定が1つだけの物がほとんどであるため、試験中にマニフェストのコピペを適切に直さなければ、kubernetes側では適切なロール付与を実施してくれません。
一方、コマンドラインで生成すると、以下のようになります。
$ kubectl create role hoge --verb=get --resource=pods,deployments --dry-run=client -oyaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: creationTimestamp: null name: hoge rules: - apiGroups: - "" resources: - pods verbs: - get - apiGroups: - apps resources: - deployments verbs: - get
rulesにapiGroupsの項目が2つ指定されている点に注目してください。これが、「pod, deploymentそれぞれでrulesを指定する必要がある」という部分です。kubectlで自動生成できるのであれば、そちらのほうがいいですよね。
良かったこと / Killer.shを早めに実施し復習する
上述の通り、CKAの申込みパッケージには模擬試験2回分の権利がついてきます。
この模擬試験は本番に近い環境で大量の問題をひたすら捌くということが要求されるので、理解度チェックに非常に役立ちました。是非早めに一度解くことをおすすめします。
後悔したこと / 小さい画面の端末で試験を受けてしまったこと
部屋の都合で、試験会場は近くのワーキングスペースの個室を借りて実施することになりました。そのため自宅のラップトップ(カメラ内蔵型)を持参して受験したのですが、その端末が11inchという小さなもの。モニター付きの部屋だったのでデュアルモニターで実施すればいいだろうとタカを括っていたところ、受験前の環境チェックで「モニターの接続を解除してください」とのメッセージが。おかげで、非常に狭い画面で受験することになってしまいました。
推奨画面サイズやデュアルモニターの扱いについては公式ハンドブックにも言及があります。見落としていたわけではないのですが、公式ハンドブックは「Dual Monitors are NOT supported」という記載でした。私がそれを「使うのは勝手だけど、サポートはしないよ」と誤解釈してしまったのです。<s>英語の問題じゃん</s>
ということで、現行のCKAを自宅以外で受験する場合、大きなサイズの端末(もしくは本体のモニターの無効化準備)がほぼ必須になっていると考えられます。ご注意を。
まとめ
「エンジニアに役立つ資格」という企画で、CKAの受験記・合格記をまとめました。お読み頂いた方でこれから受験するという方は、役に立つと思う部分は取り入れ、失敗は反面教師にしていただければと思います。
Twitterフォロー&条件付きツイートで、「寝そべりバリーくんぬいぐるみ」「IIJ 30周年記念 マグカップ」「IIJ 30周年記念 珪藻土コースター」のいずれかを抽選でプレゼント!応募期間は2023/05/08~2023/06/30まで。詳細はこちらをご覧ください。今すぐツイートするならこちら→ フォローもお忘れなく!