2.2.3. 依存関係解決のシナリオ例

以下の例で、プロバイダー は CRD または APIService を所有する Operator です。

例: 依存 API を非推奨にする

A および B は API である (例: CRD):

  • A のプロバイダーは B に依存する。
  • B のプロバイダーには Subscription がある。
  • B のプロバイダーは C を提供するように更新するが、B を非推奨にする。

この結果は以下のようになります。

  • B にはプロバイダーがなくなる。
  • A は機能しなくなる。

これは OLM がアップグレードストラテジーで回避するケースです。

例: バージョンのデッドロック

A および B は API である:

  • A のプロバイダーには B が必要。
  • B のプロバイダーには A が必要。
  • A のプロバイダーは (A2 を提供し、B2 を必要とするように) 更新され、A を非推奨にする。
  • B のプロバイダーは (B2 を提供し、A2 を必要とするように) 更新され、B を非推奨にする。

OLM が B を同時に更新せずに A を更新しようとする場合や、その逆の場合、OLM は、新しい互換性のあるセットが見つかったとしても Operator の新規バージョンに進むことができません。

これは OLM がアップグレードストラテジーで回避するもう 1 つのケースです。