4.4. カタログコンテンツの解決
カスタムリソース (CR) でインストールするクラスター拡張機能を指定すると、Operator Lifecycle Manager (OLM) v1 がカタログの選択を使用して、インストールするコンテンツを解決します。
次の操作を実行すると、カタログコンテンツの選択を制御できます。
- カタログを選択するためのラベルを指定する。
- 一致式を使用して、すべてのカタログに対して複雑なフィルタリングを実行する。
- カタログの優先度を設定する。
カタログの選択基準を指定しなかった場合、Operator Lifecycle Manager (OLM) v1 により、要求されるパッケージを提供するクラスター上の利用可能なカタログから拡張機能が選択されます。
解決中、デフォルトでは、非推奨ではないバンドルが非推奨のバンドルよりも優先されます。
4.4.1. 名前によるカタログ選択 リンクのコピーリンクがクリップボードにコピーされました!
カタログがクラスターに追加されると、カタログカスタムリソース (CR) の metadata.name フィールドの値を使用してラベルが作成されます。拡張機能の CR で、spec.source.catalog.selector.matchLabels フィールドを使用してカタログ名を指定できます。matchLabels フィールドの値では、次の形式を使用します。
metadata.name フィールドから導出されたラベルの例
- 1
metadata.nameフィールドから導出された、カタログが適用されると自動的に追加されるラベル。
次の例では、openshift-redhat-operators ラベルを持つカタログから <example_extension>-operator パッケージを解決します。
拡張機能 CR の例
4.4.2. ラベルまたは式によるカタログの選択 リンクのコピーリンクがクリップボードにコピーされました!
クラスターカタログのカスタムリソース (CR) 内のラベルを使用すると、カタログにメタデータを追加できます。その後、割り当てられたラベルを指定するか、クラスター拡張機能の CR で式を使用して、カタログ選択をフィルタリングできます。
次のクラスターカタログ CR では、値が true の example.com/support ラベルを catalog-a クラスターカタログに追加します。
ラベルを使用したクラスターカタログ CR の例
次のクラスター拡張機能 CR では、matchLabels セレクターを使用して、example.com/support ラベルと true の値を持つカタログを選択します。
matchLabels セレクターを使用したクラスター拡張機能 CR の例
matchExpressions フィールドを使用すると、ラベルに対してより複雑なフィルタリングを実行できます。次のクラスター拡張機能 CR では、example.com/support ラベルと production または supported という値を持つカタログを選択します。
matchExpression セレクターを使用したクラスター拡張機能 CR の例
matchLabels フィールドと matchExpressions フィールドの両方を使用する場合、カタログが選択されるには、指定されたすべての条件を満たしている必要があります。
4.4.3. ラベルまたは式によるカタログの除外 リンクのコピーリンクがクリップボードにコピーされました!
NotIn または DoesNotExist 演算子を使用してメタデータに一致式を使用することで、カタログを除外できます。
以下の CR では、example.com/testing ラベルを unwanted-catalog-1 および unwanted-catalog-2 クラスターカタログに追加します。
クラスターカタログ CR の例
クラスターカタログ CR の例
次のクラスター拡張機能 CR では、unwanted-catalog-1 カタログからの選択を除外します。
特定のカタログを除外するクラスター拡張機能 CR の例
次のクラスター拡張機能 CR では、example.com/testing ラベルを持たないカタログから選択します。その結果、unwanted-catalog-1 と unwanted-catalog-2 の両方がカタログ選択から除外されます。
特定のラベルを持つカタログを除外するクラスター拡張機能 CR の例
4.4.4. 優先度によるカタログ選択 リンクのコピーリンクがクリップボードにコピーされました!
複数のカタログが同じパッケージを提供する場合、各カタログのカスタムリソース (CR) で優先度を指定することにより、あいまいさを解決できます。指定されていない場合、カタログのデフォルトの優先度値は 0 になります。優先度は、任意の正または負の 32 ビット整数にすることができます。
- バンドルの解決中、優先度値の高いカタログが優先度値の低いカタログよりも選択されます。
- 非推奨ではないバンドルが非推奨のバンドルよりも優先されます。
- カタログ内に同じ優先度のバンドルが複数存在し、カタログの選択があいまいな場合は、エラーが出力されます。
優先度の高いクラスターカタログ CR の例
優先度の低いクラスターカタログ CR の例
4.4.5. カタログ選択エラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
あいまいさのため、またはカタログが選択されていないためにバンドル解決が失敗した場合は、クラスター拡張機能の status.conditions フィールドにエラーメッセージが出力されます。
カタログ選択エラーのトラブルシューティングを行うには、次の操作を実行します。
- ラベルまたは式を使用して選択基準を絞り込みます。
- カタログの優先度を調整します。
- パッケージ名とバージョン要件に一致するバンドルが 1 つだけであることを確認します。