概要
Kubernetes Operator は、Kubernetes アプリケーションをパッケージ、デプロイ、管理する手段です。Kubernetes アプリケーションは Kubernetes にデプロイされ、Kubernetes API (アプリケーション・プログラミング・インタフェース) と kubectl ツールを使用して管理されます。
Kubernetes Operator は、Kubernetes API の機能を拡張したアプリケーション固有のコントローラーで、Kubernetes ユーザーに代わって複雑なアプリケーションのインスタンスを作成、設定、管理します。
Kubernetes のリソースとコントローラーの基本コンセプトをベースに構築されていますが、ドメインまたはアプリケーション固有の知識を含み、管理対象のソフトウェアのライフサイクル全体を自動化します。
Kubernetes では、コントロールプレーンのコントローラーがコントロールループを実装し、クラスタの目的の状態と実際の状態を繰り返し比較します。クラスタの実際の状態が目的の状態と一致しない場合、コントローラーは問題を修復するアクションを実施します。
Operator はカスタム Kubernetes コントローラーで、カスタムリソース (CR) を使用してアプリケーションとそのコンポーネントを管理します。ユーザーにより、高レベルの構成と設定がCR 内に提供されます。Kubernetes Operator は、Operator のロジックに埋め込まれたベストプラクティスに基づいて、高レベルのディレクティブを低レベルのアクションに変換します。
カスタムリソースは Kubernetes の API 拡張メカニズムです。カスタムリソース定義 (CRD) は CR を定義し、Operator のユーザーが使用できるすべての構成を一覧します。
Kubernetes Operator は CR タイプを監視してアプリケーション固有のアクションを実行し、現在の状態をそのリソースでの目的の状態に一致させます。
Kubernetes Operator はカスタムリソース定義を通じて新しいオブジェクトタイプを導入します。カスタムリソース定義は組み込みオブジェクトと同様に、kubectl による操作やロールベースのアクセス制御 (RBAC) ポリシーへの登録など、Kubernetes API で処理できます。
Kubernetes Operator はアプリケーションの実行状態をモニターし続けます。また、データをバックアップして障害から復旧し、時間が経てばアプリケーションをアップグレードでき、これらの動作は自動化されます。
Kubernetes Operator が実行するアクションには、複雑なアプリケーションのスケーリング、アプリケーションバージョンのアップグレード、さらには特殊なハードウェアによるコンピュートクラスタ内のノードのカーネルモジュールの管理まで、ほぼあらゆる処理を含められます。
Operator が Kubernetes アプリケーションを管理する方法
Kubernetes は、Web アプリケーション、モバイルバックエンド、API サービスなどのステートレスアプリケーションを管理してスケーリングできます。これらのアプリケーションの運用方法について知識を追加する必要はありません。Kubernetes の組み込み機能は、これらのタスクを容易に処理できるように設計されています。
しかし、データベースや監視システムなどのステートフルアプリケーションの場合は、Kubernetes にはないドメイン固有の知識を追加する必要があります。このようなアプリケーションをスケーリング、アップグレード、再構成するには、この知識が必要です。
Kubernetes Operator はこの固有のドメイン知識を Kubernetes 拡張にエンコードして、アプリケーションのライフサイクルを管理して自動化できるようにします。
手動による困難なアプリケーション管理タスクを排除することで、Kubernetes Operator はこれらのプロセスをスケーラブルで繰り返し利用可能にし、標準化します。
アプリケーション開発者の立場では、Operator によってアプリケーションが利用する基盤サービスのデプロイと実行が容易になります。
インフラストラクチャ・エンジニアとベンダーにとって Operator は、ソフトウェアを Kubernetes クラスタ上に配信して、アプリケーションの問題を突き止めて修正することでサポートの負荷を軽減させる、一貫した方法になります。
Operator を使ってコードを作成し、Kubernetes が提供する基本的な自動化機能では対応していないタスクを自動化できます。DevOps またはサイト信頼性エンジニアリング (SRE) アプローチに従うチームについては、Operator は SRE プラクティスを Kubernetes に取り入れるために開発されました。
Operator パターンの機能は、人間の運用担当者がサービスを管理するときの意図を捉えることです。人間の運用担当者は、アプリケーションまたはサービスの動作、デプロイ方法、発生する可能性がある問題の修正方法を、完全に理解しておく必要があります。
サイト信頼性エンジニアまたは運用チームは通常、アプリケーションを管理するソフトウェアを作成します。これに対して Operator は人間の運用知識をソフトウェアにコーディングし、Kubernetes ワークロードを管理およびデプロイし、手動タスクを排除します。
Operator は、特定のアプリケーションのインストール、実行、アップグレードに関するビジネスロジックの専門家が構築するのが最適です。
Operator の作成は、アプリケーションのインストールの自動化とセルフサービスのプロビジョニングから始まり、その後より複雑な自動化機能へと進むのが一般的です。
ユーザー固有の Operator の開発を支援する Kubernetes Operator ソフトウェア開発キット (SDK) もあります。SDK には、Operator をビルド、テスト、パッケージするツールが含まれており、Helm Chart、 Ansible Playbook、または Golang を使用して Operator を作成できます。
Red Hat のリソース
Operator Framework
Operator Framework は、開発者およびランタイム Kubernetes ツールを提供するオープンソースプロジェクトで、Operator の開発をスピードアップできます。
Operator Framework には以下のものが含まれています。
- Operator SDK:Kubernetes API の複雑性に関する知識がなくても、開発者が自分の専門知識をベースに Operator を構築できます。
- Operator Lifecycle Management:Kubernetes クラスタ上で実行されるすべての Operator のインストール、アップデート、ライフサイクル管理を監視します。
- Operator Metering:専用サービスを提供する Operator の使用状況のレポートを作成できます。
Red Hat OpenShift での Operator の使用
Red Hat® OpenShift® はエンタープライズ対応の Kubernetes コンテナプラットフォームで、ハイブリッドクラウドやマルチクラウドのデプロイメントを管理するフルスタックの自動運用機能を備えています。
Red Hat OpenShift は Kubernetes Operator を使用してプラットフォーム全体を自律的に実行し、Kubernetes オブジェクトを通じて構成をネイティブに公開します。これにより、インストールを迅速に実行でき、アップデートを頻繁かつ確実に行います。
Red Hat OpenShift には組み込み OperatorHub が含まれています。これはソフトウェアベンダーやオープンソースプロジェクトからの認定済みの Operator のレジストリです。OperatorHub では、Red Hat OpenShift で動作することが検証済みで、ライフサイクル管理が容易になるようにパッケージされている Operator のライブラリを参照してインストールできます。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。