9.3. oc-mirror プラグインを使用したカスタム Operator カタログの作成
幅広い Operator を使用してカスタムカタログを作成し、oc-mirror OpenShift CLI (oc
)プラグインを使用してそれらをミラーリングできます。
9.3.1. Red Hat が提供する Operator カタログとミラーレジストリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
カタログをフィルタリングし、イメージを削除して、特定の Operator を取得し、oc-mirror OpenShift CLI (oc
)プラグインを使用してそれらをミラーリングできます。非接続設定で Operator を使用するか、Red Hat Enterprise Linux (RHEL)イメージに埋め込まれた Operator を使用することもできます。
- ミラーリング用にシステムを設定する方法は、以下の関連情報セクションのリンクを参照してください。
- Red Hat が提供する Operator カタログから Operator をデプロイする準備ができている場合は、それらをミラーリングするか、RHEL イメージに組み込むために、oc-mirror プラグインを使用したカタログコンテンツの検査 セクションから始めます。
9.3.2. ミラーレジストリーを作成するための oc-mirror プラグインについて リンクのコピーリンクがクリップボードにコピーされました!
MicroShift で oc-mirror OpenShift CLI (oc)プラグインを使用して、Operator カタログからイメージをフィルタリングおよび削除できます。その後、フィルターされたカタログコンテンツをミラーレジストリーにミラーリングしたり、非接続またはオフラインのデプロイメントでコンテナーイメージを使用したりできます。
インターネットに接続された Red Hat ホストレジストリーから切断されたイメージレジストリーにコンテンツをミラーリングする手順は、選択したレジストリーに関係なく同じです。カタログの内容をミラーリングした後、ミラーレジストリーからこのコンテンツを取得するように各クラスターを設定します。
9.3.2.1. ミラーレジストリーを作成する際の接続に関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
レジストリーを入力するときは、次のいずれかの接続シナリオを使用できます。
- 接続ミラーリング
- インターネットとミラーレジストリーの両方にアクセスできるホストがあるが、クラスターノードにはアクセスできない場合、そのマシンからコンテンツを直接ミラーリングできます。
- 非接続ミラーリング
インターネットとミラーレジストリーの両方にアクセスできるホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを非接続環境に持ち込む必要があります。
重要コンテナーレジストリーは、プロビジョニングするクラスター内のすべてのマシンから到達可能である必要があります。レジストリーに到達できない場合、ワークロードの再配置など、インストール、更新、およびその他の操作は失敗します。
到達不能なレジストリーによって発生する問題を回避するには、次の標準的な方法を使用します。
- ミラーレジストリーを高可用性の方法で実行します。
- ミラーレジストリーが少なくともクラスターの製品可用性と一致していることを確認します。
9.3.3. oc-mirror プラグインを使用したカタログ内容の検査 リンクのコピーリンクがクリップボードにコピーされました!
次の手順例を使用してカタログを選択し、OpenShift Container Platform Operator を一覧表示し、oc-mirror プラグインイメージセット設定ファイルに追加します。カタログを選択して Operator を一覧表示するには、oc mirror v1 を使用する必要があります。
独自のカタログと Operator を使用する場合は、イメージを内部レジストリーに直接プッシュできます。
前提条件
-
OpenShift CLI (
oc
)をアンインストールしている。 - Operator Lifecycle Manager (OLM)をインストールしている。
- oc-mirror プラグインをインストールしている。
手順
次のコマンドを実行して、フィルタリング可能な Red Hat 提供の Operator カタログのリストを取得します。
oc mirror list operators --version 4.18 --catalogs
$ oc mirror list operators --version 4.18 --catalogs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Red Hat Operators カタログの Operator の一覧を取得します。
oc mirror list operators <--catalog=<catalog_source>>
$ oc mirror list operators <--catalog=<catalog_source>>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
registry.redhat.io/redhat/redhat-operator-index:v4.18
またはquay.io/operatorhubio/catalog:latest
などのカタログソースを指定します。
-
Operator を選択します。この例では、
amq-broker-rhel9
Operator を使用します。 オプション: フィルタリングする Operator のチャネルとバージョンを検査するには、次のコマンドを入力します。
次のコマンドを実行して、チャネルのリストを取得します。
oc mirror list operators --catalog=registry.redhat.io/redhat/redhat-operator-index:v4.18 --package=amq-broker-rhel9
$ oc mirror list operators --catalog=registry.redhat.io/redhat/redhat-operator-index:v4.18 --package=amq-broker-rhel9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、チャネル内のバージョンのリストを取得します。
oc mirror list operators --catalog=registry.redhat.io/redhat/redhat-operator-index:v4.18 --package=amq-broker-rhel9 --channel=7.13.x
$ oc mirror list operators --catalog=registry.redhat.io/redhat/redhat-operator-index:v4.18 --package=amq-broker-rhel9 --channel=7.13.x
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- この手順で収集した情報を使用して、イメージセット設定ファイルを作成および編集します。
- 変換されたイメージセット設定ファイルからのイメージをミラーレジストリーまたはディスクにミラーリングします。
9.3.4. イメージセット設定ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
ImageSetConfiguration
YAML ファイルを作成する必要があります。このイメージセット設定ファイルは、ミラーリングする Operator と oc-mirror プラグインの設定の両方を指定します。エントリーが、使用する予定の MicroShift と Operator の両方と互換性を持つように、イメージセット設定ファイルの内容を編集します。
oc mirror v2 は、metadata の代わりにキャッシュシステムを使用します。キャッシュシステムは、1 つのステップが失敗した場合にミラーリングプロセス全体を開始する必要がなくなります。代わりに、失敗したステップのトラブルシューティングを行うと、失敗前に存在していたミラーイメージがプロセスによって再ミラーリングされません。
前提条件
コンテナーイメージレジストリーの認証情報ファイルを作成している。詳細は、以下の参考資料を参照してください。
手順
次の例をガイドとして使用して、MicroShift の
ImageSetConfiguration
YAML を作成して編集します。編集された MicroShift イメージセット設定ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージを取得する Operator カタログを設定します。
- 2
- イメージセットに含める Operator パッケージを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
- 3
- イメージセットに含める Operator パッケージの特定のチャネルのみを指定します。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。
oc mirror list operators --catalog=<catalog_name> --package=<package_name>
コマンドを実行すると、デフォルトチャネルを見つけることができます。 - 4
- イメージセットに含める追加のイメージを指定します。追加のイメージを指定する必要がない場合は、このフィールドを削除してください。
重要プラットフォーム
フィールド、関連フィールド、および Helm は MicroShift ではサポートされていません。-
更新されたファイルを
ImageSetConfiguration.yaml
として保存します。
次のステップ
- oc-mirror プラグインを使用して、イメージセットをターゲットミラーレジストリーに直接ミラーリングします。
- CRI-O を設定します。
- カタログソースをクラスターに適用します。
9.3.4.1. oc-mirror プラグイン v2 の ImageSet 設定パラメーター リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグイン v2 には、ミラーリングするイメージを定義するイメージセット設定ファイルが必要です。次の表に、ImageSetConfiguration
リソースで使用可能なパラメーターを示します。
minVersion
および maxVersion
プロパティーを使用して特定の Operator バージョン範囲をフィルターすると、複数のチャネルヘッドエラーが発生する可能性があります。エラーメッセージには、multiple channel heads
があることが示されます。これは、フィルターを適用すると、Operator の更新グラフが切り捨てられるためです。
OLM の要件として、すべての Operator チャネルに、1 つのエンドポイント (つまり最新バージョンの Operator) を持つ更新グラフを構成するバージョンが含まれている必要があります。フィルター範囲を適用すると、更新グラフが 2 つ以上の個別のグラフ、または複数のエンドポイントを持つグラフに変換されることがあります。
このエラーを回避するには、最新バージョンの Operator を除外しないでください。それでもエラーが発生する場合は、Operator に応じて、maxVersion
プロパティーを増やすか、minVersion
プロパティーを減らす必要があります。Operator グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。
パラメーター | 説明 | 値 |
---|---|---|
|
|
文字列の例: |
| イメージセットの設定。 | オブジェクト |
| イメージセットの追加のイメージ設定。 | オブジェクトの配列 以下に例を示します。 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
| ミラーリングするイメージのタグまたはダイジェスト。 |
文字列の例: |
| ミラーリングをブロックするタグまたはダイジェスト (SHA) を持つイメージのリスト。 |
文字列配列の例: |
| イメージセットの Operators 設定。 | オブジェクトの配列 以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.18 packages: - name: elasticsearch-operator minVersion: '2.4.0'
|
| イメージセットに含める Operator カタログ。 |
文字列の例: |
|
|
ブール値。デフォルト値は |
| Operator パッケージ設定 | オブジェクトの配列 以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.18 packages: - name: elasticsearch-operator minVersion: '5.2.3-31'
|
| イメージセットに含める Operator パッケージ名 |
文字列の例: |
| Operator パッケージのチャネル設定。 | オブジェクト |
| イメージセットに含める、パッケージ内で一意の Operator チャネル名。 |
文字列の例: |
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。 |
文字列の例: |
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。 |
文字列の例: |
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。 |
文字列の例: |
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。 |
文字列の例: |
| 参照されるカタログをミラーリングするための代替名とオプションの namespace 階層。 |
文字列の例: |
| oc-mirror プラグイン v2 が生成した catalogSource カスタムリソースを完了するために使用するテンプレートのディスク上のパス。 |
文字列の例: |
|
|
文字列の例: |
9.3.4.1.1. DeleteImageSetConfiguration パラメーター リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグイン v2 でイメージの削除を使用するには、ミラーレジストリーから削除するイメージを定義する DeleteImageSetConfiguration.yaml
設定ファイルを使用する必要があります。次の表は、DeleteImageSetConfiguration
リソースで使用可能なパラメーターを示しています。
パラメーター | 説明 | 値 |
---|---|---|
|
|
文字列の例: |
| 削除するイメージセットの設定。 | オブジェクト |
| 削除イメージセットの追加イメージ設定。 | オブジェクトの配列の例: additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
| 削除するイメージのタグまたはダイジェスト。 |
文字列の例: |
| 削除イメージセットの Operator の設定。 | オブジェクトの配列の例: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: elasticsearch-operator minVersion: '2.4.0'
|
| 削除イメージセットに含める Operator カタログ。 |
文字列の例: |
| true の場合、完全なカタログ、Operator パッケージ、または Operator チャネルが削除されます。 |
ブール値。デフォルト値は |
| Operator パッケージ設定 | オブジェクトの配列の例: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: elasticsearch-operator minVersion: '5.2.3-31'
|
| 削除イメージセットに含める Operator パッケージ名。 |
文字列の例: |
| Operator パッケージのチャネル設定。 | オブジェクト |
| 削除イメージセットに含める、パッケージ内で一意の Operator チャネル名。 |
文字列の例: |
| 選択したチャネル内で削除する Operator の最大バージョン。 |
文字列の例: |
| Operator が存在する選択範囲内で削除する Operator の最小バージョン。 |
文字列の例: |
| Operator が存在するすべてのチャネルで削除する最大バージョンの Operator。 |
文字列の例: |
| Operator が存在するすべてのチャネルで削除する最小バージョンの Operator。 |
文字列の例: |
9.3.5. ミラーからミラーへのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用して、イメージセットの作成中にアクセス可能なターゲットミラーレジストリーにイメージセットを直接ミラーリングできます。
前提条件
- 必要なコンテナーイメージを取得するためにインターネットにアクセスできる。
-
OpenShift CLI (
oc
) がインストールされている。 -
oc-mirror
CLI プラグインをインストールしている。 - イメージセット設定ファイルを作成した。
手順
次のコマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。
oc-mirror --config imageset-config.yaml --workspace file://<emphasis><v2_workspace></emphasis> \ docker://<emphasis><remote_registry></emphasis> --v2
$ oc-mirror --config imageset-config.yaml --workspace file://<emphasis><v2_workspace></emphasis> \
1 docker://<emphasis><remote_registry></emphasis> --v2
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Rendering catalog image "registry.example.com/redhat/redhat-operator-index:v{ocp-version}" with file-based catalog
Rendering catalog image "registry.example.com/redhat/redhat-operator-index:v{ocp-version}" with file-based catalog
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要MicroShift で CRI-O の手動設定の参照コンテンツとして、
ImageDigestMirrorSet
YAML ファイルを使用する必要があります。リソースを MicroShift クラスターに直接適用することはできません。
検証
次のコマンドを実行して、
cluster-resources
サブディレクトリーの内容を一覧表示します。ls <v2_workspace>/working-dir/cluster-resources/
$ ls <v2_workspace>/working-dir/cluster-resources/
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- < ;v2_workspace> は、ミラーリングプロセスのカスタムリソースを保存するために使用したディレクトリーに置き換えます。
次のステップ
-
CRI-O を手動で設定するために使用する
ImageDigestMirrorSet
YAML コンテンツを変換します。 - 必要に応じて、非接続またはオフラインで使用するために、ミラーからディスクにイメージをミラーリングします。
トラブルシューティング
9.3.6. Operator のレジストリーミラーを使用するための CRI-O の設定 リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインで作成された ImageDigestMirrorSet
YAML ファイルを、MicroShift で使用される CRI-O コンテナーランタイム設定と互換性のある形式に変換する必要があります。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - Operator Lifecycle Manager (OLM)をインストールしている。
- oc-mirror プラグインをインストールしている。
-
yq
バイナリーをインストールしている。 -
ImageDigestMirrorSet
およびCatalogSource
YAML ファイルは、cluster-resources
サブディレクトリーで利用できます。
手順
次のコマンドを実行して、
ImageDigestMirrorSet
YAML ファイルの内容を確認します。cat <v2_workspace>/working-dir/cluster-resources/imagedigestmirrorset.yaml
$ cat <v2_workspace>/working-dir/cluster-resources/imagedigestmirrorset.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- < ;v2_workspace> を、ミラーリングリソースを生成したときに使用したディレクトリー名に置き換えます。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
imagedigestmirrorset.yaml
を CRI-O 設定の準備が整った形式に変換します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
[[registry]] prefix = "registry.redhat.io/amq7" location = "registry.example.com/amq7" mirror-by-digest-only = true insecure = true
[[registry]] prefix = "registry.redhat.io/amq7" location = "registry.example.com/amq7" mirror-by-digest-only = true insecure = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/containers/registries.conf.d/
ディレクトリーの CRI-O 設定ファイルに出力を追加します。crio-config.yaml
ミラー設定ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ミラーレジストリーサーバーのホスト名およびポートを指定します(例:
microshift-quay:8443
)。
次のコマンドで MicroShift を再起動して、CRI-O 設定の変更を適用します。
sudo systemctl restart crio
$ sudo systemctl restart crio
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.7. oc-mirror プラグインで作成されたカスタムカタログのインストール リンクのコピーリンクがクリップボードにコピーされました!
イメージセットをミラーレジストリーにミラーリングした後、生成された CatalogSource
カスタムリソース (CR) をクラスターに適用する必要があります。Operator Lifecycle Manager (OLM)は CatalogSource
CR を使用して、ミラーレジストリーで使用可能な Operator に関する情報を取得します。次に、カスタムカタログをサブスクライブするためのサブスクリプション CR を作成して適用する必要があります。
前提条件
- イメージセットをレジストリーミラーにミラーリングしている。
- CRI-O コンテナーのランタイム設定に、イメージ参照情報を追加している。
手順
次のコマンドを実行して、results ディレクトリーからカタログソース設定ファイルを適用し、カタログソースオブジェクトを作成します。
oc apply -f ./<v2_workspace>/working-dir/cluster-resources/catalogSource-cs-redhat-catalog.yaml
$ oc apply -f ./<v2_workspace>/working-dir/cluster-resources/catalogSource-cs-redhat-catalog.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- < ;v2_workspace> は、ミラーリングプロセスのカスタムリソースを保存するために使用したディレクトリーに置き換えます。
出力例
catalogsource.operators.coreos.com/cs-redhat-catalog created
catalogsource.operators.coreos.com/cs-redhat-catalog created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、以下のサンプルファイルを参照してください。
カタログソース設定ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- グローバル namespace を指定します。
metadata.namespace
をopenshift-marketplace
に設定すると、カタログはすべての namespace 内のカタログを参照できるようになります。どの namespace のサブスクリプションでも、openshift-marketplace
namespace で作成されたカタログを参照できます。
以下のコマンドを実行して、
CatalogSource
リソースが正常にインストールされたことを確認します。oc get catalogsource --all-namespaces
$ oc get catalogsource --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME DISPLAY TYPE PUBLISHER AGE openshift-marketplace certified-operators Certified Operators grpc Red Hat 37m openshift-marketplace community-operators Community Operators grpc Red Hat 37m openshift-marketplace redhat-marketplace Red Hat Marketplace grpc Red Hat 37m openshift-marketplace redhat-catalog Red Hat Catalog grpc Red Hat 37m
NAMESPACE NAME DISPLAY TYPE PUBLISHER AGE openshift-marketplace certified-operators Certified Operators grpc Red Hat 37m openshift-marketplace community-operators Community Operators grpc Red Hat 37m openshift-marketplace redhat-marketplace Red Hat Marketplace grpc Red Hat 37m openshift-marketplace redhat-catalog Red Hat Catalog grpc Red Hat 37m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、カタログソースが実行されていることを確認します。
oc get pods -n openshift-marketplace
$ oc get pods -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cs-redhat-catalog-4227b 2/2 Running 0 2m5s
NAME READY STATUS RESTARTS AGE cs-redhat-catalog-4227b 2/2 Running 0 2m5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような
Subscription
CR を作成します。Subscription
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Subscription CR 設定を適用します。
oc apply -f ./<subscription_cr.yaml>
$ oc apply -f ./<subscription_cr.yaml>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <subscription _cr.yaml> でサブスクリプションの名前を指定します (例:
amq-broker-subscription-cr.yaml
)。
出力例
subscription.operators.coreos.com/amq-broker created
subscription.operators.coreos.com/amq-broker created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow