CKA＆CKAD本番試験Tips

# はじめに

Kubernetesの認定資格[CKA](https://training.linuxfoundation.org/ja/certification/certified-kubernetes-administrator-cka/)と[CKAD](https://training.linuxfoundation.org/ja/certification/certified-kubernetes-application-developer-ckad/)に合格しました！
（CKAは23年3月末、CKADは23年4月上旬に認定）

受験にあたり、Udemyの模擬試験や[killer.sh](https://killer.sh/)の問題を解いたりして本番に向けた対策をするかと思いますが、本番試験の環境はそれらと微妙に異なります。killer.shの環境は本番にかなり近づけて作られているので対策としては非常に有効ですし「事前に必須でやっておくべきもの」ですが、**killer.sh環境に慣れたからって実は安心ではないのです。**

本記事では、本番試験に向けて是非知っておいて方がよさそうな内容をつらつらと書いてみようと思います。

※両資格の詳細説明、および教材(Udemy,killer.sh)等の説明については割愛させていただきます。

# 試験前Tips

## アクティブなモニターは一台で、拡張は禁止

試験で使うモニターに関して、[Linux FoundationのFAQのページ](https://docs.linuxfoundation.org/tc-docs/certification/faq-cka-ckad-cks#what-are-the-system-requirements-to-take-the-exam)には以下のように書かれています。


> One active monitor (either built in or external)  (NOTE: Dual Monitors are NOT supported)
The Linux Foundation recommends  a screen size of 15” or higher to support the ExamUI.
The Linux Foundation recommends a screen resolution of 1080p.

以下は日本語訳です。

> アクティブモニター1台（内蔵または外付け）（注意：デュアルモニターはサポートされていません）
Linux Foundation は ExamUI をサポートするために 15 インチ以上の画面サイズを推奨しています。
Linux Foundation は画面解像度 1080p を推奨しています。

「アクティブモニター1台」なので、例えばノートPCに別のモニターを接続して両方の画面がアクティブな状態で試験をすることはできません。しかし、**ノートPCのモニターは画面を閉じる等して非アクティブにすれば、接続した1台のモニターで試験が可能**です。

ノートPCと外部モニターで受験する際の注意点は、試験前にカメラで部屋全体や机の下などを撮影する必要があるため、カメラを自由に動かせる状態を確保しておくことです。WebカメラをノートPCに有線接続している場合、少なくとも机全体と机の下が覗き込めるくらい長さのものを用意しましょう。また、ノートPCと外部モニターをつなぐHDMI等のケーブルも、少なくとも2mくらいの長さはあった方がいいと思います。

## 飲み物は「ラベルを剥がしたペットボトルに入れた水」のみ持ち込み可

条件がかなり限定されますが、ペットボトル（透明な容器？）で**ラベルが剥がされて**いて、かつ**中身が水**（透明な液体？）であれば持ち込み可能のようです。

ちなみに私は飲み物の中身が麦茶で色がついていたのでNGでした...

:::note info
[Candidate Requirements](https://docs.linuxfoundation.org/tc-docs/certification/lf-handbook2/candidate-requirements)のPSIテストの説明動画を見ると、2分13秒あたりで「飲み物の持ち込み禁止」とあるので原則は禁止と思っていますが、CKA,CKADで特別に認められているのかもしれません。
:::

## PSI Bridge Secure Browserのセキュリティ設定が必要（Macの場合）

試験を行うには自分のPCに「PSI Bridge Secure Browser」と呼ばれるソフトのインストールが必要で、このソフト上で試験が行われます。Linux FoundationのマイページでCKAまたはCKADの試験ページに行き、チェックリストの一番下にある「Take Exam」をクリックすることでアプリのダウンロードページに行けます。ただ **「Take Exam」のボタンは試験開始30分前にならないと押せない** のでご注意ください。

OSがMacの場合はソフトをインストールしている途中に以下のようなウインドウが出てきて、「システム設定」アプリでセキュリティとプライバシー設定の変更を求められます。
![スクリーンショット 2023-04-10 17.29.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/370519/1116d2b7-66e3-5064-f109-18134eb85ec5.png)
指示通りに「プライバシーとセキュリティ」から「画面収録」を選択し、PSI Bridge Secure Browserからのアクセスを許可することが少なくとも必要になります。
[Candidate Requirements](https://docs.linuxfoundation.org/tc-docs/certification/lf-handbook2/candidate-requirements#system-requirements)のページを見ると、「（画面収録だけではなく）マイク、カメラ、オートメーションの許可を求められるかも」と書かれていますが、私の環境を改めて見たら「画面収録」「マイク」「カメラ」の3つをアクセス許可する設定になっていました。

# 試験中Tips

## 画面の上部分は実は隠せて、作業スペースを拡げられる

試験はPSI Bridge Secure Browserのアプリ上で、下の図のような画面で問題を解いていきます。
<img src="https://2145393087-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5QaeeC1mG9VndIpgJe%2Fuploads%2F13joD9D4ULTjRYNMP1eY%2FLF%20Remote%20Desktop%20070722d.png?alt=media&token=3784c329-768e-475c-b852-88ef98c899ce", width="840">
左側に問題文のウインドウがあって右側に作業スペースがあるのはkiller.shと同じなのですが、デフォルトだと上部がアプリの領域として使われており、killer.shよりも作業スペースが狭くなっています。killer.shをノートPCではなく、サイズの大きいモニターでやっていた人であればなおさら狭く感じてしまうでしょう。
**実はこの上部の領域は隠すことができ、作業スペースを拡げられる**のです。上図の説明でも書かれていますが、右上の"Click to Shrink the Header Bar"と吹き出しが出ているアイコンをクリックすると隠せます。

※私自身はCKAを受けた際はこれに全然気づかずに、メチャメチャ狭い領域で2時間の試験をやってのけてしまいました。。。

## ターミナルやブラウザの文字サイズを小さくする

試験環境のデフォルトのターミナルとブラウザの文字サイズが案外大きく、サイズが小さいノートPCで作業する場合はやりにくい可能性があります。その場合はターミナルだと上メニュの「View」をクリックして「Zoom Out」、ブラウザ（Firefox）は右側の「三」をクリックすれば文字サイズを調整可能です。

別のやり方として、先に紹介したPSIのサンプル画面で上の方に「-」と「＋」のボタンがありサイズを変更できそうです。ちなみに私はここを押したらどのような挙動になるのかまでは試験中に確認できていないのですが、もしかするとこちらの方が楽なのかもしれません。

## 自分がいるクラスターのコンテキストとノードを常に確認する

### コンテキストの切り替え（CKA,CKAD共通）

各問題の最初に
``kubectl config use-context [context]``
というコマンドでアクセスするクラスターを切り替える作業が必要となります。

ここをうっかり忘れてしまうと、間違ったクラスターに接続したまま作業して上手くいかずに大きな時間ロスになってしまいます。各設問で忘れずに実行するようにしましょう。

:::note warn
設問に出てくる ``kubectl config use-context [context]`` コマンドはマウスの1クリックでコピーが可能ですが、問題本文のコピー方法と少しやり方が違うのでご注意ください。具体的には、このコマンドが書かれている領域にポイント(クリックも必要かも)すると右上に"Copy"の文字が現れます。ここをクリックして文字が"Copied"に変わればコピー完了です。
※ 自分はCKAを受けた時は勘違いして「"Copy"が出たらコピー完了だろう」と思ってしまい、だけとそれだとコピーできていなくて焦りました。。。
:::

:::note info
コンテキスト切り替えはCKAの場合、killer.shの問題でも出てくるので本番でも同じことをやるんだなあと想像できるかと思います。これが「CKAD版のkiller.sh」だと一切出てこなくて、全問題が一つのコンテキストで解けるようになっています。なので「CKADだと面倒なコンテキスト切り替えをやらなくて済むー」と思いがちですが、**CKAD本番試験ではコンテキスト切り替えが必要**になるのでご注意を！
[Important Instructions: CKA and CKAD](https://docs.linuxfoundation.org/tc-docs/certification/tips-cka-and-ckad#cka-and-ckad-environment)の表を見ると見ると確かに、CKADでも複数のコンテキストを使うのがわかります。
:::

### ノードにsshした後は忘れずに戻る（CKAのみ対象）

CKAの場合は、クラスター管理に関する問題などで``kubectl``コマンドやマニフェストを書いたり修正したりするだけでは不十分で、問題が起きているノードにsshでアクセスして調査したり、クラスターのアップグレード等が必要なことがあります。無事に問題を解けて一安心してしまいがちですが、**終わったら必ずノードからログアウトする**ことを忘れないようにする必要があります。実は私自身もログアウトし忘れて以後の問題を進めてしまい上手くいかずに、若干パニックになってしまいました。。。
「今自分がどこのノードで作業しているのか？」は、ターミナルで入力を受け付ける左側（プロンプト）に書かれたノード名からわかるので、ここを適宜確認しながら問題を解いていった方がよさそうです。

## ターミナルがフリーズしてしたら「Ctrl + Q」と打ってみる

ターミナルでコマンドを打っている時に突然入力を受けつけなくなる事象に遭遇してしまうかもしれません。私もCKA受験時にターミナルがフリーズしてしまい、だいぶ焦りました。
その場合の原因として一つ考えられるのが「誤って『Ctrl + S』と打ってしまった」ことです。ターミナルでの「Ctrl + S」は出力停止を意味するコマンドで、その後に文字入力しても（内部的に受け付けてはいるのですが）出力されなくなってしまいます。これを解除したい場合は **「Ctrl + Q」と打つ** といいようです。

「Ctrl + Q」でも解決しないとか、それ以外の不測の事態でターミナルを新たに起動せざるを得なくなった場合、ターミナルで直接設定していたaliasや環境変数（``do="--dryrun=client -o yaml"``等）はまた一から設定し直すことになってしまいます。これを防ぐために``~/.bashrc``にaliasや環境変数を定義しておくのも手です。（初回編集時は編集完了後に``source ~/.bashrc``を実行することをお忘れなく！）

## リソースの作成や編集は極力``kubectl(=k)``コマンドで行う

リソースを一から作成する必要がある場合[kubernetes.io](https://kubernetes.io/)からサンプルのマニフェストを見つけてきてviにコピペしてファイル指定で``kubectl create``等を実行するのが一つのやり方ですが、「Firefoxでマニフェストを探してコピペして編集」の作業が意外と手間も時間もかかります。そこで、**極力ターミナルだけでマニフェストを作れた方がいい** と個人的には思っています。

主要なリソース（Pod, Deployment, Service, Job, ConfigMap, Secret, Role等）はPodの``kubectl run``以外は全て``kubectl create [リソース名] ...`` で作れるので、コマンドだけでリソースやマニフェストを作れるノウハウがあると結構楽です。また、既に作ったリソースを更新する場合も状況に応じて``kubectl set``,``kubectl label``,``kubectl scale``等のコマンドが使えるので、覚えておいて損はないと思います。

どちらかというと「試験前Tips」になってしまいますが、Udemyの模擬試験やkiller.shをやるときから「これってコマンドだけで完結できないかな？」と意識しながら取り組んでみるといいでしょう。Udemy講座（[Certified Kubernetes Administrator (CKA) with Practice Tests](https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/)等）のPractice Testを終えた後の解説動画でもこの辺のコマンドを駆使しているのできっと参考になると思います。

## パニックになりがち？

CKA,CKADの両方を受けてみて思ったのですが、選択式の試験とは違って状況に応じて適切な対応をターミナルからコマンドで実行していく形なので、結構頭を使って疲れます。そしてエラーなどが発生して想定通りの挙動から少しでも外れて手間取ってしまうとどんどん時間が過ぎていくので、精神的にも追い詰められいきます。(特に前半で詰まってしまうとそう...）

根本的な対策としては、緊張状態の本番でも極力詰まらないように、**Udemyの模擬試験や[killer.sh](https://killer.sh/)で多くの問題に直面して対応ノウハウを蓄積していくいくこと**だと思いますが、十分に試験の準備が取れていない方もいらっしゃると思うので **わからない問題は潔くスキップして、解ける問題から進めていく** のも一つの手です。本番試験だと問題にフラグをつける機能があるので、解けていない問題はフラグをつけていると後で探しやすくなります。

# おわりに

本記事が今後CKA,CKADを受験する方の参考になれば幸いです。