This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.10. ネットワークが制限された環境での Operator Lifecycle Manager の使用
ネットワークが制限された環境 ( 非接続クラスター としても知られる) にインストールされている OpenShift Container Platform クラスターの場合、デフォルトで Operator Lifecycle Manager (OLM) はリモートレジストリーでホストされる Red Hat が提供する OperatorHub ソースにアクセスできません。それらのリモートソースには完全なインターネット接続が必要であるためです。
ただし、クラスター管理者は、完全なインターネットアクセスのあるワークステーションがある場合には、クラスターがネットワークが制限された環境で OLM を使用できるようにできます。ワークステーションは、リモートソースのローカルミラーを準備するために使用され、コンテンツをミラーレジストリーにプッシュしますが、これにはリモートの OperatorHub コンテンツをプルするのに完全なインターネットアクセスが必要になります。
ミラーレジストリーは bastion ホストに配置することができます。bastion ホストには、ワークステーションと非接続クラスターの両方への接続、または完全に切断されたクラスター、またはミラーリングされたコンテンツを非接続環境に物理的に移動するためにリムーバブルメディアが必要な エアギャップ ホストへの接続が必要です。
以下では、ネットワークが制限された環境で OLM を有効にするために必要な以下のプロセスについて説明します。
- OLM のデフォルトのリモート OperatorHub ソースを無効にします。
- 完全なインターネットアクセスのあるワークステーションを使用して、OperatorHub コンテンツのローカルミラーを作成し、これをミラーレジストリーにプッシュします。
- OLM を、デフォルトのリモートソースからではなくミラーレジストリーのローカルソースから Operator をインストールし、管理するように設定します。
ネットワークが制限された環境で OLM を有効にした後も、引き続き制限のないワークステーションを使用して、Operator の新しいバージョンが更新されるとローカルの OperatorHub ソースを更新された状態に維持することができます。
OLM はローカルソースから Operator を管理できますが、特定の Operator がネットワークが制限された環境で正常に実行されるかどうかは、Operator 自体が次の基準を満たすかどうかに依存します。
- 
							関連するイメージ、または Operator がそれらの機能を実行するために必要となる可能性のある他のコンテナーイメージを ClusterServiceVersion(CSV) オブジェクトのrelatedImagesパラメーターで一覧表示します。
- 指定されたすべてのイメージを、タグではなくダイジェスト (SHA) で参照します。
Red Hat エコシステムカタログ でソフトウェアを検索して、以下の選択肢でフィルタリングすることにより、非接続モードでの実行をサポートする Red Hat Operator のリストを見つけることができます。
| 型 | コンテナー化されたアプリケーション | 
| デプロイメント方法 | Operator | 
| インフラストラクチャー機能 | Disconnected | 
4.10.1. 前提条件
- 
							cluster-admin権限を持つユーザーとして OpenShift Container Platform クラスターにログインします。
- 
							デフォルトカタログをプルーニングし、Operator のサブセットのみを選択的にミラーリングするには、opmCLI をインストールします。
IBM Z のネットワークが制限された環境で OLM を使用している場合は、レジストリーを配置するディレクトリーに 12 GB 以上を割り当てる必要があります。
4.10.2. デフォルトの OperatorHub ソースの無効化
Red Hat によって提供されるコンテンツを調達する Operator カタログおよびコミュニティープロジェクトは、OpenShift Container Platform のインストール時にデフォルトで OperatorHub に設定されます。ネットワークが制限された環境では、クラスター管理者としてデフォルトのカタログを無効にする必要があります。その後、OperatorHub をローカルカタログソースを使用するように設定できます。
手順
- disableAllDefaultSources: trueを- OperatorHubオブジェクトに追加して、デフォルトカタログのソースを無効にします。- oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'- $ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					または、Web コンソールを使用してカタログソースを管理できます。Administration 
4.10.3. SQLite ベースのインデックスイメージのフィルタリング
Operator Bundle Format に基づくインデックスイメージは、Operator カタログのコンテナー化されたスナップショットです。パッケージの指定された一覧以外のすべてのインデックスをプルーニングできます。これにより、必要な Operator のみが含まれるソースインデックスのコピーを作成できます。
ネットワークが制限された環境の OpenShift Container Platform クラスターでミラーリングされたコンテンツを使用するように Operator Lifecycle Manager (OLM) を設定する場合、デフォルトカタログから Operator のサブセットのみをミラーリングする必要がある場合に、このプルーニング方法を使用します。
					この手順のステップでは、ターゲットレジストリーは、ネットワークアクセスが無制限のワークステーションからアクセスできる既存のミラーレジストリーです。この例では、デフォルトの redhat-operators カタログのインデックスイメージのプルーニングも示していますが、このプロセスはすべてのインデックスイメージに対して同じです。
				
