27章Controller(コントローラ)
Controllerは、積極的にKubernetesのリソースの集合が望んだ状態であるかを監視し、その状態を保ちます。Kubernetesの心臓部そのものが、アプリケーションの現在の状態を定期的に監視し、宣言された希望の状態であるように調整(reconcile)を行うコントローラの集まりで構成されています。この章では、プラットフォームを必要に応じて拡張するためにこのControllerパターンを利用する方法を見ていきます。
27.1 問題
Kubernetesが、すぐに使えるたくさんの機能を用意した、洗練され、かつ総合的なプラットフォームであることはすでに見てきました。一方で、Kubernetesは汎用的なオーケストレーションプラットフォームであり、あらゆるアプリケーションのユースケースをカバーしているわけではありません。しかし幸いなことに、特有のユースケースを実績あるKubernetesの構成要素上にエレガントに実装できる、拡張可能な部分が始めから用意されています。
その際に疑問となるのが、Kubernetesを変更したり壊したりすることなくそれを拡張する方法と、特有のユースケースにおいてそういった機能をどのように使うのかということです。
Kubernetesは意図して、リソースを中心とする宣言的なAPIの上に作られています。ここで言う宣言的(declarative)とは厳密にはどういう意味でしょうか。命令的(imperative)な手法とは逆に、宣言的な手法ではKubernetesに対しどのようにするかではなく、対象の状態がどのようになるべきかを説明します。例えば、Deploymentをスケールアップする時、新しいPodを作れとKubernetesに対して積極的に命令することはありません。その代わり、KubernetesのAPIを通じてDeploymentリソースの ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access