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.8.4. Operator カタログのミラーリング
oc adm catalog mirror コマンドを使用して、Red Hat が提供するカタログまたはカスタムカタログの Operator コンテンツをコンテナーイメージレジストリーにミラーリングできます。ターゲットレジストリーは Docker v2-2 をサポートする必要があります。ネットワークが制限された環境のクラスターの場合、このレジストリーには、ネットワークが制限されたクラスターのインストール時に作成されたミラーレジストリーなど、クラスターにネットワークアクセスのあるレジストリーを使用できます。
OpenShift Container Platform クラスターの内部レジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
oc adm catalog mirror コマンドは、Red Hat が提供するインデックスイメージであるか、または独自のカスタムビルドされたインデックスイメージであるかに関係なく、ミラーリングプロセス中に指定されるインデックスイメージをターゲットレジストリーに自動的にミラーリングします。次に、ミラーリングされたインデックスイメージを使用して、Operator Lifecycle Manager (OLM) がミラーリングされたカタログを OpenShift Container Platform クラスターにロードできるようにするカタログソースを作成できます。
前提条件
- ネットワークアクセスが無制限のワークステーション
-
podmanバージョン 1.9.3 以降。 - Docker v2-2 をサポートするミラーレジストリーへのアクセス。
-
ミラーリングされた Operator コンテンツを保存するために使用するミラーレジストリー上の namespace を決定します。たとえば、
olm-mirrornamespace を作成できます。 - ミラーレジストリーにインターネットアクセスがない場合は、ネットワークアクセスが無制限のワークステーションにリムーバブルメディアを接続します。
registry.redhat.ioなどのプライベートレジストリーを使用している場合、後続の手順で使用するためにREG_CREDS環境変数をレジストリー認証情報のファイルパスに設定します。たとえばpodmanCLI の場合は、以下のようになります。REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
Red Hat が提供するカタログをミラーリングする場合は、ネットワークアクセスが無制限のワークステーションで以下のコマンドを実行し、
registry.redhat.ioで認証します。podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm catalog mirrorコマンドは、インデックスイメージのコンテンツを抽出し、ミラーリングに必要なマニフェストを生成します。コマンドのデフォルト動作で、マニフェストを生成し、インデックスイメージからのすべてのイメージコンテンツを、インデックスイメージと同様にミラーレジストリーに対して自動的にミラーリングします。または、ミラーレジストリーが完全に非接続または エアギャップ環境のホスト上にある場合、最初にコンテンツをリムーバブルメディアにミラーリングし、メディアを非接続環境に移行してから、メディアからレジストリーにコンテンツをレジストリーに対してミラーリングできます。オプション A: ミラーレジストリーがネットワークアクセスが無制限のワークステーションと同じネットワーク上にある 場合、ワークステーションで以下のアクションを実行します。
ミラーレジストリーに認証が必要な場合は、以下のコマンドを実行してレジストリーにログインします。
podman login <mirror_registry>
$ podman login <mirror_registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してコンテンツをミラーリングします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ミラーリングするカタログのインデックスイメージを指定します。たとえば、これは以前に作成したプルーニングされたインデックスイメージ、または
registry.redhat.io/redhat/redhat-operator-index:v4.6などのデフォルトカタログのソースインデックスイメージのいずれかである可能性があります。 - 2
- Operator コンテンツをミラーリングするターゲットレジストリーおよび namespace の完全修飾ドメイン名 (FQDN) を指定します。ここで、
<namespace>はレジストリーの既存の namespace です。たとえば、olm-mirrornamespace を作成し、ミラーリングされたすべてのコンテンツをプッシュすることができます。 - 3
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
registry.redhat.ioには、{REG_CREDS}が必要です。 - 4
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecureフラグを追加します。 - 5
- オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは
'<platform>/<arch>[/<variant>]'として渡されます。これはインデックスで参照されるイメージには適用されません。使用できる値は、linux/amd64、linux/ppc64le、およびlinux/s390xです。 - 6
- オプション: ミラーリングに必要なマニフェストのみを生成し、実際にはイメージコンテンツをレジストリーにミラーリングしません。このオプションは、ミラーリングする内容を確認するのに役立ちます。また、パッケージのサブセットのみが必要な場合に、マッピングの一覧に変更を加えることができます。次に、
mapping.txtファイルをoc image mirrorコマンドで使用し、後のステップでイメージの変更済みの一覧をミラーリングできます。このフラグは、カタログからのコンテンツの高度で選択可能なミラーリングにのみ使用することが意図されています。opm index pruneをインデックスイメージをプルーニングするために以前にしている場合、これはほとんどのカタログ管理のユースケースに適しています。
出力例
src image has index label for database path: /database/index.db using database path mapping: /database/index.db:/tmp/153048078 wrote database to /tmp/153048078 ... wrote mirroring manifests to manifests-redhat-operator-index-1614211642
src image has index label for database path: /database/index.db using database path mapping: /database/index.db:/tmp/153048078 wrote database to /tmp/1530480781 ... wrote mirroring manifests to manifests-redhat-operator-index-16142116422 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat Quay では、ネストされたリポジトリーはサポート対象外です。その結果、
oc adm catalog mirrorコマンドを実行すると、401unauthorized エラーで失敗します。回避策として、oc adm catalog mirrorコマンドを実行するときに--max-components = 2オプションを使用して、ネストされたリポジトリーの作成を無効にすることができます。この回避策の詳細は、Unauthorized error thrown while using catalog mirror command with Quay registry のナレッジソリューション記事を参照してください。
オプション B: ミラーレジストリーが非接続ホストにある場合 は、以下のアクションを実行します。
ネットワークアクセスが無制限のワークステーションで以下のコマンドを実行し、コンテンツをローカルファイルにミラーリングします。
oc adm catalog mirror \ <index_image> \ <index_image> \ file:///local/index \ file:///local/index \ [-a ${REG_CREDS}] \ [-a ${REG_CREDS}] \ [--insecure] [--insecure]$ oc adm catalog mirror \ <index_image> \1 file:///local/index \2 [-a ${REG_CREDS}] \ [--insecure]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
現在のディレクトリーに生成される
v2/ディレクトリーをリムーバブルメディアにコピーします。 - メディアを物理的に削除して、これをミラーレジストリーにアクセスできる非接続環境のホストに割り当てます。
ミラーレジストリーに認証が必要な場合は、非接続環境のホストで以下のコマンドを実行し、レジストリーにログインします。
podman login <mirror_registry>
$ podman login <mirror_registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow v2/ディレクトリーを含む親ディレクトリーから以下のコマンドを実行し、ローカルファイルからミラーレジストリーにイメージをアップロードします。oc adm catalog mirror \ file://local/index/<repo>/<index_image>:<tag> \ file://local/index/<repo>/<index_image>:<tag> \ <mirror_registry>:<port>/<namespace> \ <mirror_registry>:<port>/<namespace> \ [-a ${REG_CREDS}] \ [-a ${REG_CREDS}] \ [--insecure] [--insecure]$ oc adm catalog mirror \ file://local/index/<repo>/<index_image>:<tag> \1 <mirror_registry>:<port>/<namespace> \2 [-a ${REG_CREDS}] \ [--insecure]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat Quay では、ネストされたリポジトリーはサポート対象外です。その結果、
oc adm catalog mirrorコマンドを実行すると、401unauthorized エラーで失敗します。回避策として、oc adm catalog mirrorコマンドを実行するときに--max-components = 2オプションを使用して、ネストされたリポジトリーの作成を無効にすることができます。この回避策の詳細は、Unauthorized error thrown while using catalog mirror command with Quay registry のナレッジソリューション記事を参照してください。
コンテンツをレジストリーにミラーリングした後に、現在のディレクトリーに生成される manifests ディレクトリーを検査します。
注記manifests ディレクトリー名は後の手順で使用されます。
直前の手順で同じネットワークのレジストリーにコンテンツをミラーリングする場合、ディレクトリー名は以下の形式になります。
manifests-<index_image_name>-<random_number>
manifests-<index_image_name>-<random_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 直前の手順で非接続ホストのレジストリーにコンテンツをミラーリングする場合、ディレクトリー名は以下の形式になります。
manifests-index/<namespace>/<index_image_name>-<random_number>
manifests-index/<namespace>/<index_image_name>-<random_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow manifests ディレクトリーには以下のファイルが含まれており、これらの一部にはさらに変更が必要になる場合があります。
catalogSource.yamlファイルは、インデックスイメージタグおよび他の関連するメタデータで事前に設定されるCatalogSourceオブジェクトの基本的な定義です。このファイルは、カタログソースをクラスターに追加するためにそのまま使用したり、変更したりできます。重要ローカルファイルにコンテンツをミラーリングする場合は、
catalogSource.yamlファイルを変更してmetadata.nameフィールドからバックスラッシュ (/) 文字を削除する必要があります。または、オブジェクトの作成を試みると、invalid resource name (無効なリソース名) を示すエラーを出して失敗します。これにより、
imageContentSourcePolicy.yamlファイルはImageContentSourcePolicyオブジェクトを定義します。このオブジェクトは、ノードを Operator マニフェストおよびミラーリングされたレジストリーに保存されるイメージ参照間で変換できるように設定します。注記クラスターが
ImageContentSourcePolicyオブジェクトを使用してリポジトリーのミラーリングを設定する場合、ミラーリングされたレジストリーにグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。mapping.txtファイルには、すべてのソースイメージが含まれ、これはそれらのイメージをターゲットレジストリー内のどこにマップするかを示します。このファイルはoc image mirrorコマンドと互換性があり、ミラーリング設定をさらにカスタマイズするために使用できます。重要ミラーリングのプロセスで
--manifests-onlyフラグを使用しており、ミラーリングするパッケージのサブセットをさらにトリミングするには、mapping.txtファイルの変更およびoc image mirrorコマンドでのファイルの使用について、Package Manifest Format カタログイメージのミラーリングの手順を参照してください。これらの追加のアクションを実行した後に、この手順を続行できます。
非接続クラスターへのアクセスのあるホストで、以下のコマンドを実行して manifests ディレクトリーで
imageContentSourcePolicy.yamlファイルを指定し、ImageContentSourcePolicyオブジェクトを作成します。oc create -f <path/to/manifests/dir>/imageContentSourcePolicy.yaml
$ oc create -f <path/to/manifests/dir>/imageContentSourcePolicy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
<path/to/manifests/dir>は、ミラーリングされたコンテンツについての manifests ディレクトリーへのパスです。
ミラーリングされたインデックスイメージおよび Operator コンテンツを参照する CatalogSource を作成できるようになりました。