3.3. oc-mirror プラグイン v2 を使用した非接続インストールのイメージのミラーリング
プライベートレジストリー内のミラーリングされた OpenShift Container Platform コンテナーイメージのセットからクラスターをインストールすると、非接続環境でクラスターを実行できます。このレジストリーは、クラスターが実行中の場合は常に実行されている必要があります。
oc-mirror プラグイン v2 を使用すると、完全なまたは部分的な非接続環境のミラーレジストリーにイメージをミラーリングできます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネットに接続されたシステムから oc-mirror プラグイン v2 を実行する必要があります。
3.3.1. oc-mirror プラグイン v2 について
oc-mirror OpenShift CLI (oc
) プラグインは、必要なすべての OpenShift Container Platform コンテンツとその他のイメージをミラーレジストリーにミラーリングする単一のツールです。
新しいバージョンの oc-mirror を使用するには、oc-mirror プラグイン v2 コマンドラインに --v2
フラグを追加します。
oc-mirror プラグイン v2 には次の機能があります。
- OpenShift Container Platform のリリース、Operator、Helm チャート、およびその他のイメージをミラーリングするための一元化された方法を提供します。
- イメージが以前にミラーリングされたかどうかに関係なく、イメージセット設定ファイルで指定されたすべてのイメージセットが、ミラー先のレジストリーにミラーリングされていることを確認します。
- メタデータの代わりにキャッシュシステムを使用します。そのため、プロセスの 1 つのステップで障害が発生した場合でも、ミラーリングプロセスを最初からやり直す必要がなくなります。
- 新しいイメージのみをアーカイブに組み込むことで、アーカイブのサイズを最小限に抑えます。
- ミラーリングの日付で選択したコンテンツを含むミラーリングアーカイブを生成します。
-
ImageContentSourcePolicy
(ICSP) リソースではなく、イメージセット全体をカバーするImageDigestMirrorSet
(IDMS) およびImageTagMirrorSet
(ITMS) リソースを生成できます。v1 では、ICSP リソースにより、各ミラーリング操作のイメージセットへの増分変更だけがカバーされていました。 -
自動プルーニングを実行しません。v2 では
Delete
機能が使用されるようになり、ユーザーがイメージの削除をより細かく制御できるようになりました。 -
registries.conf
ファイルのサポートを導入します。この変更により、同じキャッシュを使用しつつ複数のエンクレーブに容易にミラーリングできます。
3.3.1.1. ワークフローの概要
次の手順は、oc-mirror プラグイン v2 を使用してイメージをミラーレジストリーにミラーリングする方法の概要を示しています。
- イメージセット設定ファイルを作成します。
次のいずれかのワークフローを使用して、イメージセットをターゲットミラーレジストリーにミラーリングします。
- イメージセットをターゲットミラーレジストリーに直接 (ミラーからミラーに) ミラーリングします。
-
イメージセットをディスクにミラーリングし (ミラーからディスクへのミラーリング)、
tar
ファイルをターゲット環境に転送してから、イメージセットをターゲットミラーレジストリーにミラーリングします (ディスクからミラーへのミラーリング)。
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
- 必要に応じてこれらの手順を繰り返して、ターゲットミラーレジストリーを更新します。
3.3.1.2. oc-mirror プラグイン v2 の互換性とサポート
oc-mirror プラグイン v2 は、OpenShift Container Platform でサポートされています。
aarch64
、ppc64le
、および s390x
アーキテクチャーでは、oc-mirror プラグイン v2 は OpenShift Container Platform 4.14 以降でのみサポートされます。
ミラーリングする必要がある OpenShift Container Platform のバージョンに関係なく、使用可能な最新バージョンの oc-mirror プラグイン v2 を使用してください。
3.3.2. 前提条件
Red Hat Quay など、OpenShift Container Platform クラスターをホストする場所に Docker V2-2 をサポートするコンテナーイメージレジストリーを持っている。
注記- Red Hat Quay を使用する場合は、oc-mirror プラグインを備えたバージョン 3.6 以降を使用してください。Red Hat Quay Operator の OpenShift Container Platform へのデプロイ (Red Hat Quay ドキュメント) を参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
- コンテナーイメージレジストリー用の既存ソリューションがない場合、OpenShift Container Platform サブスクライバーには Red Hat OpenShift 用のミラーレジストリーが提供されます。このミラーレジストリーはサブスクリプションに含まれており、小規模なコンテナーレジストリーとして機能します。このレジストリーを使用して、非接続インストールに必要な OpenShift Container Platform のコンテナーイメージをミラーリングできます。
- プロビジョニングされたクラスター内のすべてのマシンは、ミラーレジストリーにアクセスできる必要があります。レジストリーにアクセスできない場合、インストールや更新などのタスクや、ワークロードの再配置などの日常的な操作が失敗する可能性があります。ミラーレジストリーは、その可用性が OpenShift Container Platform クラスターの実稼働環境の可用性と一致するように、可用性の高い方法で運用する必要があます。
3.3.3. ミラーホストの準備
イメージミラーリングに oc-mirror プラグイン v2 を使用するには、プラグインをインストールし、コンテナーイメージの認証情報を含むファイルを作成して、Red Hat からミラーにミラーリングできるようにする必要があります。
3.3.3.1. oc-mirror OpenShift CLI プラグインのインストール
非接続環境でイメージセットを管理するには、oc-mirror OpenShift CLI プラグインをインストールします。
前提条件
OpenShift CLI (
oc
) がインストールされている。完全な非接続環境でイメージセットをミラーリングする場合は、次の点を確認してください。- インターネットにアクセスできるホストに oc-mirror プラグインをインストールした。
- 非接続環境のホストが、ターゲットミラーレジストリーにアクセスできる。
-
oc-mirror を使用するオペレーティングシステムで、
umask
パラメーターを0022
に設定した。 - 使用している RHEL バージョンに適したバイナリーをインストールした。
手順
oc-mirror CLI プラグインをダウンロードします。
- Red Hat Hybrid Cloud Console の Downloads ページに移動します。
- OpenShift disconnected installation tools セクションで、ドロップダウンメニューから OpenShift Client (oc) mirror plugin の OS type と Architecture type を選択します。
- Download をクリックしてファイルを保存します。
次のコマンドを実行してアーカイブを展開します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar xvzf oc-mirror.tar.gz
$ tar xvzf oc-mirror.tar.gz
必要に応じて、次のコマンドを実行し、プラグインファイルを更新して実行可能にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod +x oc-mirror
$ chmod +x oc-mirror
注記oc-mirror
ファイルの名前を変更しないでください。次のコマンドを実行して、
PATH
(例:/usr/local/bin
) にファイルを配置し、oc-mirror CLI プラグインをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo mv oc-mirror /usr/local/bin/.
$ sudo mv oc-mirror /usr/local/bin/.
検証
次のコマンドを実行して、oc-mirror プラグイン v2 が正常にインストールされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror --v2 --help
$ oc mirror --v2 --help
3.3.3.2. イメージのミラーリングを可能にする認証情報の設定
Red Hat からミラーへのイメージのミラーリングを可能にするコンテナーイメージレジストリー認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
前提条件
- 非接続環境で使用するミラーレジストリーを設定した。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
- ミラーレジストリーへの書き込みアクセス権がある。
手順
インストールホストで以下の手順を実行します。
-
registry.redhat.io
プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。 次のコマンドを実行して、プルシークレットのコピーを JSON 形式で作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
1 - 1
- プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。
プルシークレットの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
$XDG_RUNTIME_DIR/containers
ディレクトリーが存在しない場合は、次のコマンドを入力して作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir -p $XDG_RUNTIME_DIR/containers
$ mkdir -p $XDG_RUNTIME_DIR/containers
-
プルシークレットファイルを
$XDG_RUNTIME_DIR/containers/auth.json
として保存します。 次のコマンドを実行して、ミラーレジストリーの base64 でエンコードされたユーザー名とパスワードまたはトークンを生成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo -n '<user_name>:<password>' | base64 -w0
$ echo -n '<user_name>:<password>' | base64 -w0
1 - 1
<user_name>
および<password>
には、レジストリーに設定したユーザー名およびパスワードを指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BGVtbYk3ZHAtqXs=
BGVtbYk3ZHAtqXs=
JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow "auths": { "<mirror_registry>": { "auth": "<credentials>", "email": "you@example.com" } },
"auths": { "<mirror_registry>": {
1 "auth": "<credentials>",
2 "email": "you@example.com" } },
変更済みのプルシークレットの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
3.3.4. イメージセットをミラーレジストリーにミラーリングする
イメージセットをミラーレジストリーにミラーリングすると、必要なイメージがセキュアで制御された環境で利用できるようになるため、デプロイメント、更新、メンテナンスのタスクがスムーズになります。
3.3.4.1. イメージセット設定の作成
oc-mirror プラグイン v2 を使用してイメージをミラーリングする前に、イメージセット設定ファイルを作成する必要があります。このイメージセット設定ファイルにより、ミラーリングする OpenShift Container Platform リリース、Operator、およびその他のイメージと、oc-mirror プラグイン v2 の他の設定を定義します。
前提条件
- コンテナーイメージレジストリーの認証情報ファイルを作成している。手順については、イメージのミラーリングを可能にする認証情報の設定 を参照してください。
手順
ImageSetConfiguration
YAML ファイルを作成し、ファイルを変更して必要なイメージを含めます。ImageSetConfiguration
YAML ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v2alpha1 mirror: platform: channels: - name: stable-4.18 minVersion: 4.18.2 maxVersion: 4.18.2 graph: true operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.18 packages: - name: aws-load-balancer-operator - name: 3scale-operator - name: node-observability-operator additionalImages: - name: registry.redhat.io/ubi8/ubi:latest - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v2alpha1 mirror: platform: channels: - name: stable-4.18
1 minVersion: 4.18.2 maxVersion: 4.18.2 graph: true
2 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.18
3 packages:
4 - name: aws-load-balancer-operator - name: 3scale-operator - name: node-observability-operator additionalImages:
5 - name: registry.redhat.io/ubi8/ubi:latest - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
- 1
- OpenShift Container Platform イメージの取得元のチャネルを設定します。
- 2
graph: true
を追加して、グラフデータイメージをビルドし、ミラーレジストリーにプッシュします。OpenShift Update Service (OSUS) を作成するには、graph-data イメージが必要です。graph: true
フィールドはUpdateService
カスタムリソースマニフェストも生成します。oc
コマンドラインインターフェイス (CLI) は、UpdateService
カスタムリソースマニフェストを使用して OSUS を作成できます。詳細は、OpenShift Update Service について を参照してください。- 3
- OpenShift Container Platform イメージを取得するための Operator カタログを設定します。
- 4
- イメージセットに含める特定の Operator パッケージのみを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
- 5
- イメージセットに含める追加のイメージを指定します。
3.3.4.2. 部分的な非接続環境でのイメージセットのミラーリング
インターネットアクセスが制限されている環境では、oc-mirror プラグイン v2 を使用してイメージセットをレジストリーにミラーリングできます。
前提条件
- インターネット接続があり、oc-mirror プラグイン v2 を実行している環境内のミラーレジストリーにアクセスできる。
手順
次のコマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror -c <image_set_configuration> --workspace file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c <image_set_configuration> --workspace file://<file_path> docker://<mirror_registry_url> --v2
1 ここでは、以下のようになります。
- <image_set_configuration>
- イメージセット設定ファイルの名前を指定します。
- <file_path>
- クラスターリソースの生成先のディレクトリーを指定します。
- <mirror_registry_url>
- イメージの保存先であり、そこからイメージを削除する必要があるミラーレジストリーの URL またはアドレスを指定します。
検証
-
<file_path>
ディレクトリーに生成されたworking-dir/cluster-resources
ディレクトリーに移動します。 -
ImageDigestMirrorSet
、ImageTagMirrorSet
、およびCatalogSource
リソースの YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
3.3.4.3. 完全な非接続環境でのイメージセットのミラーリング
OpenShift Container Platform クラスターがパブリックインターネットにアクセスできない完全な非接続環境で、イメージセットをミラーリングできます。ミラーリングプロセスのワークフローの概要を以下に示します。
- ミラーからディスクへのミラーリング: イメージセットをアーカイブにミラーリングします。
- ディスク転送: 非接続ミラーレジストリーのネットワークにアーカイブを手動で転送します。
- ディスクからミラーへのミラーリング: イメージセットをアーカイブからターゲットの非接続レジストリーにミラーリングします。
3.3.4.3.1. ミラーからディスクへのミラーリング
oc-mirror プラグイン v2 を使用して、イメージセットを生成し、コンテンツをディスクに保存できます。その後、生成されたイメージセットを非接続環境に転送し、ターゲットレジストリーにミラーリングできます。
oc-mirror プラグイン v2 は、イメージセット設定ファイルで指定されたソースからコンテナーイメージを取得し、ローカルディレクトリーの tar アーカイブにパックします。
手順
次のコマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror -c <image_set_configuration> file://<file_path> --v2
$ oc mirror -c <image_set_configuration> file://<file_path> --v2
ここでは、以下のようになります。
- <image_set_configuration>
- イメージセット設定ファイルの名前を指定します。
- <file_path>
- イメージセットを含むアーカイブの生成先のディレクトリーを指定します。
検証
-
生成された
<file_path>
ディレクトリーに移動します。 - アーカイブファイルが生成されたことを確認します。
次のステップ
- ディスクからミラーへのミラーリング
3.3.4.3.2. ディスクからミラーへのミラーリング
oc-mirror プラグイン v2 を使用して、ディスクからターゲットミラーレジストリーにイメージセットをミラーリングできます。
oc-mirror プラグイン v2 は、ローカルディスクからコンテナーイメージを取得し、指定されたミラーレジストリーに転送します。
手順
- ミラーリングされたイメージセットが含まれているディスクを、ターゲットミラーレジストリーが含まれている環境に転送します。
次のコマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror -c <image_set_configuration> --from file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c <image_set_configuration> --from file://<file_path> docker://<mirror_registry_url> --v2
ここでは、以下のようになります。
- <image_set_configuration>
- イメージセット設定ファイルの名前を指定します。
- <file_path>
- アーカイブが含まれているディスク上のディレクトリーを指定します。このフォルダーには、クラスターに適用するために生成されたクラスターリソース (ImageDigestMirrorSet (IDMS) や ImageTagMirrorSet (ITMS) リソースなど) も含まれています。
- <mirror_registry_url>
- イメージの保存先であるミラーレジストリーの URL またはアドレスを指定します。
検証
-
<file_path>
ディレクトリーに生成されたworking-dir
ディレクトリー内のcluster-resources
ディレクトリーに移動します。 -
ImageDigestMirrorSet
、ImageTagMirrorSet
、およびCatalogSource
リソースの YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
3.3.5. oc-mirror プラグイン v2 によって生成されるカスタムリソースについて
oc-mirror プラグイン v2 は、次のカスタムリソースを自動的に生成します。
ImageDigestMirrorSet
(IDMS)- イメージダイジェストプル仕様を使用する場合に、レジストリーミラールールを処理します。イメージセットの少なくとも 1 つのイメージがダイジェストによってミラーリングされている場合に生成されます。
ImageTagMirrorSet
(ITMS)- イメージタグプル仕様を使用する場合に、レジストリーミラールールを処理します。イメージセットの少なくとも 1 つのイメージがタグによってミラーリングされている場合に生成されます。
CatalogSource
- ミラーレジストリー内の利用可能な Operator に関する情報を取得します。Operator Lifecycle Manager (OLM) Classic によって使用されます。
ClusterCatalog
- ミラーレジストリー内の利用可能なクラスター拡張機能 (Operator を含む) に関する情報を取得します。OLM v1 で使用されます。
UpdateService
- 非接続環境に更新グラフデータを提供します。OpenShift Update Service によって使用されます。
3.3.5.1. oc-mirror プラグイン v2 が生成したリソースを使用するためのクラスター設定
イメージセットをミラーレジストリーにミラーリングした後、生成された ImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS)、CatalogSource
、および UpdateService
リソースをクラスターに適用する必要があります。
oc-mirror プラグイン v2 では、oc-mirror プラグイン v1 の ImageContentSourcePolicy
(ICSP) ファイルとは異なり、IDMS ファイルと ITMS ファイルがイメージセット全体をカバーします。したがって、増分ミラーリング中に新しいイメージのみを追加した場合でも、IDMS ファイルと ITMS ファイルにはセットのすべてのイメージが含まれます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift CLI にログインします。 以下のコマンドを実行して、results ディレクトリーからクラスターに YAML ファイルを適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f <path_to_oc_mirror_workspace>/working-dir/cluster-resources
$ oc apply -f <path_to_oc_mirror_workspace>/working-dir/cluster-resources
リリースイメージをミラーリングした場合は、次のコマンドを実行して、リリースイメージの署名をクラスターに適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f working-dir/cluster-resources/signature-configmap.json
$ oc apply -f working-dir/cluster-resources/signature-configmap.json
重要クラスターではなく Operator をミラーリングする場合は、上記のコマンドを実行しないでください。適用するリリースイメージ署名がないため、コマンドを実行するとエラーが発生します。
また、同じディレクトリー
working-dir/cluster-resources/
で YAML ファイルを使用することもできます。JSON または YAML 形式のいずれかを使用できます。
検証
次のコマンドを実行して、
ImageDigestMirrorSet
リソースが正常にインストールされたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get imagedigestmirrorset
$ oc get imagedigestmirrorset
次のコマンドを実行して、
ImageTagMirrorSet
リソースが正常にインストールされたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get imagetagmirrorset
$ oc get imagetagmirrorset
以下のコマンドを実行して、
CatalogSource
リソースが正常にインストールされたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplace
次のコマンドを実行して、
ClusterCatalog
リソースが正常にインストールされたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get clustercatalog
$ oc get clustercatalog
oc-mirror プラグイン v2 によって生成されたリソースを使用するようにクラスターを設定したら、ミラーリングされたイメージを使用して実行できるタスクの詳細について、次のステップ を参照してください。
関連情報
3.3.6. 非接続環境からのイメージ削除
以前に oc-mirror プラグイン v2 を使用してイメージをデプロイしたことがある場合は、そのイメージを削除してミラーレジストリーの領域を解放できます。oc-mirror プラグイン v2 は、ImageSetConfiguration
ファイルに含まれていないイメージを自動プルーニングしません。そのため、ImageSetConfig.yaml
ファイルに変更を加えたときに、必要なイメージやデプロイされたイメージが誤って削除されることはありません。
削除するイメージを指定するには、DeleteImageSetConfiguration
ファイルを作成する必要があります。
次の例では、DeleteImageSetConfiguration
ファイルで次のイメージを削除します。
- OpenShift Container Platform 4.13.3 のすべてのリリースイメージ。
-
aws-load-balancer-Operator
v0.0.1 バンドルと関連するすべてのイメージ。 -
それぞれ対応するダイジェストによって参照される、
ubi
およびubi-minimal
の追加イメージ。
DeleteImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v2alpha1 kind: DeleteImageSetConfiguration delete: platform: channels: - name: stable-4.13 minVersion: 4.13.3 maxVersion: 4.13.3 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12 packages: - name: aws-load-balancer-operator minVersion: 0.0.1 maxVersion: 0.0.1 additionalImages: - name: registry.redhat.io/ubi8/ubi@sha256:bce7e9f69fb7d4533447232478fd825811c760288f87a35699f9c8f030f2c1a6 - name: registry.redhat.io/ubi8/ubi-minimal@sha256:8bedbe742f140108897fb3532068e8316900d9814f399d676ac78b46e740e34e
apiVersion: mirror.openshift.io/v2alpha1
kind: DeleteImageSetConfiguration
delete:
platform:
channels:
- name: stable-4.13
minVersion: 4.13.3
maxVersion: 4.13.3
operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12
packages:
- name: aws-load-balancer-operator
minVersion: 0.0.1
maxVersion: 0.0.1
additionalImages:
- name: registry.redhat.io/ubi8/ubi@sha256:bce7e9f69fb7d4533447232478fd825811c760288f87a35699f9c8f030f2c1a6
- name: registry.redhat.io/ubi8/ubi-minimal@sha256:8bedbe742f140108897fb3532068e8316900d9814f399d676ac78b46e740e34e
削除の問題を軽減するために、ミラーからディスクへのミラーリングワークフローとディスクからミラーへのミラーリングワークフローの使用を検討してください。
oc-mirror プラグイン v2 はイメージのマニフェストのみを削除します。そのため、レジストリーの占有されているストレージは削減されません。
マニフェストが削除されたイメージなど、不要なイメージが使用するストレージ領域を解放するには、コンテナーレジストリーでガベージコレクターを有効にする必要があります。ガベージコレクターを有効にすると、レジストリーはマニフェストへの参照がなくなったイメージ Blob を削除します。そのため、削除された Blob が使用していたストレージが削減されます。ガベージコレクターを有効にするプロセスは、コンテナーレジストリーによって異なります。
詳細は、「ディストリビューションレジストリーのストレージクリーンアップ問題の解決」を参照してください。
Operator イメージを削除するときに Operator カタログイメージの削除をスキップするには、
DeleteImageSetConfiguration
ファイル内の Operator カタログイメージの下に特定の Operator をリストする必要があります。そうすることで、カタログイメージではなく、指定された Operator のみが削除されます。Operator カタログイメージのみを指定した場合、そのカタログ内のすべての Operator とカタログイメージ自体が削除されます。
oc-mirror プラグイン v2 は、Operator カタログイメージを自動的に削除しません。他の Operator がまだデプロイされていて、これらのイメージに依存している可能性があるためです。
カタログの Operator がレジストリーまたはクラスターに残っていないことが確実な場合は、
DeleteImageSetConfiguration
のadditionalImages
にカタログイメージを明示的に追加して削除できます。- レジストリーによってガベージコレクションの動作が異なります。一部のレジストリーでは、削除されたイメージが自動的に削除されません。そのため、システム管理者が手動でガベージコレクションをトリガーして領域を解放する必要があります。
3.3.6.1. ディストリビューションレジストリーのストレージクリーンアップ問題の解決
ディストリビューションレジストリーの既知の問題により、ガベージコレクターが期待どおりにストレージを解放できません。この問題は、Red Hat Quay を使用する場合には発生しません。
手順
適切な方法を選択して、ディストリビューションレジストリーの既知の問題を回避します。
コンテナーレジストリーを再起動するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman restart <registry_container>
$ podman restart <registry_container>
レジストリー設定でキャッシュを無効にするには、次の手順を実行します。
blobdescriptor
キャッシュを無効にするために、/etc/docker/registry/config.yml
ファイルを変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: "" filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3
version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: "" filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3
変更を適用するために、次のコマンドを実行してコンテナーレジストリーを再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman restart <registry_container>
$ podman restart <registry_container>
3.3.6.2. 非接続環境からイメージを削除する
oc-mirror プラグイン v2 を使用して非接続環境からイメージを削除するには、次の手順に従います。
前提条件
- マニフェストを参照しなくなったイメージを削除するために、環境でガベージコレクションを有効にした。
手順
delete-image-set-config.yaml
ファイルを作成し、次の内容を含めます。DeleteImageSetConfiguration
ファイルCopy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: mirror.openshift.io/v2alpha1 kind: DeleteImageSetConfiguration delete: platform: channels: - name: <channel_name> minVersion: <channel_min_version> maxVersion: <channel_max_version> operators: - catalog: <operator_catalog_name> packages: - name: <operator_name> minVersion: <operator_max_version> maxVersion: <operator_min_version> additionalImages: - name: <additional_images>
apiVersion: mirror.openshift.io/v2alpha1 kind: DeleteImageSetConfiguration delete: platform: channels: - name: <channel_name>
1 minVersion: <channel_min_version>
2 maxVersion: <channel_max_version>
3 operators: - catalog: <operator_catalog_name>
4 packages: - name: <operator_name>
5 minVersion: <operator_max_version>
6 maxVersion: <operator_min_version>
7 additionalImages: - name: <additional_images>
- 1 1
- 削除する OpenShift Container Platform チャネルの名前を指定します (例:
stable-4.15
)。 - 2 3
- チャネル内の削除するイメージのバージョン範囲を指定します。たとえば、最小バージョンとして
4.15.0
、最大バージョンとして4.15.1
を指定します。1 つのバージョンのイメージのみを削除するには、minVersion
フィールドとmaxVersion
フィールドの両方にそのバージョン番号を使用します。 - 4
- 削除する Operator を含む Operator カタログイメージを指定します (例:
registry.redhat.io/redhat/redhat-operator-index:v4.14
)。Operator カタログイメージは削除されません。クラスターに残っている他の Operator が、レジストリー内に存在するイメージを必要する場合があります。 - 5
- 削除する特定の Operator (例:
aws-load-balancer-operator
) を指定します。 - 6 7
- Operator に対して削除するイメージのバージョン範囲を指定します。たとえば、最小バージョンとして
0.0.1
、最大バージョンとして0.0.2
を指定します。
次のコマンドを実行して、
delete-images.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>
$ oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>
ここでは、以下のようになります。
- <previously_mirrored_work_folder>
- 以前、ミラーリングプロセス中にイメージがミラーリングまたは保存されたディレクトリーを指定します。
- <remote_registry>
イメージの削除元となるリモートコンテナーレジストリーの URL またはアドレスを指定します。
重要イメージを削除するときは、正しいワークスペースディレクトリーを指定してください。新しいクラスターのセットアップなど、ミラーリングを最初から開始する場合にのみ、キャッシュディレクトリーを変更または削除してください。キャッシュディレクトリーに誤った変更を加えると、それ以降のミラーリング操作が中断される可能性があります。
-
作成された
<previously_mirrored_work_folder>/delete
ディレクトリーに移動します。 -
delete-images.yaml
ファイルが生成されたことを確認します。 - ファイルにリストされている各イメージがクラスターで不要になり、レジストリーから安全に削除できることを手動で確認します。
delete-images
YAML ファイルを生成した後、次のコマンドを実行してリモートレジストリーからイメージを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/working-dir/delete/delete-images.yaml docker://<remote_registry>
$ oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/working-dir/delete/delete-images.yaml docker://<remote_registry>
ここでは、以下のようになります。
- <previously_mirrored_work_folder>
- 以前、ミラーリングプロセス中にイメージがミラーリングまたは保存されたディレクトリーを指定します。
- <remote_registry>
イメージの削除元となるリモートコンテナーレジストリーの URL またはアドレスを指定します。
重要mirror-to-mirror 方式を使用してイメージをミラーリングする場合、イメージはローカルにキャッシュされないため、ローカルキャッシュからイメージを削除することはできません。
3.3.7. ミラーリング用に選択したイメージを確認する
oc-mirror プラグイン v2 を使用して、実際にはイメージをミラーリングしないテストラン (ドライラン) を実行できます。これにより、ミラーリングされるイメージのリストを確認できます。ドライランは、イメージセット設定のエラーを早期に検出するためにも使用できます。mirror-to-disk のワークフローでドライランを実行する場合、oc-mirror プラグイン v2 は、イメージセット内のすべてのイメージがキャッシュ内で使用可能か確認します。不足しているイメージは missing.txt
ファイルにリストされます。ミラーリングの前にドライランを実行すると、missing.txt
ファイルと mapping.txt
ファイルには同じイメージリストが含まれています。
3.3.7.1. oc-mirror プラグイン v2 のドライランの実行
イメージをミラーリングせずにドライランを実行して、イメージセットの設定を確認します。これにより、セットアップが正しいことを確認でき、意図しない変更を防止できます。
手順
テストランを実行するには、
oc mirror
コマンドを実行し、コマンドに--dry-run
引数を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror -c <image_set_config_yaml> file://<oc_mirror_workspace_path> --dry-run --v2
$ oc mirror -c <image_set_config_yaml> file://<oc_mirror_workspace_path> --dry-run --v2
ここでは、以下のようになります。
<image_set_config_yaml>
- 作成したイメージセット設定ファイルを指定します。
<oc_mirror_workspace_path>
- ワークスペースパスのアドレスを挿入します。
<mirror_registry_url>
イメージのミラーリング元または削除元となるリモートコンテナーレジストリーの URL またはアドレスを挿入します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [INFO] : :wave: Hello, welcome to oc-mirror [INFO] : :gear: setting up the environment for you... [INFO] : :twisted_rightwards_arrows: workflow mode: mirrorToDisk [INFO] : :sleuth_or_spy: going to discover the necessary images... [INFO] : :mag: collecting release images... [INFO] : :mag: collecting operator images... [INFO] : :mag: collecting additional images... [WARN] : :warning: 54/54 images necessary for mirroring are not available in the cache. [WARN] : List of missing images in : CLID-19/working-dir/dry-run/missing.txt. please re-run the mirror to disk process [INFO] : :page_facing_up: list of all images for mirroring in : CLID-19/working-dir/dry-run/mapping.txt [INFO] : mirror time : 9.641091076s [INFO] : :wave: Goodbye, thank you for using oc-mirror
[INFO] : :wave: Hello, welcome to oc-mirror [INFO] : :gear: setting up the environment for you... [INFO] : :twisted_rightwards_arrows: workflow mode: mirrorToDisk [INFO] : :sleuth_or_spy: going to discover the necessary images... [INFO] : :mag: collecting release images... [INFO] : :mag: collecting operator images... [INFO] : :mag: collecting additional images... [WARN] : :warning: 54/54 images necessary for mirroring are not available in the cache. [WARN] : List of missing images in : CLID-19/working-dir/dry-run/missing.txt. please re-run the mirror to disk process [INFO] : :page_facing_up: list of all images for mirroring in : CLID-19/working-dir/dry-run/mapping.txt [INFO] : mirror time : 9.641091076s [INFO] : :wave: Goodbye, thank you for using oc-mirror
検証
生成されたワークスペースディレクトリーに移動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd <oc_mirror_workspace_path>
$ cd <oc_mirror_workspace_path>
-
生成された
mapping.txt
ファイルとmissing.txt
ファイルを確認します。これらのファイルには、ミラーリングされるすべてのイメージのリストが含まれています。
3.3.7.2. oc-mirror プラグイン v2 エラーのトラブルシューティング
oc-mirror プラグイン v2 では、すべてのイメージミラーリングエラーが別のファイルに記録されるようになり、障害の追跡と診断が容易になりました。
リリースイメージまたはリリースコンポーネントイメージのミラーリング中にエラーが発生した場合、それは重大なエラーです。これにより、ミラーリングプロセスが直ちに停止します。
Operator、Operator 関連イメージ、または追加イメージのミラーリングに関するエラーが発生しても、ミラーリングプロセスは停止しません。ミラーリングは続行され、oc-mirror プラグイン v2 は、ミラーリングに失敗した Operator を示すファイルを working-dir/logs
ディレクトリーに保存します。
イメージのミラーリングに失敗し、そのイメージが 1 つ以上の Operator バンドルの一部としてミラーリングされている場合、oc-mirror プラグイン v2 は、どの Operator が不完全であるかをユーザーに通知し、エラーの影響を受ける Operator バンドルを明確に示します。
手順
サーバー関連の問題を確認します。
エラーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ERROR] : [Worker] error mirroring image localhost:55000/openshift/graph-image:latest error: copying image 1/4 from manifest list: trying to reuse blob sha256:edab65b863aead24e3ed77cea194b6562143049a9307cd48f86b542db9eecb6e at destination: pinging container registry localhost:5000: Get "https://localhost:5000/v2/": http: server gave HTTP response to HTTPS client
[ERROR] : [Worker] error mirroring image localhost:55000/openshift/graph-image:latest error: copying image 1/4 from manifest list: trying to reuse blob sha256:edab65b863aead24e3ed77cea194b6562143049a9307cd48f86b542db9eecb6e at destination: pinging container registry localhost:5000: Get "https://localhost:5000/v2/": http: server gave HTTP response to HTTPS client
-
oc-mirror プラグイン v2 出力ディレクトリーにある
working-dir/logs
フォルダー内のmirroring_error_date_time.log
ファイルを開きます。 -
HTTP 500
エラー、期限切れのトークン、タイムアウトなどの、通常はサーバー側の問題を示すエラーメッセージを探します。 - 問題が解決しない場合は、ミラーリングプロセスを再試行するか、サポートにお問い合わせください。
-
oc-mirror プラグイン v2 出力ディレクトリーにある
Operator の不完全なミラーリングを確認します。
エラーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow error mirroring image docker://registry.redhat.io/3scale-amp2/zync-rhel9@sha256:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/zync-rhel9:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d: reading manifest 8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d in localhost:55000/3scale-amp2/zync-rhel9: manifest unknown error mirroring image docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d error: skipping operator bundle docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d because one of its related images failed to mirror error mirroring image docker://registry.redhat.io/3scale-amp2/system-rhel7@sha256:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
error mirroring image docker://registry.redhat.io/3scale-amp2/zync-rhel9@sha256:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/zync-rhel9:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d: reading manifest 8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d in localhost:55000/3scale-amp2/zync-rhel9: manifest unknown error mirroring image docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d error: skipping operator bundle docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d because one of its related images failed to mirror error mirroring image docker://registry.redhat.io/3scale-amp2/system-rhel7@sha256:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
コンソールまたはログファイルで、どの Operator が不完全であるかを示す警告を確認します。
Operator が不完全としてフラグ付けされている場合、その Operator に関連するイメージのミラーリングに失敗した可能性があります。
- 不足しているイメージを手動でミラーリングするか、ミラーリングプロセスを再試行します。
生成されたクラスターリソースに関連するエラーを確認します。一部のイメージのミラーリングに失敗した場合でも、oc-mirror v2 は、正常にミラーリングされたイメージに対して
IDMS.yaml
ファイルやITMS.yaml
ファイルなどのクラスターリソースを生成します。- 生成されたファイルの出力ディレクトリーを確認します。
- 特定のイメージでこれらのファイルが見つからない場合、ミラーリングプロセス中にそれらのイメージに重大なエラーが発生していないことを確認します。
これらの手順に従うことで、問題をより適切に診断し、よりスムーズにミラーリングを実行できます。
3.3.8. エンクレーブサポートの利点
エンクレーブサポートは、ネットワークの特定部分への内部アクセスを制限します。ファイアウォール境界を通過する受信トラフィックおよび送信トラフィックのアクセスを許可する非武装地帯 (DMZ) ネットワークとは異なり、エンクレーブはファイアウォール境界を越えません。
新しいエンクレーブサポート機能は、少なくとも 1 つの中間非接続ネットワークの背後で保護された複数のエンクレーブのミラーリングが必要な場合に使用します。
エンクレーブサポートには次の利点があります。
- 複数のエンクレーブのコンテンツをミラーリングし、単一の内部レジストリーに集約できます。ミラーリングされたコンテンツに対してセキュリティーチェックを実行する必要がある場合もありますが、そのようなチェックもこのセットアップですべて一度に実行できます。その後、コンテンツはダウンストリームのエンクレーブにミラーリングされる前に検査されます。
- 各エンクレーブに対してインターネットからミラーリングプロセスを再開することなく、集約された内部レジストリーからエンクレーブにコンテンツを直接ミラーリングできます。
- ネットワークステージ間のデータ転送を最小限に抑え、ステージ間で Blob またはイメージが 1 回だけ転送されるようにできます。
3.3.8.1. エンクレーブへのミラーリングのワークフロー

