Kubernetes

Operator(Kubernetesオペレーター) おぺれーたー

KubernetesカスタムコントローラーCRD自動化StatefulSet運用自動化
Operatorについて教えて

簡単に言うとこんな感じ!

OperatorはKubernetesの「熟練担当者ロボット」だよ!データベースの起動・設定・バックアップ・バージョンアップみたいな複雑な作業を、人間の代わりに自動でやってくれる仕組みなんだ。「こうなってほしい」って書いておくだけで、あとは勝手にやってくれるってこと!


Operatorとは

Operatorとは、Kubernetes上でアプリケーションの運用知識をコードとして表現し、自動実行するための仕組みです。通常、Kubernetesはコンテナのデプロイや再起動といった基本的な管理は得意ですが、データベースのレプリカ設定やバックアップスケジュール管理など、アプリケーション固有の複雑な運用作業は人間が手動でおこなう必要がありました。Operatorはその「人間のオペレーター(担当者)」の知識と手順をプログラムに落とし込んで、自動化するものです。

OperatorはCRD(Custom Resource Definition:カスタムリソース定義)カスタムコントローラーの2つの要素で構成されます。CRDで「こういう設定のデータベースが欲しい」という独自の設定書を作れるようにし、カスタムコントローラーがその設定書を読んで実際に操作を実行します。2016年にCoreOSが提唱した概念で、現在ではPrometheus OperatorやMySQL Operatorなど、さまざまなミドルウェア向けのOperatorが公開・活用されています。


Operatorの仕組みと構造

Operatorは「Reconciliation Loop(調停ループ)」という考え方に基づいて動作します。「あるべき状態(Desired State)」と「現在の状態(Current State)」を常に比較し、差があれば自動的に修正します。

要素役割
CRD独自リソース定義(設定の型)MySQLCluster という新しい種類のリソースを定義
CR(Custom Resource)CRDに基づいた実際の設定書replicas: 3 のMySQLクラスターを作るよう指示
カスタムコントローラーCRを監視して操作を実行するプログラムPodの起動・設定変更・フェイルオーバーを自動実行
Reconciliation Loop状態監視と差分修正のサイクル現状と設定書を比較して継続的に修正

覚え方:「設定書を書くだけ、あとはロボットにおまかせ」

設定書(CR)を書く → Operatorが読む → 自動でやってくれる」という流れを覚えれば大丈夫。人間がいちいち手順書通りに作業しなくていいのがポイントです。

Operatorの成熟度レベル(Operator Maturity Model)

Red Hatが定義したOperatorの成熟度は5段階あります。

レベル名称できること
Level 1Basic Installインストール・設定の自動化
Level 2Seamless Upgradesアップグレードの自動化
Level 3Full Lifecycleバックアップ・リカバリの自動化
Level 4Deep Insightsメトリクス・ログ・アラートの提供
Level 5Auto Pilot自動スケーリング・自動チューニング

歴史と背景

  • 2016年 — CoreOSがOperatorパターンを提唱。etcd OperatorとPrometheus Operatorを公開し、コンセプトが広まる
  • 2018年 — Red HatがCoreOSを買収。Operatorの普及を加速させる
  • 2018年Operator Frameworkがオープンソースで公開。Operatorを開発するためのツールキット(Operator SDK)が整備される
  • 2019年OperatorHub.ioが開設。コミュニティ製Operatorを一覧・配布するポータルが誕生
  • 2020年以降 — MySQL、PostgreSQL、Kafka、Elasticsearchなど主要ミドルウェアの公式Operatorが続々登場。エンタープライズ利用が本格化
  • 現在 — ステートフルアプリケーション(データを持つアプリ)の管理における事実上の標準パターンとして定着

通常のKubernetes管理との比較

Operatorがない場合とある場合で、運用の手間は大きく変わります。

Operatorなし vs Operatorあり ❌ Operatorなし(手動運用) ① 担当者が手順書を確認 バージョンアップ手順を調べる ② kubectl で手動操作 コマンドを1つずつ実行 ③ 状態を目視確認 ログや Pod 状態を人間がチェック ④ 問題があれば手動で対処 担当者の知識・経験に依存 ✅ Operatorあり(自動運用) ① CR(設定書)を書く version: "8.0" replicas: 3 など ② Operatorが自動検知 Reconciliation Loopが常時監視 ③ 差分を自動修正 バックアップ・フェイルオーバーも自動 ④ 常にあるべき状態を維持 人手不要・24時間対応 vs

主要なOperatorの例

Operator名対象ソフトウェア主な自動化内容
Prometheus OperatorPrometheus(監視)監視設定の自動適用・スケーリング
MySQL OperatorMySQLクラスター構築・バックアップ・フェイルオーバー
StrimziApache KafkaKafkaクラスター管理・ローリングアップデート
cert-managerTLS証明書証明書の自動発行・更新
Argo CDGitOpsGitリポジトリとの同期・デプロイ自動化

関連する規格・RFC

※ OperatorはKubernetesのエコシステム内のデザインパターンであり、IETFやIEEEの正式規格は定義されていません。関連する仕様は以下を参照してください。

仕様・リソース内容
Kubernetes CRD仕様CRD(Custom Resource Definition)の公式ドキュメント
Operator FrameworkOperatorの開発・配布を支援するOSSフレームワーク
OperatorHub.ioコミュニティOperatorのカタログ

関連用語

  • ./440-kubernetes.md — Operatorが動作するコンテナオーケストレーション基盤
  • ./441-crd.md — Operatorで使う独自リソースを定義するKubernetesの拡張機能
  • ./443-controller.md — Operatorの中核となる「あるべき状態」を維持し続けるループ処理
  • ./444-statefulset.md — データを持つアプリをKubernetesで管理するリソース。Operatorの主な対象
  • ./445-helm.md — KubernetesアプリのパッケージマネージャーでOperatorとよく比較される
  • ./446-gitops.md — Gitを信頼できる唯一の設定源として自動デプロイするパターン
  • ./447-reconciliation-loop.md — Operatorが「あるべき状態」と「現在の状態」を比較・修正し続ける仕組み
  • ./448-operatorhub.md — コミュニティが作ったOperatorを探して導入できるカタログサービス