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 には、条件を正しい状態に更新するための猶予期間が与えられます。