上の画像は、インターネット接続のある環境とない環境を含むさまざまな環境で oc-mirror プラグインを使用するフローの概要を示しています。
インターネット接続環境:
- ユーザーが oc-mirror プラグイン v2 を実行して、オンラインレジストリーのコンテンツをローカルディスクディレクトリーにミラーリングします。
- ミラーリングしたコンテンツを、オフライン環境への転送用のディスクに保存します。
非接続の企業環境 (インターネットなし):
フロー 1:
-
ユーザーが oc-mirror プラグイン v2 を実行して、オンライン環境から転送されたディスクディレクトリーのミラーリングされたコンテンツを
enterprise-registry.in
レジストリーにロードします。
-
ユーザーが oc-mirror プラグイン v2 を実行して、オンライン環境から転送されたディスクディレクトリーのミラーリングされたコンテンツを
フロー 2:
-
registries.conf
ファイルを更新した後、ユーザーは oc-mirror プラグイン v2 を実行して、enterprise-registry.in
レジストリーのコンテンツをエンクレーブ環境にミラーリングします。 - コンテンツを、エンクレーブへの転送用のディスクディレクトリーに保存します。
-
エンクレーブ環境 (インターネットなし):
-
ユーザーが oc-mirror プラグイン v2 を実行して、ディスクディレクトリーのコンテンツを
enclave-registry.in
レジストリーにロードします。
この画像は、これらの環境全体のデータフローを視覚的に表しており、インターネット接続のない非接続環境やエンクレーブ環境に対応するために oc-mirror を使用することを強調しています。
3.3.8.2. エンクレーブへのミラーリング
エンクレーブにミラーリングする場合は、まず 1 つ以上のエンクレーブから必要なイメージをエンタープライズ集約レジストリーに転送する必要があります。
中央レジストリーは、セキュアなネットワーク内 (具体的には非接続環境内) に配置されており、パブリックインターネットに直接リンクされていません。ただしユーザーは、パブリックインターネットにアクセスできる環境で oc mirror
を実行する必要があります。
手順
非接続環境で oc-mirror プラグイン v2 を実行する前に、
registries.conf
ファイルを作成します。ファイルの TOML 形式は、この仕様で説明されています。注記ファイルは、
$HOME/.config/containers/registries.conf
または/etc/containers/registries.conf
に保存することが推奨されます。registries.conf
の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow [[registry]] location="registry.redhat.io" [[registry.mirror]] location="<enterprise-registry.in>" [[registry]] location="quay.io" [[registry.mirror]] location="<enterprise-registry.in>"
[[registry]] location="registry.redhat.io" [[registry.mirror]] location="<enterprise-registry.in>" [[registry]] location="quay.io" [[registry.mirror]] location="<enterprise-registry.in>"
ミラーアーカイブを生成します。
すべての OpenShift Container Platform コンテンツを
<file_path>/enterprise-content
配下のディスクのアーカイブに収集するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
$ oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
isc.yaml の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.0 maxVersion: 4.15.3
apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.0 maxVersion: 4.15.3
生成されたアーカイブは、非接続環境に転送されます。トランスポートメカニズムは、oc-mirror プラグイン v2 に含まれていません。転送ストラテジーは、エンタープライズネットワーク管理者が決定します。
場合によっては、ディスクをある場所から物理的に取り外し、非接続環境内の別のコンピューターに接続することで、手動で転送します。その他の場合、セキュアファイル転送プロトコル (SFTP) またはその他のプロトコルを使用します。
アーカイブの転送が完了したら、次の例のとおり、oc-mirror プラグイン v2 を再度実行して関連するアーカイブの内容をレジストリー (例では
entrerpise_registry.in
) にミラーリングできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/
$ oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/
ここでは、以下のようになります。
-
--from
は、アーカイブを含むフォルダーを指します。file://
で始まります。 -
docker://
はミラーリングの宛先であり、最後の引数です。Docker レジストリーであるため、そのようになります。 -
-c
(--config
) は必須の引数です。これにより、oc-mirror プラグイン v2 は最終的にアーカイブのサブ部分のみをレジストリーにミラーリングできます。1 つのアーカイブに複数の OpenShift Container Platform リリースが含まれる場合がありますが、非接続環境またはエンクレーブではそのうちのいくつかのみミラーリングされる可能性があります。
-
エンクレーブにミラーリングするコンテンツを記述する
imageSetConfig
YAML ファイルを準備します。isc-enclave.yaml の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.2 maxVersion: 4.15.2
apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.2 maxVersion: 4.15.2
非接続レジストリーにアクセスできるマシン上で、oc-mirror プラグイン v2 を実行する必要があります。上記の例では、非接続環境
enterprise-registry.in
にアクセスできます。グラフの URL を更新する
graph:true
を使用している場合、oc-mirror プラグイン v2 はcincinnati
API エンドポイントに到達しようとします。この環境は接続されていないため、OpenShift Update Service (OSUS) の URL を参照するためには環境変数UPDATE_URL_OVERRIDE
をエクスポートする必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph
$ export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph
OpenShift クラスターで OSUS を設定する方法の詳細は、「OpenShift Update Service を使用した非接続環境でのクラスターの更新」を参照してください。
注記OpenShift Container Platform の Extended Update Support (EUS) バージョン間で更新する場合は、現在のバージョンとターゲットバージョン間の中間マイナーバージョンのイメージも含める必要があります。oc-mirror プラグイン v2 は必ずしもこの要件を自動的に検出するとは限りません。そのため、Red Hat OpenShift Container Platform Update Graph ページ で、必要な中間バージョンを確認してください。
Update Graph ページを使用して、アプリケーションによって提案される中間マイナーバージョンを確認してください。また、oc-mirror プラグイン v2 を使用するときに、該当するバージョンをすべて
ImageSetConfiguration
ファイルに含めてください。エンクレーブのエンタープライズレジストリーからミラーアーカイブを生成します。
enclave1
のアーカイブを準備するには、ユーザーはそのエンクレーブ固有のimageSetConfiguration
を使用して、エンタープライズ非接続環境で oc-mirror プラグイン v2 を実行します。これにより、そのエンクレーブに必要なイメージのみがミラーリングされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror --v2 -c isc-enclave.yaml
$ oc mirror --v2 -c isc-enclave.yaml file:///disk-enc1/
このアクションは、OpenShift Container Platform のすべてのコンテンツをアーカイブに収集し、ディスク上にアーカイブを生成します。
-
生成されたアーカイブは、
enclave1
ネットワークに転送されます。トランスポートメカニズムは、oc-mirror プラグイン v2 の責任にはあたりません。 エンクレーブレジストリーにコンテンツをミラーリングする
アーカイブの転送が完了すると、ユーザーは関連するアーカイブの内容をレジストリーにミラーリングするために、oc-mirror プラグイン v2 を再度実行できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in
$ oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in
これで、
enclave1
の OpenShift Container Platform クラスターの管理者が、そのクラスターをインストールまたはアップグレードする準備が整いました。
3.3.9. oc-mirror プラグイン v2 によるプロキシー設定のサポート
oc-mirror プラグイン v2 は、プロキシーが設定された環境で動作できます。プラグインは、システムのプロキシー設定を使用して、OpenShift Container Platform、Operator カタログ、および additionalImages
レジストリーのイメージを取得できます。
3.3.10. Operator カタログでのフィルタリング
oc-mirror プラグイン v2 は、imageSetConfig
の情報を処理することで、ミラーリングするバンドルのリストを選択します。
oc-mirror プラグイン v2 は、ミラーリングするバンドルを選択するときに、Group Version Kind (GVK) またはバンドルの依存関係を推測せず、それらをミラーリングセットから除外します。代わりに、ユーザーの指示に厳密に従います。必要な依存関係パッケージとそのバージョンを明示的に指定する必要があります。
ImageSetConfig Operator のフィルタリング | 予想されるバンドルバージョン |
---|---|
シナリオ 1 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
| カタログ内の各パッケージについて、そのパッケージの各チャネルのヘッドバージョンに対応する 1 つのバンドル。 |
シナリオ 2 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true
| 指定されたカタログの全チャネルの全バンドル。 |
シナリオ 3 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 packages: - name: compliance-operator
| そのパッケージの各チャネルのヘッドバージョンに対応する 1 つのバンドル。 |
シナリオ 4 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true - packages: - name: elasticsearch-operator
| 指定されたパッケージの全チャネルの全バンドル。 |
シナリオ 5 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator minVersion: 5.6.0
|
そのパッケージの |
シナリオ 6 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator maxVersion: 6.0.0
|
そのパッケージの |
シナリオ 7 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator minVersion: 5.6.0 maxVersion: 6.0.0
|
そのパッケージの |
シナリオ 8 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable
|
そのパッケージの選択されたチャネルのヘッドバンドル。フィルタリングされたチャネルがデフォルトでない場合は、 |
シナリオ 9 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true - packages: - name: elasticsearch-operator channels: - name: 'stable-v0'
|
指定されたパッケージとチャネルの全バンドル。フィルタリングされたチャネルがデフォルトでない場合は、 |
シナリオ 10 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable - name: stable-5.5
| そのパッケージの選択された各チャネルのヘッドバンドル。 |
シナリオ 11 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0
|
そのパッケージの選択されたチャネルに含まれる |
シナリオ 12 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable maxVersion: 6.0.0
|
そのパッケージの選択されたチャネルに含まれる |
シナリオ 13 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0
|
そのパッケージの選択されたチャネルに含まれる |
シナリオ 14 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0
|
このシナリオは使用しないでください。チャネルでのフィルタリング、および |
シナリオ 15 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0
|
このシナリオは使用しないでください。 |
シナリオ 16 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 full: true packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0
|
このシナリオは使用しないでください。 |
3.3.11. 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 グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。
パラメーター | 説明 | 値 |
---|---|---|
|
|
文字列の例: |
| イメージセット内の各アーカイブファイルの最大サイズ (GiB 単位)。 |
整数の例: |
|
|
ブール値のサンプル apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: channels: - name: stable-4.16 minVersion: 4.16.0 maxVersion: 4.16.0 kubeVirtContainer: true
|
| イメージセットの設定。 | オブジェクト |
| イメージセットの追加のイメージ設定。 | オブジェクトの配列 以下に例を示します。 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
| ミラーリングするイメージのタグまたはダイジェスト。 |
文字列の例: |
| ミラーリングをブロックするタグまたはダイジェスト (SHA) を持つイメージのリスト。 |
文字列配列の例: |
|
イメージセットの Helm 設定。oc-mirror プラグインは、手動で変更された | オブジェクト |
| ミラーリングするローカル Helm チャート。 | オブジェクトの配列。以下に例を示します。 local: - name: podinfo path: /test/podinfo-5.0.0.tar.gz
|
| ミラーリングするローカル Helm チャートの名前。 |
String。例: |
| ミラーリングするローカル Helm チャートのパス。 |
String。例: |
| ミラーリング元のリモート Helm リポジトリー。 | オブジェクトの配列。以下に例を示します。 repositories: - name: podinfo url: https://example.github.io/podinfo charts: - name: podinfo version: 5.0.0 imagePaths: - "{.spec.template.spec.custom[*].image}"
|
| ミラーリング元の Helm リポジトリーの名前。 |
String。例: |
| ミラーリング元の helm リポジトリーの URL。 |
String。例: |
| ミラーリングするリモート Helm チャート。 | オブジェクトの配列。 |
| ミラーリングする Helm チャートの名前。 |
String。例: |
| helm チャート内のコンテナーイメージのカスタムパス。 + 注記
|
文字列の配列。例: |
| イメージセットの 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 カスタムリソースを完了するために使用するテンプレートのディスク上のパス。 |
文字列の例: apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: discarded namespace: openshift-marketplace spec: image: discarded sourceType: grpc updateStrategy: registryPoll: interval: 30m0s
|
|
|
文字列の例: |
| イメージセットのプラットフォーム設定。 | オブジェクト |
| ミラーリングするプラットフォームリリースペイロードのアーキテクチャー。 | 文字列の配列例: architectures: - amd64 - arm64 - multi - ppc64le - s390x
デフォルト値は |
| イメージセットのプラットフォームチャネル設定。 | オブジェクトの配列の例: channels: - name: stable-4.12 - name: stable-4.18
|
|
|
ブール値。デフォルト値は |
| リリースチャネルの名前。 |
文字列の例: |
| ミラーリングされる参照プラットフォームの最小バージョン。 |
文字列の例: |
| ミラーリングされる参照プラットフォームの最上位バージョン。 |
文字列の例: |
| 最短パスミラーリングまたはフルレンジミラーリングを切り替えます。 |
ブール値。デフォルト値は |
| ミラーリングするプラットフォームのタイプ。 |
文字列の例: |
| OSUS グラフがイメージセットに追加され、その後ミラーに公開されるかどうかを示します。 |
ブール値。デフォルト値は |
3.3.11.1. ImageSet
設定パラメーターを削除する
oc-mirror プラグイン v2 を使用するには、ミラーレジストリーから削除するイメージを定義するイメージセット削除設定ファイルが必要です。次の表は、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。 |
文字列の例: |
| イメージセットのプラットフォーム設定。 | オブジェクト |
| 削除するプラットフォームリリースペイロードのアーキテクチャー。 | 文字列の配列例: architectures: - amd64 - arm64 - multi - ppc64le - s390x
デフォルト値は |
| イメージセットのプラットフォームチャネル設定。 | オブジェクトの配列 以下に例を示します。 channels: - name: stable-4.12 - name: stable-4.18
|
|
|
ブール値。デフォルト値は |
| リリースチャネルの名前。 |
文字列の例: |
| 削除する参照プラットフォームの最小バージョン。 |
文字列の例: |
| 削除する参照プラットフォームの最大バージョン。 |
文字列の例: |
| 最短パスの削除と全範囲の削除を切り替えます。 |
ブール値。デフォルト値は |
| 削除するプラットフォームのタイプ |
文字列の例: |
| ミラーレジストリー上の OSUS グラフも削除するかどうかを指定します。 |
ブール値。デフォルト値は |
3.3.12. oc-mirror プラグイン v2 のコマンドリファレンス
次の表は、oc-mirror プラグイン v2 の oc mirror
サブコマンドとフラグを説明しています。
サブコマンド | 説明 |
---|---|
| サブコマンドに関するヘルプを表示します。 |
| oc-mirror バージョンを出力します。 |
| リモートレジストリーとローカルキャッシュ内のイメージを削除します。 |
フラグ | 説明 |
---|---|
|
認証ファイルの文字列パスを表示します。デフォルトは |
| イメージセット設定ファイルへのパスを指定します。 |
|
oc-mirror キャッシュディレクトリーの場所。デフォルト値は |
|
コンテナーレジストリーまたはデーモンにアクセスするには HTTPS が必要であり、証明書が検証されます。デフォルト値は |
| イメージをミラーリングせずにアクションを出力します。 |
| oc-mirror プラグイン v2 を実行してターゲットレジストリーをロードすることで生成されたイメージセットアーカイブへのパスを指定します。 |
| ヘルプを表示します。 |
|
イメージのミラーリングのタイムアウト。デフォルトは 10m0s です。有効な時間単位は、 |
|
文字列のログレベルを表示します。サポートされる値には、info、debug、trace、error などがあります。デフォルト値は |
|
oc-mirror プラグイン v2 のローカルストレージインスタンスが使用する HTTP ポートを指定します。デフォルト値は |
|
並行してミラーリングするイメージの数を指定します。デフォルト値は |
|
並行してミラーリングするイメージレイヤーの数を指定します。デフォルト値は |
|
ネストされたパスを制限する宛先レジストリーのネストされたパスの最大数を指定します。デフォルト値は |
|
デフォルト値は |
|
指定した日付以降のすべての新しいコンテンツが含まれます (形式: |
| コンテナーレジストリーまたはデーモンにアクセスするには HTTPS が必要であり、証明書が検証されます。 |
|
デフォルト値は |
| oc-mirror プラグイン v2 のバージョンを表示します。 |
| リソースと内部アーティファクトが生成される文字列 oc-mirror プラグイン v2 ワークスペースを指定します。 |
|
2 回の再試行間の遅延。デフォルト値は |
|
再試行する回数。デフォルト値は |
|
デフォルトのコンテナールートレスストレージパス (通常は |
3.3.12.1. イメージ削除のコマンドリファレンス
次の表は、イメージを削除するための oc mirror
サブコマンドとフラグについて説明しています。
サブコマンド | 説明 |
---|---|
|
認証ファイルのパス。デフォルト値は |
|
oc-mirror キャッシュディレクトリーの場所。デフォルトは |
| 削除イメージセット設定ファイルへのパス。 |
| 削除機能によって作成されたファイルのバージョンを区別するために使用されます。 |
|
以前に oc-mirror プラグイン v1 でミラーリングしたイメージをターゲットにするために、移行時に |
| 設定されている場合、生成または更新された yaml ファイルを使用してコンテンツを削除します。 |
|
コンテナーレジストリーまたはデーモンと通信するときに HTTPS を要求し、証明書を検証します。デフォルト値は |
| ローカルキャッシュマニフェストと Blob を強制的に削除するために使用されます。 |
| ローカルキャッシュおよびリモートレジストリーから削除するときに使用されるマニフェストと Blob のリスト用の削除 yaml を生成するために使用されます。 |
| ヘルプを表示します。 |
|
|
|
並行して削除するイメージの数を示します。デフォルト値は |
|
並行してミラーリングするイメージレイヤーの数を示します。デフォルト値は |
|
oc-mirror のローカルストレージインスタンスによって使用される HTTP ポート。デフォルト値は |
|
2 回の再試行間の遅延時間。デフォルト値は |
|
再試行する回数。デフォルト値は |
|
コンテナーレジストリーまたはデーモンと通信するときに HTTPS を要求し、証明書を検証します。デフォルト値は |
| リソースと内部アーティファクトが生成される oc-mirror ワークスペース。 |
3.3.13. 次のステップ
oc-mirror プラグイン v2 を使用して非接続環境にイメージをミラーリングしたら、次のアクションを実行できます。