Kube API Serverの内部実装を解説する技術同人誌を技術書典11で出しました!

bells17
10 min readJul 19, 2021

--

タイトルの通りなのですがKube API Serverの内部実装を解説する技術同人誌を技術書典11で出しました。

出した本はこれで、タイトルは『Kube API Server ~ Kubernetes API Serverの内部実装を見てみよう ~』という割とそのまんまなタイトルです。

技術書典とBoothのそれぞれで販売していて、リンクはこちらになります。

表紙はこんな感じで、表紙のイラストはSKIMA経由で https://twitter.com/confidential_y/ さんに書いていただきました。

書籍の内容について

書籍の内容についてですが、タイトルのまんまKubernetesのAPI ServerであるKube API Serverの内部実装について

  • どのようなアーキテクチャになっているのか?
  • どのような機能があり、それはどのように実装されているのか?
  • 何をどのように拡張する方法が提供されているのか?

といったことを調べてまとめたものになりますので

  • Kubernetesに興味がある方
  • Kubernetesのコンポーネントに興味がある方
  • Kubernetesの内部実装に興味のある方

は読んでいただけると良いなと思っています!

July Tech Festaでのセッション

実は書籍は昨日(2021/07/18)にリリースしたのですが、昨日はJuly Tech Festaというカンファレンスでもセッションを行いました。

セッション内容は出した書籍と同じくKube API Serverについての話しでした。

内容としては書籍で書いたKube API Serverについての内容の中で概要レベルの話しを中心にしてお話しした感じになりますので、スライドの方を見ていただいて興味ありそうであれば書籍の方も是非買っていただけると!

ちなみに何故か当日までセッション時間が40分だと勘違いしていて(実際は20分だった)、本来のスライドからだいぶ内容を削っているので、削る前の内容をどこかで発表できると良いなと思ってます。

どうしてKube API Serverの本を書いたの?

前回の技術書典10ではKubeletについての本を書きました。

そのため残りのKubernetesのコアコンポーネントは

  • Kube API Server
  • Kube Controller Manager
  • Cloud Controller Manager
  • Kube Scheduler
  • kube-proxy

となっていてました。

そのうち

  • Cloud Controller Managerはコードレベルの解説こそしていないが、大体の内部実装についてはすでに話している
  • Kube Schedulerはチェシャ猫さんなどがすでに内部実装についてそれなりに解説された記事やスライドがある
  • kube-proxyも同様にRyuSaさんなどがすでに内部実装についてそれなりに解説された記事やスライドがある

という状態で、情報が薄くて優先度が高かったのがKube API ServerとKube Controller Managerでした。

Kube Controller ManagerはKubernetesの様々なロジックを実行するKubernetes Controllerの塊のコンポーネントで、話が色んな機能に波及しそうだったため、先にKube API Serverの方をまとめようかなと思った感じです。

今回Kube API Serverの本を書くことで、僕自身

  • 公式ドキュメントなどにはまとまっていないKube API Serverのアーキテクチャが整理できた
  • 調べた内容を図や文章にまとめることで、Kube API Serverのアーキテクチャがどのようになっているのか?を具体的なイメージに落とし込めた
  • アーキテクチャを表現する実際の実装には、アーキテクチャ図などには現れない、また違った複雑さがあることが把握できた
  • 今度Kube API ServerについてのPull Requestを出そうかなと思った時に、あまり調査に時間をかけること無くどこをどう変えれば実装できるのかがわかる程度には実装を把握できた

というメリットがあったように思います。

こんな感じで本を書く、セッションで発表するといったことをアウトプット目標にすることで、Kube API Serverの実装を把握するといったような個人の時間を使って取り組むには少し重めのタスクも、うまくスケジュールとモチベーションコントロールをして取り組むきっかけになるので、今後も似たようなテーマで本を書いたりしてこうと思っています。

多分だけど次はKube Controller Managerについて本を書くことでまとめて、その後自分の理解のために

  • Kube Scheduler
  • kube-proxy

などについても調べられたらなと思っています。

どういうモチベーションで本を書いてる?

僕の場合Kubernetesの実装調査系については

  • Kubernetesに興味があって実装レベルで色々知りたい
  • Pull Request色々送れるようになりたい
  • 仕事の関係でKubernetesの実装理解は実務にも役立つ

というのがベースにあって、それを本に書いたりセッションとかで登壇してるのは

  • パブリックに公開する気でやったほうがクオリティが高いアウトプットになる
  • xxのイベントで本を出す/セッションをするという期限を設けることで、ここまでに調べてアウトプット出さなきゃというスケジュール管理とモチベーションコントロールがしやすくなる
  • がんばって調べたり書いたりしたのでどうせだったら色んな人に見て欲しい

あたりだと思ってます。

本を書くにあたってやったこと

Kube API Serverの実装調査

Kube API Serverの実装調査は↓のzennのスクラップに全部メモを取っていった感じです。

ここでメモを取ったものをベースにして、全体のアーキテクチャに関わるものや、個々の機能や実装を把握するための情報をGoogle Drawingで図を書いていって、スライドにまとめていった感じになります。

本当はメモレベルのものを別の何かにまとめ直して整理してからスライドにして行きたかったのだけど、今回はJuly Tech Festaでのセッションも時間がなかったこともありいきなり図を書いてスライドにまとめていったという流れでした。

それでスライドにまとめていったものを更に色々深堀りしていって書籍の原稿に落としていった感じです。

ただ今回本当に時間がなかったのもあって、書籍の方は文章全体を見直したり、他にも気になる項目を追加したりといったアップデートは前回と同じくやっていけたら良いなとは思ってます。

なので前回も募集させてもらったけども、本書も内容をレビューしていただける方がいると嬉しいなという感じなので、どなたか興味ある方入ればTwitterなどで連絡いただきたいです!

執筆の準備

執筆を行うにあたって表紙は先に用意しようと思ってSKIMA経由でイラストレーターさんに表紙のイラストを依頼していました。

また、依頼を出す際には

https://docs.google.com/presentation/d/e/2PACX-1vSNWzx9cW3ohynxKcRa5lgn8zXllMjq6VqkswQadCQEClHqRb-vxoJZbgZC4MPTls_ZkDrn6JfOen4L/pub

のような形をスライドを作成して依頼を出してました。

元々技術書典11は4月頃の開催と聞いていたので、前回の技術書典直後くらいにイラストを依頼していたのだけど、ちゃんと描いて頂いたイラストを使って本を出せてよかったです。

執筆環境は前回に引き続き

を使わせて頂いて、gitpodを使ってブラウザ経由で執筆してました。

前回使ってたときと違ってgitpodでpdfを表示できなくなっていたので、書いてビルドするたびにpdfをダウンロードして確認してたのがちょっと面倒でした。

TeXとかの記法については正直あまり理解できてないまま使ってるけど、前回書いた時に使ってた記法を元に最低限の書き方は理解してたので、表示崩れがあったこと以外はそこまでは困らなかったという記憶です。

本当はこれをGithub Codespaceとかに移植できると手元のVSCodeから執筆できて便利そうなんだけど、調べたりする時間があまりなかったのでスキップという感じです。

ここらへんは今度時間あったら調べたい。

--

--