4.6. Operator 条件の管理
クラスター管理者は、Operator Lifecycle Manager (OLM) を使用して Operator 条件を管理できます。
4.6.1. Operator 条件の上書き
クラスター管理者には、Operator が報告するサポートされている Operator 条件を無視することをお勧めします。Operator 条件が存在する場合、Spec.Overrides
配列の Operator 条件は Spec.Conditions
配列の条件を上書きし、これによりクラスター管理者は、Operator が Operator Lifecycle Manager (OLM) に状態を誤って報告する状況に対応することができます。
デフォルトでは、 Spec.Overrides
配列は、クラスター管理者によって追加されるまで、 Operator Condition
オブジェクトには存在しません。Spec.Conditions
配列も、ユーザーによって追加されるか、カスタム Operator ロジックの結果として追加されるまで存在しません。
たとえば、アップグレードできないことを常に通信する Operator の既知のバージョンについて考えてみましょう。この場合、Operator がアップグレードできないと通信していますが、Operator をアップグレードすることをお勧めします。これは、条件の type
および status
を OperatorCondition
オブジェクトの Spec.Overrides
配列に追加して Operator 条件を上書きすることによって実行できます。
前提条件
-
OLM を使用してインストールされた
OperatorCondition
オブジェクトを含む
手順
Operator の
OperatorCondition
オブジェクトを編集します。$ oc edit operatorcondition <name>
Spec.Overrides
配列をオブジェクトに追加します。Operator 条件の上書きの例
apiVersion: operators.coreos.com/v1 kind: OperatorCondition metadata: name: my-operator namespace: operators spec: overrides: - type: Upgradeable 1 status: "True" reason: "upgradeIsSafe" message: "This is a known issue with the Operator where it always reports that it cannot be upgraded." conditions: - type: Upgradeable status: "False" reason: "migration" message: "The operator is performing a migration." lastTransitionTime: "2020-08-24T23:15:55Z"
- 1
- クラスター管理者は、アップグレードの準備状態を
True
に変更できます。
4.6.2. Operator 条件を使用するための Operator の更新
Operator Lifecycle Manager (OLM) は、調整する ClusterServiceVersion
リソースごとに OperatorCondition
リソースを自動的に作成します。CSV のすべてのサービスアカウントには、Operator が所有する OperatorCondition
と対話するための RBAC が付与されます。
Operator の作成者は、Operator が OLM によってデプロイされた後に、独自の条件を設定できるように Operator を開発し、operator-lib
ライブラリーを使用することができます。Operator 条件を Operator 作成者として設定するためのロジックの作成についての詳細は、Operator SDK ドキュメントを参照してください。
4.6.2.1. デフォルトの設定
後方互換性を維持するために、OLM は OperatorCondition
リソースがない状態を条件からのオプトアウトとして扱います。そのため、Operator 条件の使用にオプトインする Operator は、Pod の ready プローブが true
に設定される前に、デフォルトの条件を設定する必要があります。これにより、Operator には、条件を正しい状態に更新するための猶予期間が与えられます。