‫CRDとOperatorパターン｡
‫ここからがKubernetesの面白いところです｡
‫というのも､
‫Kubernetesにサードパーティーのツールを追加し始めると､ それを拡張するためのAPIがたくさん出てくるからです｡
‫Kubernetes自体が自分たちのプラットフォームとなり､
‫設計されていないことや､ 思いもよらないことができるようになります｡
‫まず､ この講座でここまで気づかなかった方もいるかもしれませんが､ Kubernetesにはサードパーティのものを追加することができます｡
‫Kubernetes APIを使うだけではありません｡
‫さて､ カスタムリソースとカスタムコントローラを使えば､ APIを変更することができます｡
‫実際にAPIを使って拡張することができます｡
‫そうすると､
‫コマンドラインのkubectlも新しいコマンドを取得し､ 新しいリソースタイプや新しいコントローラを見ることができるようになります｡
‫数年前､
‫CoreOSはOperatorパターンについての素晴らしい記事を発表しました｡
‫これは､ カスタムリソースとカスタムコントローラを一緒に実装することで､ 以前は複雑だったソフトウェアをKubernetesで使用できるようにし､ Kubernetesがそのソフトウェアを認識するようにする方法です｡
‫Prometheusのような複雑な監視システムを持っていて､
‫それをデプロイして運用し､ 常に最新の状態に保ちながら､
‫あらゆることを行いたい場合､ 必ずしもそのさまざまな部分と､
‫それらがKubernetesでどのように機能するかを学ぶ必要はないでしょう｡
‫中にはStatefulSetが必要なものもあるかもしれません｡
‫中には､ デプロイメントやサービスが必要なものもあるかもしれません｡
‫中には､ ある種のクーロンジョブが必要な場合もあるかもしれません｡
‫つまり､ モニタリング・ソリューションを完全に機能させるためには､
‫さまざまな種類のリソースが必要になる可能性があるのです｡
‫これはほんの一例です｡
‫基本的には､ このパターンを採用し､ Kubernetesに独自のカスタムコードを実装して拡張しているソフトウェアがすべてです｡
‫基本的には､ これらのツールをKubernetes自体の一部としてネイティブに操作するためのkubectlコマンドを提供します｡
‫オープンソースのいろいろなものがそうなっているのは､ こういうものを入れればいいんだ...ということです｡
‫をクリックすると､
‫リストやさまざまなWebサイトが表示されます｡
‫デプロイしたものがそのまま実行されるのではなく､
‫Kubernetes自体からコマンドやその他のAPIを取得する､ とても複雑なYAMLファイルだと考えてください｡
‫Kubernetesは新しい技術なので､ 非常にエキサイティングな分野であり､ Kubernetesがいかにすべてを支配しているかを示しています｡
‫管理・制御できないものはないようなものです｡
‫なぜなら､ それぞれがKubernetesに独自の情報をETCDデータベースに追加したり､
‫APIやコントロールプレーンを拡張したり､ その他もろもろのことを行うからです｡
‫あまり増やしすぎると､ システム自体が複雑になりすぎてしまう可能性のある分野かもしれませんね｡
‫今は､ 少なくともモニタリング､ データベース､
‫バックアップ､ ロギングなどについては､ インターネットで見たYAMLを見つけて､ そのYAMLファイルを使ってデプロイしたいというよりも､
‫CRDの取得やOperatorパターンによるデプロイに重点を置くべきでしょう｡
‫これにより､ よりインテリジェンスになりました｡
‫それぞれについてたくさんの資料がありますし､
‫もちろんそれぞれで実装や使い方が違うでしょう｡
‫存在する以上､
‫絶対にチェックすることをお勧めします｡