7.2.2. Operator Controller (テクノロジープレビュー)
Operator Controller は、Operator Lifecycle Manager (OLM) 1.0 の中心的なコンポーネントであり、他の OLM 1.0 コンポーネント (RukPak および catalogd) を使用します。Operator Controller は API で Kubernetes を拡張し、これを通してユーザーは Operator や機能拡張をインストールできます。
OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
7.2.2.1. Operator API リンクのコピーリンクがクリップボードにコピーされました!
Operator Controller は、インストールされている Operator のインスタンスを表すシングルリソースである新しい Operator API オブジェクトを提供します。この Operator.operators.operatorframework.io API は、ユーザー向け API をシングルオブジェクトに統合することで、インストールされた Operator の管理を合理化します。
OLM 1.0 では、Operator オブジェクトはクラスタースコープです。これは、関連する Subscription オブジェクトと OperatorGroup オブジェクトの設定に応じて、Operator が namespace スコープまたはクラスタースコープになる以前の OLM バージョンとは異なります。
以前の動作について、詳細はマルチテナント対応と Operator のコロケーション を参照してください。
Operator オブジェクトの例
apiVersion: operators.operatorframework.io/v1alpha1
kind: Operator
metadata:
name: <operator_name>
spec:
packageName: <package_name>
channel: <channel_name>
version: <version_number>
OpenShift CLI (oc) を使用する場合、このテクノロジープレビューフェーズで OLM 1.0 が提供する Operator リソースでは、完全な <resource>.<group> 形式 (operator.operators.operatorframework.io) を指定する必要があります。以下に例を示します。
$ oc get operator.operators.operatorframework.io
API グループを指定せずに Operator リソースのみを指定すると、CLI は OLM 1.0 に関連付けられていない以前の API (operator.operators.coreos.com) の結果を返します。
7.2.2.1.1. OLM 1.0 のターゲットバージョンについて リンクのコピーリンクがクリップボードにコピーされました!
Operator Lifecycle Manager (OLM) 1.0 では、クラスター管理者は Operator のターゲットバージョンを Operator のカスタムリソース (CR) で宣言的に設定します。
Operator の CR でチャネルを指定すると、OLM 1.0 は指定されたチャネルから最新リリースをインストールします。更新が指定されたチャネルに公開されると、OLM 1.0 はそのチャネルからの最新リリースに自動的に更新します。
チャネルを指定した CR の例
apiVersion: operators.operatorframework.io/v1alpha1
kind: Operator
metadata:
name: quay-example
spec:
packageName: quay-operator
channel: stable-3.8
- 1
- 指定されたチャネルに公開された最新リリースをインストールします。チャネルへの更新は自動的にインストールされます。
CR で Operator のターゲットバージョンを指定すると、OLM 1.0 は指定されたバージョンをインストールします。ターゲットバージョンが Operator の CR で指定されている場合、OLM 1.0 は更新がカタログに公開されるときにターゲットバージョンを変更しません。
クラスターにインストールされている Operator のバージョンを更新する場合は、Operator の CR を手動で更新する必要があります。Operator のターゲットバージョンを指定すると、Operator のバージョンが指定されたリリースに固定されます。
ターゲットバージョンを指定した CR の例
apiVersion: operators.operatorframework.io/v1alpha1
kind: Operator
metadata:
name: quay-example
spec:
packageName: quay-operator
version: 3.8.12
- 1
- ターゲットのバージョンを指定します。クラスターにインストールされている Operator のバージョンを更新する場合は、Operator の CR のこのフィールドを目的のターゲットバージョンに手動で更新する必要があります。
Operator のインストールされているバージョンを変更する場合は、Operator の CR を編集して目的のターゲットバージョンにします。
OLM の以前のバージョンでは、Operator の作成者は、サポートされていないバージョンへの更新を防ぐためにアップグレードエッジを定義できました。現在の開発状態では、OLM 1.0 はエッジ定義のアップグレードを強制しません。Operator の任意のバージョンを指定でき、OLM 1.0 は更新の適用を試みます。
次のコマンドを実行すると、使用可能なバージョンやチャネルを含む Operator のカタログの内容を検査できます。
コマンド構文
$ oc get package <catalog_name>-<package_name> -o yaml
CR を作成または更新した後、次のコマンドを実行して Operator を作成または設定します。
コマンド構文
$ oc apply -f <extension_name>.yaml
トラブルシューティング
存在しないターゲットバージョンまたはチャネルを指定した場合は、次のコマンドを実行して Operator のステータスを確認できます。
$ oc get operator.operators.operatorframework.io <operator_name> -o yaml出力例
apiVersion: operators.operatorframework.io/v1alpha1 kind: Operator metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"operators.operatorframework.io/v1alpha1","kind":"Operator","metadata":{"annotations":{},"name":"quay-example"},"spec":{"packageName":"quay-operator","version":"999.99.9"}} creationTimestamp: "2023-10-19T18:39:37Z" generation: 3 name: quay-example resourceVersion: "51505" uid: 2558623b-8689-421c-8ed5-7b14234af166 spec: packageName: quay-operator version: 999.99.9 status: conditions: - lastTransitionTime: "2023-10-19T18:50:34Z" message: package 'quay-operator' at version '999.99.9' not found observedGeneration: 3 reason: ResolutionFailed status: "False" type: Resolved - lastTransitionTime: "2023-10-19T18:50:34Z" message: installation has not been attempted as resolution failed observedGeneration: 3 reason: InstallationStatusUnknown status: Unknown type: Installed