【書籍】 Programming Kubernetes

を読んだので内容の中で、新たな知見となった部分をメモ程度にまとめておく。

www.oreilly.com

この本の概要・対象読者

以下のような人たちは読んでおくと良いです。 - KubernetesAPIを利用したアプリケーション開発をしようとしている人 - Kubernetesのコントローラなどの開発をしようとするひと

多少内容が古く感じる部分はありますが、そういった部分は読み飛ばしてしまってよいと思います。

各章の概要

Chapter 3. Bacis of client-go

Kubernetesのクライアントの処理ををコードレベルから詳しく説明している。

中心となっているのはクライアント操作を紐解く中で重要になる以下の2つのリポジトリであった。 - https://github.com/kubernetes/client-go - https://github.com/kubernetes/api - https://github.com/kubernetes/apimachinery

Kubernetesを扱う上で、理解するべき点が多くの本の中で一番重要な章だと感じた。

とはいえ、アプリケーションを主業務としていてプラットフォームとしてKubernetesを使う人はここまで知る必要はなく、どちらかというとこの本のターゲットであるKubernetesや関連コンポーネントの開発に携わる人が知っておきたい内容といった感じ。

Chapter 4. Using Custom Resourcesa

カスタムリソースとは何かという点から、コントローラやクライアント視点からカスタムリソースがどういった機能を持つかについて書かれていた。 - バリデーション - リソース名の省略形 - 表示カラムの変更 - サブリソース

またA Developer’s View on Custom ResourcesではDynamic Client, Typed Clientの詳細や使い分けについて触れられている。

Chapter 5. Automating Code Generation

golanは単純な言語で型を意識せずに汎用的なアルゴリズムを実装することは難しいためコードジェネレータを使用する。 - https://github.com/kubernetes/code-generator

この章ではcode-generatorの使い方とそのタグが持つ意味を解説している。

Chapter 6. Solutions for Writing Operators

カスタムコントローラを記述するための、code-generatorより更に上位レイヤーの自動化ツールについてサンプルレポジトリを題材に使い方を紹介している。

紹介されているツールは以下の通り - code-generator - Kubebuilder - Operator SDK

ただ2022年現在この本の内容はすでに古く感じた。例えばOperator SDKに関してはすでにKuberbuilderと統合されているし、コマンド体型も変更されている。

実際に使用する際は各ツールのドキュメントを読んだほうが理解が進みそうであった。

Chapter 7. Shipping Controllers and Operators

カスタムリソースに限らずKubernetesリソースのパッケージングやCI/CDについて書かれた章である。

パッケージ周りでは2つのツールが紹介されていた。 - Helm - Kustomize

加えてカスタムコントローラをデプロイする際のベストプラクティスが紹介されているが、てアカウントの権限を最小限にしたり、テストを自動化したりなど パッケージングツールの話を含めて、業務で扱っている人にとっては当たり前の内容が多い印象であった。

Chapter 8. Custom API Servers

Kubernetesでオリジナルのリソースを追加したい場合はCRDとCustom API serverを実装する方法があるが、その後者について解説している。

正直この章の内容が本書の中で一番濃く感じた。Custom API Serverの実装はkube-apiserverと構造として近いものがあり、その理解の手助けとなる章であった。

主に対象リソースへのリクエストがkube-apiserverに到達してから、レスポンスを返すまでにどういった処理が実行されているか詳しく学ぶことができた。