前提条件
- ネットワークアクセスが無制限のワークステーション
- 
							podmanversion 1.9.3+
- 
							grpcurl(サードパーティーのコマンドラインツール)
- 
							opm
- Docker v2-2 をサポートするレジストリーへのアクセス
手順
- registry.redhat.ioで認証します。- podman login registry.redhat.io - $ podman login registry.redhat.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ターゲットレジストリーで認証します。 - podman login <target_registry> - $ podman login <target_registry>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- プルーニングされたインデックスに追加するパッケージの一覧を判別します。 - コンテナーでプルーニングするソースインデックスイメージを実行します。以下に例を示します。 - podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.10- $ podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.10- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.10... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051 - Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.10... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 別のターミナルセッションで、 - grpcurlコマンドを使用して、インデックスが提供するパッケージの一覧を取得します。- grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out - $ grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- packages.outファイルを検査し、プルーニングされたインデックスに保持したいパッケージ名をこの一覧から特定します。以下に例を示します。- パッケージ一覧のスニペットの例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
									podman runコマンドを実行したターミナルセッションで、Ctrl と C を押してコンテナープロセスを停止します。
 
- 以下のコマンドを実行して、指定したパッケージ以外のすべてのパッケージのソースインデックスをプルーニングします。 - opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4.10 \ -p advanced-cluster-management,jaeger-product,quay-operator \ [-i registry.redhat.io/openshift4/ose-operator-registry:v4.9] \ -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4.10- $ opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4.10 \- 1 - -p advanced-cluster-management,jaeger-product,quay-operator \- 2 - [-i registry.redhat.io/openshift4/ose-operator-registry:v4.9] \- 3 - -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4.10- 4 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下のコマンドを実行して、新規インデックスイメージをターゲットレジストリーにプッシュします。 - podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4.10 - $ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4.10- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで、 - <namespace>はレジストリー上の既存の namespace になります。たとえば、- olm-mirrornamespace を作成し、ミラーリングされたすべてのコンテンツをプッシュすることができます。
4.10.4. Operator カタログのミラーリング
非接続クラスターで使用する Operator カタログをミラーリングする方法は、非接続インストールのイメージのミラーリング を参照してください。
4.10.5. クラスターへのカタログソースの追加
					カタログソースを OpenShift Container Platform クラスターに追加すると、ユーザーの Operator の検出およびインストールが可能になります。クラスター管理者は、インデックスイメージを参照する CatalogSource オブジェクトを作成できます。OperatorHub はカタログソースを使用してユーザーインターフェイスを設定します。
				
前提条件
- レジストリーにビルドされ、プッシュされるインデックスイメージ。
手順
- インデックスイメージを参照する - CatalogSourceオブジェクトを作成します。- oc adm catalog mirrorコマンドを使用してカタログをターゲットレジストリーにミラーリングする場合、manifests ディレクトリーに生成される- catalogSource.yamlファイルを開始点としてそのまま使用することができます。- 仕様を以下のように変更し、これを - catalogSource.yamlファイルとして保存します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- レジストリーにアップロードする前にローカルファイルにコンテンツをミラーリングする場合は、metadata.nameフィールドからバックスラッシュ (/) 文字を削除し、オブジェクトの作成時に invalid resource name エラーを回避します。
- 2
- カタログソースを全 namespace のユーザーがグローバルに利用できるようにする場合は、openshift-marketplacenamespace を指定します。それ以外の場合は、そのカタログの別の namespace を対象とし、その namespace のみが利用できるように指定できます。
- 3
- インデックスイメージを指定します。イメージ名の後にタグを指定した場合 (:v4.10など)、カタログソース Pod はAlwaysのイメージプルポリシーを使用します。これは、Pod が常にコンテナーを開始する前にイメージをプルすることを意味します。@sha256:<id>などのダイジェストを指定した場合、イメージプルポリシーはIfNotPresentになります。これは、イメージがノード上にまだ存在しない場合にのみ、Pod がイメージをプルすることを意味します。
- 4
- カタログを公開する名前または組織名を指定します。
- 5
- カタログソースは新規バージョンの有無を自動的にチェックし、最新の状態を維持します。
 
