こんにちは!グリフォンでSREをやってる徳田です。
CKAの試験についてと自分が行った試験対策について紹介したいと思います!
また、CKAの受験にあたってバックアップしてくださったKubernetesゼミについて少し紹介したいと思います!
CKAとは
Certified Kubernetes Administrator(CKA)はCloud Native Computing Foundation(CNCF)が運用・認定を行っている試験です。主にはKubernetesの管理者として必要とされるスキルを問われる内容になっています。
CKAは試験としてスタートしてから半年ほどですが、既に何度か改定が行われています。自分が試験をうけたときは1.9.0というバージョンでした。(カリキュラムはこちらから)
受験の申し込みは以下のページのRegister for the Examからできます。
Certified Kubernetes Administrator (CKA) Program
出題内容
出題された内容としては以下の通りです。(v1.9.0時点)
- Scheduling (5%)
- Logging/Monitoring (5%)
- Application Lifecycle Management (8%)
- Cluster Maintenance (11%)
- Security (12%)
- Storage (7%)
- Troubleshooting (10%)
- Core Concepts (19%)
- Networking (11%)
- Installation, Configuration & Validation (12%)
上記の項目が問われる問題が出題されます。
詳細はGitHubの cncf/curriculum のPDFを参照してください。
CKAの勉強方法
CKAを受験するに当たって自分が行った勉強方法を紹介します。
1. Kubernetesクラスタの構築
GKEなどのマネージドサービスを使わず、サーバー上にKubernetesのコンポーネントを適切に設定してクラスタを作成しました。正直、ここが一番しんどかったですw
マネージドサービスを使っていると中身の構成を知る必要はまずないです。本当によく出来ていますよね。しかしCKAはそこの部分を問う資格試験です。
自分は Google Compute Engine (GCE) のVM上にKubernetesの各コンポーネントの配置・設定やオーバーレイネットワークの構築、CNIの設定などなどを行いクラスタの構築に必要な一通りのことをやってみました。
これをやったことによって各コンポーネントがどういう流れで連携しているのか、またセキュアなクラスタを組む方法や可用性を求める際の対処方法などもイメージできるようになりました。
クラスタの構築については長くなってしまうので省略させていただきます。
2. Kubernetesのリソースについて理解
次はKubernetesで扱えるリソースについて調査しました。
- Pod
- ReplicaSet
- Deployment
- DaemonSet
- StatefulSet
- ConfigMap
- Secret
- PersistentVolumeClaim
- Volume
- StorageClass
- Service
- Ingress
- Job
- CronJob
- Role
- RoleBinding
- ClusterRole
- ClusterRoleBinding
結構な量ですが、これらを把握しておけば大丈夫です!
上記リソースはググれば多くの解説記事がでてきますのでここでは省略します。
3. kubectlコマンドでできる操作を網羅
kubectlコマンドを叩きまくりますw
kubectlのヘルプで出力されるサブコマンドについて調査し、実際に一つずつ実行してみて何ができるかを確かめました。大まかには以下の操作が可能です。
- リソースの作成 (create) ・置換 (replace) ・編集 (edit/set) ・適用 (apply) ・削除 (delete) ・取得 (get)
- ロールアウトの管理
- Deploymentなどのスケール
- クラスタ管理系
- トラシュー・デバッグ系
- label/annotation 設定・更新
これらのサブコマンド並べると結構な分量にはなるのですが、これらを把握しておけば完璧だと思います!!
4. API リファレンスの辿り方・読み方を把握する
これができればリソースファイルの書き方も分かるようになります! (そりゃそうだ)
Kubernetes 1.9でnginxのPodを作る、というのを例に辿り方を紹介します。
1. 以下のリンクからAPIリファレンスを開きます。
Kubernetes API Reference Docs – v1.9
2. 左のリストから作成するリソースを選択します。(今回は Pod v1 core)
3. Group / Version / Kind が表示されるので、 Group/Version を apiVersion 、 Kind を kind に記述します。但し、 Group が core の場合 Versionのみを記述します。
- Group : core
- Version : v1
- Kind : Pod
であれば
apiVersion: v1
kind: Pod
のような感じ。
4. metadata.nameにリソースの名前を指定します。(お約束)
apiVersion: v1
kind: Pod
metadata:
name: nginx
5. ここから必要なフィールドに値を指定していきます。
フィールドの入力項目の調べ方ですが、フィールド名直下にリンクがある場合はそのリンクを辿ることでわかります。
今回はPodについて定義するため、 spec というフィールドについて設定を記述していきます。
specの下にあるリンクを辿るとPodSpecのフィールドの一覧が表示されます。PodSpecではcontainersをarray指定する必要があるのが分かると思います。Containerのフィールドを知るためにContainerのリンクを辿ってフィールドを確認します。するとnameとimageの2つのフィールドがあるので共にnginxを指定します。
すると以下のようなリソースファイルが出来上がります。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
そしてこのファイルをkubectl create -fやkubectl apply -f などで指定するとリソースを作ってくれます!
また、ポートの露出やボリューム・ヘルスチェックなどカスタマイズしたい設定がある場合はフィールドを探して設定を追加していきます。
2. で示したリソースを1度はAPIリファレンスを辿って作成してみるとよく理解できると思います!
受験結果
なんとなんと、1発で合格することが出来ました!!
一応下記リンクのツールからも確認できます!
The Linux Foundation Certification Verification Tool
Certificate ID Number: CKA-1800-0304-0100
Last Name on Certificate: Tokuda
とまぁ、こんなにテンポよく合格することができたのは自分の力だけではもちろん無いです・・w
CyberAgentのゼミ制度の1つであるKubernetesゼミのバックアップあってこそだったのです!
Kubernetesゼミについて
CyberAgentのゼミ制度というものがありまして、そこでKubernetesゼミというのが2017年9月から開始しました。ゼミ長の長谷川 誠さんとゼミ長より早くCyberAgentで1人目としてCKAを取得した青山 真也さんが講師としてKubernetesのクラスタについての講義、クラスタ構築のサポートを行い、CKAの取得を目指す、というものでした。
長谷川さんのCKA取得記事
Certified Kubernetes Administrator(CKA) を取得しました
青山さんのCKA取得記事
Certified Kubernetes Administrator 試験に挑戦してみた。
このお二方のサポートがあってこその資格合格だったと思います!
最後に
というわけで、CKA取得できました!
今後この知識を活かしてプロダクションのインフラにKubernetesを用いてCloud Nativeなインフラを組んでいきたいと思っている所存です!
また、2018年4月にJapan Container Daysという日本でコンテナのカンファレンスが行われます!コンテナオンリーでこの規模のカンファレンスは日本で初だと思います!また、先程紹介したKubernetesゼミの講師の長谷川さんと青山さんのお二人もキーノートとセッションで登壇されますので、興味のある方は是非参加してみてください!