Kubernetes OperatorはKubernetes APIの拡張のようなもので、独自のリソース(CRD)とロジック(Controller)を作成し、Kubernetesには本来ない機能を実現することができます。
OperatorはKuberneters世界のSRE(Site Reliability Engineer)のような存在であり、Kuberneters上のアプリケーションの稼働状況を監視を続け、データのバックアップ、障害からの修復、アプリケーションのアップグレードなどを自動的に行うことが可能です。
Operatorの仕組み
Operatorは、CRD(Custom resource definition)とController二つの部分で構成されてします。
CRD:DeploymentやPodはKubernetesの固有リソースに対して、CRDはKubernetes APIを拡張してユーザが定義する独自のリソースである。
Controller:Kubernetes上のリソースを監視・維持するコントロールプレーンのロジック
Operatorの例:
簡単な例としてetcd Operatorを使い説明することが多いです。
Kubernetes etcd は分散型のキー・バリュー・ストアです。etcd クラスターの管理には、通常、専門的な知識を持つ管理者が必要です。etcd の管理者は、次のようなことを理解している必要があります
・新しいノードを etcd クラスターに参加させる方法。そのためには、エンドポイントの設定、永続ストレージへの接続、既存メンバーへの通知などを行う必要がある。
・etcd クラスターのデータと構成情報のバックアップを行う。
・etcd クラスターを新しい etcd バージョンにアップグレードする
etcd オペレーターの場合、上記の内容をすべて自動化でき、また、自身が管理するetcdクラスタの内部状態を把握しており、カスタムリソースで定義された「望ましい状態(desired state)」と実際の状態を一致させるために、定期的にアクションを実行します。
感想
テクニカルコンサルタントとしては、Operatorを使用する場合、お客様環境にソフトウェアのデリバリがより効率的に実施できることを感じています。
また、Operatorはデプロイされたサービスやシステムを監視・管理するできるため、保守作業も楽になります。