- このファイルを使用して - CatalogSourceオブジェクトを作成します。- oc apply -f catalogSource.yaml - $ oc apply -f catalogSource.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 以下のリソースが正常に作成されていることを確認します。 - Pod を確認します。 - 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 my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h - NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- カタログソースを確認します。 - oc get catalogsource -n openshift-marketplace - $ oc get catalogsource -n openshift-marketplace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s - NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- パッケージマニフェストを確認します。 - oc get packagemanifest -n openshift-marketplace - $ oc get packagemanifest -n openshift-marketplace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CATALOG AGE jaeger-product My Operator Catalog 93s - NAME CATALOG AGE jaeger-product My Operator Catalog 93s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
OpenShift Container Platform Web コンソールで、OperatorHub ページから Operator をインストールできるようになりました。
4.10.6. SQLite ベースのインデックスイメージの更新
カスタムインデックスイメージを参照するカタログソースを使用するように OperatorHub を設定した後に、クラスター管理者はバンドルイメージをインデックスイメージに追加して、クラスターで利用可能な Operator を最新の状態に維持することができます。
					opm index add コマンドを使用して既存インデックスイメージを更新できます。ネットワークが制限された環境の場合、更新されたコンテンツもクラスターにミラーリングする必要があります。
				
前提条件
- 
							opm
- 
							podmanversion 1.9.3+
- レジストリーにビルドされ、プッシュされるインデックスイメージ。
- インデックスイメージを参照する既存のカタログソース。
手順
- バンドルイメージを追加して、既存のインデックスを更新します。 - opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \ --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \ --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \ --pull-tool podman- $ opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \- 1 - --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \- 2 - --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \- 3 - --pull-tool podman- 4 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここでは、以下のようになります。 - <registry>
- 
										quay.ioやmirror.example.comなどのレジストリーのホスト名を指定します。
- <namespace>
- 
										ocs-devやabcなど、レジストリーの namespace を指定します。
- <new_bundle_image>
- 
										ocs-operatorなど、レジストリーに追加する新しいバンドルイメージを指定します。
- <digest>
- 
										c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41などのバンドルイメージの SHA イメージ ID またはダイジェストを指定します。
- <existing_index_image>
- 
										abc-redhat-operator-indexなど、以前にプッシュされたイメージを指定します。
- <existing_tag>
- 
										4.10など、以前にプッシュされたイメージタグを指定します。
- <updated_tag>
- 
										4.10.1など、更新されたインデックスイメージに適用するイメージタグを指定します。
 - コマンドの例 - opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4.10 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.10.1 \ --pull-tool podman- $ opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4.10 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.10.1 \ --pull-tool podman- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 更新されたインデックスイメージをプッシュします。 - podman push <registry>/<namespace>/<existing_index_image>:<updated_tag> - $ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Operator カタログのミラーリングの手順にあるステップを再度実行し、更新されたコンテンツをミラーリングします。ただし、 - ImageContentSourcePolicy(ICSP) オブジェクトの作成手順を参照する場合、- oc createコマンドの代わりに- oc replaceコマンドを使用します。以下に例を示します。- oc replace -f ./manifests-redhat-operator-index-<random_number>/imageContentSourcePolicy.yaml - $ oc replace -f ./manifests-redhat-operator-index-<random_number>/imageContentSourcePolicy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - この変更は、オブジェクトがすでに存在し、更新する必要があるために必要になります。 注記- 通常、 - oc applyコマンドを使用して、- oc applyを使用して以前に作成された既存のオブジェクトを更新できます。ただし、ICSP オブジェクトの- metadata.annotationsフィールドのサイズに関する既知の問題により、現時点では- oc replaceコマンドをこの手順で使用する必要があります。
- Operator Lifecycle Manager (OLM) がカタログソースで参照されるインデックスイメージを一定間隔で自動的にポーリングした後に、新規パッケージが正常に追加されたことを確認します。 - oc get packagemanifests -n openshift-marketplace - $ oc get packagemanifests -n openshift-marketplace- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow