@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

「実践入門 Kubernetes カスタムコントローラーへの道」を読んだ

Operator とかCustom Controller とか聞くけどなんだろうと思っていたので読んでみた。

第1章 CRD とController
第2章 client-go と知っておくべき周辺知識
第3章 Sample Controller 解説
第4章 controller-runtime とcontroller-tools
第5章 Kubebilder でSample Controller を実装しよう
第6章 OperatorSDKでSample Controller を実装しよう
第7章 Custom Resource の応用機能を実装しよう

第1章では、図付きでKubernetesアーキテクチャについて説明されている。さらには、拡張機能の一つであるCustom Resource Definition とCustom Controller について触れられている。この章でKubernetesアーキテクチャについて復習することができる。 さらには、Controller がReconciliation Loop*1 について、なぜ採用したのかの理由についても説明されている。

またその後で説明される、Custom Controller・Operatorを実装するための3つの方法が紹介されている。

  1. Kubernetes のController 実装と同じ伝統的な方法(client-go + code-generator ライブラリを利用)
  2. Kubebuilder を利用する方法
  3. Operator SDK を利用する方法

2 〜 4 章ではKubernetes が実装しているclient-go + code-generator についての説明からはじまり、実際のController のサンプル実装が説明されている。その後はOperrator 開発のためのSDK であるcontroller-runtime とcontroller-tools について説明されている。

さらに、5 章ではKubebuilder を利用してのController のサンプル実装が、6 章ではOperator SDK を利用してのController のサンプル実装が説明されている。ここまですすめば、Git に登録されているサンプルコードを参考にしながらでController を実際に自分の環境に実装してみることができる。

7 章ではKubebuilder を使って、Controller にAdmission webhook とConversion webhook の機能の追加を行っている。ここまで終わるとCustom Controller について基本的なことは理解できたような気がする。あとは自分で作りたいものを考えないとな。

まとめ

  • Custom Controller に関わるアーキテクチャや知識について勉強になった
  • サンプルコードを使うことでCustom Controller を動かしてみることができた
  • 他のKubernetes 本と違ってKubernetes の中身についてより詳しく説明されていた

*1:あるべき姿と実際の状態を比較して、実際の状態をあるべき理想の状態へと近づける