13.2. OpenShift Container Platform イメージリポジトリーのミラーリング
非接続環境でクラスターを更新する前に、コンテナーイメージをミラーレジストリーにミラーリングする必要があります。接続された環境でこの手順を使用して、外部コンテンツに関する組織の制限を満たしている承認済みコンテナーイメージのみをクラスターで実行するようにすることもできます。
ミラーレジストリーは、クラスターの実行中に常に実行されている必要があります。
以下に示す手順は、ミラーレジストリーにイメージをミラーリングする大まかなワークフローです。
-
リリースイメージの取得およびプッシュに使用されるすべてのデバイスに OpenShift CLI (
oc) をインストールします。 - レジストリープルシークレットをダウンロードし、クラスターに追加します。
oc-mirror OpenShift CLI (
oc) プラグイン を使用する場合:- リリースイメージの取得およびプッシュに使用されるすべてのデバイスに oc-mirror プラグインをインストールします。
- ミラーリングするリリースイメージを決定する際に、使用するプラグイン用のイメージセット設定ファイルを作成します。この設定ファイルは後で編集して、プラグインがミラーリングするリリースイメージを変更できます。
- ターゲットのリリースイメージをミラーレジストリーに直接ミラーリングするかリムーバブルメディアにミラーリングしてからミラーレジストリーにミラーリングします。
- oc-mirror プラグインが生成したリソースを使用するようにクラスターを設定します。
- 必要に応じてこれらの手順を繰り返し、ミラーレジストリーを更新します。
oc adm release mirrorコマンド を使用する場合:- 使用している環境とミラーリングするリリースイメージに対応する環境変数を設定します。
- ターゲットのリリースイメージをミラーレジストリーに直接ミラーリングするかリムーバブルメディアにミラーリングしてからミラーレジストリーにミラーリングします。
- 必要に応じてこれらの手順を繰り返し、ミラーレジストリーを更新します。
oc adm release mirror コマンドを使用する場合と比較して、oc-mirror プラグインには次の利点があります。
- コンテナーイメージ以外のコンテンツをミラーリングできます。
- 初めてイメージをミラーリングした後は、レジストリー内のイメージを簡単に更新できます。
- oc-mirror プラグインは、Quay からリリースペイロードをミラーリングする自動化された方法を提供し、非接続環境で実行されている OpenShift Update Service 用の最新のグラフデータイメージを構築します。
13.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay など、OpenShift Container Platform クラスターをホストする場所に Docker v2-2 をサポートするコンテナーイメージレジストリーを持っている。
注記Red Hat Quay を使用する場合は、oc-mirror プラグインでバージョン 3.6 以降を使用する必要があります。Red Hat Quay のライセンスをお持ちの場合は、概念実証のため に、または Quay Operator を使用 して Red Hat Quay をデプロイする方法を記載したドキュメントを参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
コンテナーイメージレジストリーの既存のソリューションがない場合は、OpenShift Container Platform サブスクリプションに含まれる mirror registry for Red Hat OpenShift を使用できます。Red Hat OpenShift のミラーレジストリー は、非接続インストールおよび更新で OpenShift Container Platform コンテナーイメージをミラーリングするために使用できる小規模なコンテナーレジストリーです。
13.2.2. ミラーホストの準備 リンクのコピーリンクがクリップボードにコピーされました!
ミラー手順を実行する前に、ホストを準備して、コンテンツを取得し、リモートの場所にプッシュできるようにする必要があります。
13.2.2.1. バイナリーのダウンロードによる OpenShift CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイスを使用して OpenShift Container Platform と対話するために CLI (oc) をインストールすることができます。oc は Linux、Windows、または macOS にインストールできます。
以前のバージョンの oc をインストールしている場合、これを使用して OpenShift Container Platform 4.12 のすべてのコマンドを実行することはできません。新しいバージョンの oc をダウンロードしてインストールしてください。切断された環境でクラスターをアップグレードする場合は、アップグレード先の oc バージョンをインストールします。
Linux への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc) バイナリーを Linux にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- Product Variant ドロップダウンリストからアーキテクチャーを選択します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.12 Linux Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
アーカイブを展開します。
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ocバイナリーを、PATHにあるディレクトリーに配置します。PATHを確認するには、以下のコマンドを実行します。echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
OpenShift CLI のインストール後に、
ocコマンドを使用して利用できます。oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Windows への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc) バイナリーを Windows にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.12 Windows Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
- ZIP プログラムでアーカイブを解凍します。
ocバイナリーを、PATHにあるディレクトリーに移動します。PATHを確認するには、コマンドプロンプトを開いて以下のコマンドを実行します。path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
OpenShift CLI のインストール後に、
ocコマンドを使用して利用できます。oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
macOS への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc) バイナリーを macOS にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
OpenShift v4.12 macOS Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
注記macOS arm64 の場合は、OpenShift v4.12 macOS arm64 Client エントリーを選択します。
- アーカイブを展開し、解凍します。
ocバイナリーをパスにあるディレクトリーに移動します。PATHを確認するには、ターミナルを開き、以下のコマンドを実行します。echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
OpenShift CLI のインストール後に、
ocコマンドを使用して利用できます。oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.2.2. イメージのミラーリングを可能にする認証情報の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat からミラーへのイメージのミラーリングを可能にするコンテナーイメージレジストリーの認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定した。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
手順
インストールホストで以下の手順を実行します。
-
Red Hat OpenShift Cluster Manager サイトの Pull Secret ページから
registry.redhat.ioプルシークレットをダウンロードします。 JSON 形式でプルシークレットのコピーを作成します。
cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。
ファイルの内容は以下の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: oc-mirror プラグインを使用している場合は、ファイルを
~/.docker/config.jsonまたは$XDG_RUNTIME_DIR/containers/auth.jsonとして保存します。.dockerまたは$XDG_RUNTIME_DIR/containersディレクトリーが存在しない場合は、次のコマンドを入力して作成します。mkdir -p <directory_name>
$ mkdir -p <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合の
<directory_name>は、~/.dockerまたは$XDG_RUNTIME_DIR/containersのいずれかです。次のコマンドを入力して、プルシークレットを適切なディレクトリーにコピーします。
cp <path>/<pull_secret_file_in_json> <directory_name>/<auth_file>
$ cp <path>/<pull_secret_file_in_json> <directory_name>/<auth_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合の
<directory_name>は~/.dockerまたは$XDG_RUNTIME_DIR/containers、<auth_file>はconfig.jsonまたはauth.jsonのいずれかです。
ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。
echo -n '<user_name>:<password>' | base64 -w0
$ echo -n '<user_name>:<password>' | base64 -w01 BGVtbYk3ZHAtqXs=Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<user_name>および<password>には、レジストリーに設定したユーザー名およびパスワードを指定します。
JSON ファイルを編集し、レジストリーについて記述するセクションをこれに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルは以下の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.3. oc-mirror プラグインを使用したリソースのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror OpenShift CLI (oc) プラグインを使用して、完全なまたは部分的な非接続環境でイメージをミラーレジストリーにミラーリングできます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror を実行する必要があります。
13.2.3.1. oc-mirror プラグインについて リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror OpenShift CLI(oc) プラグインを使用すると、単一のツールを使用して、必要なすべての OpenShift Container Platform コンテンツおよびその他のイメージをミラーレジストリーにミラーリングできます。次の機能を提供します。
- OpenShift Container Platform のリリース、Operator、Helm チャート、およびその他のイメージをミラーリングするための一元化された方法を提供します。
- OpenShift Container Platform および Operator の更新パスを維持します。
- 宣言型イメージセット設定ファイルを使用して、クラスターに必要な OpenShift Container Platform リリース、Operator、およびイメージのみを含めます。
- 将来のイメージセットのサイズを縮小するインクリメンタルミラーリングを実行します。
- 前回の実行以降にイメージセット設定から除外されたターゲットミラーレジストリーからのイメージをプルーニングします。
- オプションで、OpenShift Update Service (OSUS) を使用する際のサポートアーティファクトを生成します。
oc-mirror プラグインを使用する場合、イメージセット設定ファイルでミラーリングするコンテンツを指定します。この YAML ファイルでは、クラスターに必要な OpenShift Container Platform リリースと Operator のみを含めるように設定を微調整できます。これにより、ダウンロードして転送する必要のあるデータの量が減ります。oc-mirror プラグインは、任意の Helm チャートと追加のコンテナーイメージをミラーリングして、ユーザーがワークロードをミラーレジストリーにシームレスに同期できるようにすることもできます。
oc-mirror プラグインを初めて実行すると、非接続クラスターのインストールまたは更新を実行するために必要なコンテンツがミラーレジストリーに入力されます。非接続クラスターが更新を受信し続けるには、ミラーレジストリーを更新しておく必要があります。ミラーレジストリーを更新するには、最初に実行したときと同じ設定を使用して oc-mirror プラグインを実行します。oc-mirror プラグインは、ストレージバックエンドからメタデータを参照し、ツールを最後に実行してからリリースされたもののみをダウンロードします。これにより、OpenShift Container Platform および Operator の更新パスが提供され、必要に応じて依存関係の解決が実行されます。
oc-mirror CLI プラグインを使用してミラーレジストリーにデータを入力する場合、ミラーレジストリーをさらに更新するには、oc-mirror ツールを使用する必要があります。
13.2.3.2. oc-mirror の互換性とサポート リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインは、OpenShift Container Platform バージョン 4.9 以降の OpenShift Container Platform ペイロードイメージと Operator カタログのミラーリングをサポートします。
ミラーリングする必要がある OpenShift Container Platform のバージョンに関係なく、使用可能な最新バージョンの oc-mirror プラグインを使用してください。
13.2.3.3. ミラーレジストリーについて リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform のインストールとその後の製品更新に必要なイメージを、Red Hat Quay などの Docker v2-2 をサポートするコンテナーミラーレジストリーにミラーリングできます。大規模なコンテナーレジストリーにアクセスできない場合は、OpenShift Container Platform サブスクリプションに含まれる小規模なコンテナーレジストリーである Red Hat OpenShift 導入用のミラーレジストリー を使用できます。
選択したレジストリーに関係なく、インターネット上の Red Hat がホストするサイトから分離されたイメージレジストリーにコンテンツをミラーリングする手順は同じです。コンテンツをミラーリングした後に、各クラスターをミラーレジストリーからこのコンテンツを取得するように設定します。
OpenShift イメージレジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
Red Hat OpenShift 導入用のミラーレジストリー 以外のコンテナーレジストリーを選択する場合は、プロビジョニングするクラスター内の全マシンから到達可能である必要があります。レジストリーに到達できない場合、インストール、更新、またはワークロードの再配置などの通常の操作が失敗する可能性があります。そのため、ミラーレジストリーは可用性の高い方法で実行し、ミラーレジストリーは少なくとも OpenShift Container Platform クラスターの実稼働環境の可用性の条件に一致している必要があります。
ミラーレジストリーを OpenShift Container Platform イメージで設定する場合、2 つのシナリオを実行することができます。インターネットとミラーレジストリーの両方にアクセスできるホストがあり、クラスターノードにアクセスできない場合は、そのマシンからコンテンツを直接ミラーリングできます。このプロセスは、connected mirroring (接続ミラーリング) と呼ばれます。このようなホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを制限された環境に配置する必要があります。このプロセスは、disconnected mirroring (非接続ミラーリング) と呼ばれます。
ミラーリングされたレジストリーの場合は、プルされたイメージのソースを表示するには、CRI-O ログで Trying to access のログエントリーを確認する必要があります。ノードで crictl images コマンドを使用するなど、イメージのプルソースを表示する他の方法では、イメージがミラーリングされた場所からプルされている場合でも、ミラーリングされていないイメージ名を表示します。
Red Hat は、OpenShift Container Platform を使用してサードパーティーのレジストリーをテストしません。
13.2.3.4. oc-mirror OpenShift CLI プラグインのインストール リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror OpenShift CLI プラグインを使用してレジストリーイメージをミラーリングするには、プラグインをインストールする必要があります。完全な非接続環境でイメージセットをミラーリングする場合は、インターネットにアクセスできるホストと、ミラーレジストリーにアクセスできる非接続環境のホストに oc-mirror プラグインをインストールしてください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
oc-mirror CLI プラグインをダウンロードします。
- OpenShift Cluster Manager Hybrid Cloud Console の ダウンロード ページに移動します。
- OpenShift 切断インストールツール セクションで、OpenShift Client (oc) ミラープラグイン の ダウンロード をクリックしてファイルを保存します。
アーカイブを抽出します。
tar xvzf oc-mirror.tar.gz
$ tar xvzf oc-mirror.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、プラグインファイルを更新して実行可能にします。
chmod +x oc-mirror
$ chmod +x oc-mirrorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記oc-mirrorファイルの名前を変更しないでください。ファイルを
PATHに配置して、oc-mirror CLI プラグインをインストールします (例:/usr/local/bin):。sudo mv oc-mirror /usr/local/bin/.
$ sudo mv oc-mirror /usr/local/bin/.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
oc mirror helpを実行して、プラグインが正常にインストールされたことを確認します。oc mirror help
$ oc mirror helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.3.5. イメージセット設定の作成 リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用してイメージセットをミラーリングする前に、イメージセット設定ファイルを作成する必要があります。このイメージセット設定ファイルは、ミラーリングする OpenShift Container Platform リリース、Operator、およびその他のイメージと、oc-mirror プラグインの他の設定を定義します。
イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、Docker v2-2 をサポートするローカルディレクトリーまたはレジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。
oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。
前提条件
- コンテナーイメージレジストリーの認証情報ファイルを作成している。手順は、イメージのミラーリングを可能にする認証情報の設定 を参照してください。
手順
oc mirror initコマンドを使用して、イメージセット設定のテンプレートを作成し、それをimageset-config.yamlというファイルに保存します。oc mirror init --registry example.com/mirror/oc-mirror-metadata > imageset-config.yaml
$ oc mirror init --registry example.com/mirror/oc-mirror-metadata > imageset-config.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
example.com/mirror/oc-mirror-metadataをストレージバックエンドのレジストリーの場所に置き換えます。
ファイルを編集し、必要に応じて設定を調整します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
archiveSizeを追加して、イメージセット内の各ファイルの最大サイズを GiB 単位で設定します。- 2
- イメージセットのメタデータを保存するバックエンドの場所を設定します。この場所は、レジストリーまたはローカルディレクトリーにすることができます。Technology Preview OCI 機能を使用していない場合は、
storageConfig値を指定する必要があります。 - 3
- ストレージバックエンドのレジストリー URL を設定します。
- 4
- OpenShift Container Platform イメージを取得するためのチャネルを設定します。
- 5
graph: trueを追加して、グラフデータイメージをビルドし、ミラーレジストリーにプッシュします。OpenShift Update Service (OSUS) を作成するには、graph-data イメージが必要です。graph: trueフィールドはUpdateServiceカスタムリソースマニフェストも生成します。ocコマンドラインインターフェイス (CLI) は、UpdateServiceカスタムリソースマニフェストを使用して OSUS を作成できます。詳細は、OpenShift Update Service について を参照してください。- 6
- OpenShift Container Platform イメージを取得するための Operator カタログを設定します。
- 7
- イメージセットに含める特定の Operator パッケージのみを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
- 8
- イメージセットに含める Operator パッケージの特定のチャネルのみを指定します。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。
oc mirror list operators --catalog=<catalog_name> --package=<package_name>コマンドを実行すると、デフォルトチャネルを見つけることができます。 - 9
- イメージセットに含める追加のイメージを指定します。
注記graph: trueフィールド は、他のミラーリングされたイメージとともにubi-microイメージもミラーリングします。パラメーターの完全なリストについては、イメージセットの設定パラメーター を参照してください。また、さまざまなミラーリングのユースケースについては、イメージセットの設定例 を参照してください。
更新したファイルを保存します。
このイメージセット設定ファイルは、コンテンツをミラーリングするときに
oc mirrorコマンドで必要になります。
13.2.3.6. イメージセットをミラーレジストリーにミラーリングする リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror CLI プラグインを使用して、部分的な非接続環境 または 完全な非接続環境 でイメージをミラーレジストリーにミラーリングできます。
以下の手順は、ミラーレジストリーがすでに設定されていることを前提としています。
13.2.3.6.1. 部分的な非接続環境でのイメージセットのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
部分的な非接続環境では、イメージセットをターゲットミラーレジストリーに直接ミラーリングできます。
13.2.3.6.1.1. ミラーからミラーへのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用して、イメージセットの作成中にアクセス可能なターゲットミラーレジストリーにイメージセットを直接ミラーリングできます。
イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、ローカルディレクトリーまたは Dockerv2 レジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。
oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc) がインストールされている。 -
oc-mirrorCLI プラグインをインストールしている。 - イメージセット設定ファイルを作成している。
手順
oc mirrorコマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。oc mirror --config=./imageset-config.yaml \ docker://registry.example:5000
$ oc mirror --config=./imageset-config.yaml \1 docker://registry.example:50002 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
生成された
oc-mirror-workspace/ディレクトリーに移動します。 -
results ディレクトリーに移動します (例:
results-1639608409/。 -
ImageContentSourcePolicyおよびCatalogSourceリソースに YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
トラブルシューティング
13.2.3.6.2. 完全な非接続環境でのイメージセットのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
完全な非接続環境でイメージセットをミラーリングするには、最初に イメージセットをディスクにミラーリング してから、ディスク上のイメージセットファイルをミラーにミラーリング する必要があります。
13.2.3.6.2.1. ミラーからディスクへのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用して、イメージセットを生成し、コンテンツをディスクに保存できます。生成されたイメージセットは、非接続環境に転送され、ターゲットレジストリーにミラーリングされます。
イメージセット設定ファイルで指定されている設定によっては、oc-mirror を使用してイメージをミラーリングすると、数百ギガバイトのデータがディスクにダウンロードされる場合があります。
多くの場合、ミラーレジストリーにデータを入力するときの最初のイメージセットのダウンロードが、最も大きなものとなります。最後にコマンドを実行した後に変更されたイメージのみをダウンロードするため、oc-mirror プラグインを再度実行すると、生成されるイメージセットは小さいことが多いです。
イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、ローカルディレクトリーまたは docker v2 レジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。
oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc) がインストールされている。 -
oc-mirrorCLI プラグインをインストールしている。 - イメージセット設定ファイルを作成している。
手順
oc mirrorコマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。oc mirror --config=./imageset-config.yaml \ file://<path_to_output_directory>
$ oc mirror --config=./imageset-config.yaml \1 file://<path_to_output_directory>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
出力ディレクトリーに移動します。
cd <path_to_output_directory>
$ cd <path_to_output_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージセットの
.tarファイルが作成されたことを確認します。ls
$ lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
mirror_seq1_000000.tar
mirror_seq1_000000.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- イメージセットの.tar ファイルを非接続環境に転送します。
トラブルシューティング
13.2.3.6.2.2. ディスクからミラーへのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用して、生成されたイメージセットの内容をターゲットミラーレジストリーにミラーリングできます。
前提条件
-
非接続環境に OpenShift CLI (
oc) をインストールしている。 -
非接続環境に
oc-mirrorCLI プラグインをインストールしている。 -
oc mirrorコマンドを使用してイメージセットファイルを生成している。 - イメージセットファイルを非接続環境に転送した。
手順
oc mirrorコマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。oc mirror --from=./mirror_seq1_000000.tar \ docker://registry.example:5000
$ oc mirror --from=./mirror_seq1_000000.tar \1 docker://registry.example:50002 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、
mirror_seq1_000000.tarという名前のイメージセット.tar ファイルをミラーに渡します。イメージセット設定ファイルでarchiveSize値が指定されている場合、イメージセットは複数の.tar ファイルに分割される可能性があります。この状況では、イメージセットの.tar ファイルを含むディレクトリーを渡すことができます。 - 2
- イメージセットファイルをミラーリングするレジストリーを指定します。レジストリーは
docker://で始まる必要があります。ミラーレジストリーに最上位の namespace を指定する場合は、これ以降の実行でもこれと同じ namespace を使用する必要があります。
このコマンドは、ミラーレジストリーをイメージセットで更新し、
ImageContentSourcePolicyおよびCatalogSourceリソースを生成します。
検証
-
生成された
oc-mirror-workspace/ディレクトリーに移動します。 -
results ディレクトリーに移動します (例:
results-1639608409/。 -
ImageContentSourcePolicyおよびCatalogSourceリソースに YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
トラブルシューティング
13.2.3.7. oc-mirror が生成したリソースを使用するためのクラスター設定 リンクのコピーリンクがクリップボードにコピーされました!
イメージセットをミラーレジストリーにミラーリングした後に、生成された ImageContentSourcePolicy、CatalogSource、およびリリースイメージの署名リソースをクラスターに適用する必要があります。
ImageContentSourcePolicy リソースは、ミラーレジストリーをソースレジストリーに関連付け、イメージプル要求をオンラインレジストリーからミラーレジストリーにリダイレクトします。CatalogSource リソースは、Operator Lifecycle Manager (OLM) によって使用され、ミラーレジストリーで使用可能な Operator に関する情報を取得します。リリースイメージの署名は、ミラーリングされたリリースイメージの検証に使用されます。
前提条件
- 非接続環境で、イメージセットをレジストリーミラーにミラーリングしました。
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-adminロールを持つユーザーとして OpenShift CLI にログインします。 以下のコマンドを実行して、results ディレクトリーからクラスターに YAML ファイルを適用します。
oc apply -f ./oc-mirror-workspace/results-1639608409/
$ oc apply -f ./oc-mirror-workspace/results-1639608409/Copy to Clipboard Copied! Toggle word wrap Toggle overflow リリースイメージをミラーリングした場合は、次のコマンドを実行して、リリースイメージの署名をクラスターに適用します。
oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスターではなく Operator をミラーリングしている場合、
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/を実行する必要はありません。適用するリリースイメージ署名がないため、このコマンドを実行するとエラーが返されます。
検証
以下のコマンドを実行して、
ImageContentSourcePolicyリソースが正常にインストールされたことを確認します。oc get imagecontentsourcepolicy
$ oc get imagecontentsourcepolicyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
CatalogSourceリソースが正常にインストールされたことを確認します。oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.3.8. ミラーレジストリーのコンテンツを最新の状態に保つ リンクのコピーリンクがクリップボードにコピーされました!
ターゲットミラーレジストリーに初期イメージセットを入力したら、最新のコンテンツが含まれるように定期的に更新する必要があります。可能な場合は、定期的にミラーレジストリーを更新する cron ジョブを設定できます。
イメージセット設定を更新して、必要に応じて OpenShift Container Platform および Operator リリースを追加または削除してください。削除したイメージはミラーレジストリーからプルーニングされます。
13.2.3.8.1. ミラーレジストリーコンテンツの更新について リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを再度実行すると、前回の実行以降に新しく更新されたイメージのみを含むイメージセットが生成されます。前に作成されたイメージセットとの違いのみを取り込むため、生成されたイメージセットは、多くの場合、最初のイメージセットよりも小さく、迅速に処理されます。
生成されたイメージセットはシーケンシャルであり、ターゲットミラーレジストリーに順番にプッシュする必要があります。シーケンス番号は、生成されたイメージセットアーカイブファイルのファイル名から取得できます。
新規イメージおよび更新されたイメージの追加
イメージセット設定の設定に応じて、oc-mirror を今後実行すると、追加の新しいイメージと更新されたイメージがミラーリングされます。イメージセット設定の設定を確認して、必要に応じて新しいバージョンを取得していることを確認します。たとえば、特定のバージョンに制限する場合は、Operator の最小バージョンと最大バージョンをミラーリングするように設定できます。または、最小バージョンをミラーリングの開始点として設定することもできますが、バージョン範囲は開いたままにして、oc-mirror の今後の実行時に新しい Operator バージョンを受け取り続けることができます。最小または最大バージョンを省略すると、チャネル内の Operator の完全なバージョン履歴が得られます。明示的に名前付けされたチャネルを省略すると、指定された Operator のすべてのチャネルのすべてのリリースが提供されます。名前付き Operator を省略すると、これまでにリリースされたすべての Operator とそのすべてのバージョンのカタログ全体が提供されます。
これらすべての制約と条件は、oc-mirror が呼び出されるたびに Red Hat によって公開されたコンテンツに対して評価されます。このようにして、新しいリリースとまったく新しい Operator を自動的にピックアップします。制約は、必要な Operator のセットをリストするだけで指定できます。これにより、新しくリリースされた他の Operator がミラーセットに自動的に追加されることはありません。特定のリリースチャネルを指定することもできます。これにより、ミラーリングは追加された新しいチャネルではなく、このチャネルのみに制限されます。これは、マイナーリリースに異なるリリースチャネルを使用する Red Hat Quay などの Operator 製品にとって重要です。最後に、特定の Operator の最大バージョンを指定できます。これにより、ツールは指定されたバージョン範囲のみをミラーリングするため、ミラーリングされた最大バージョンを超えた新しいリリースが自動的に取得されることはありません。これらのすべての場合において、イメージセット設定ファイルを更新して Operator のミラーリングの範囲を広げ、他の Operator、新しいチャネル、および Operator の新しいバージョンをターゲットレジストリーで使用できるようにする必要があります。
チャネル仕様やバージョン範囲などの制約を、特定の Operator が選択したリリースストラテジーに合わせることを推奨します。たとえば、Operator が stable チャネルを使用している場合、ミラーリングをそのチャネルと可能ならば最小バージョンに制限し、ダウンロード量と定期的な安定した更新の取得との間の適切なバランスを見つける必要があります。Operator がリリースバージョンのチャネルスキーム (stable-3.7 など) を選択した場合、そのチャネルのすべてのリリースをミラーリングする必要があります。これにより、Operator のパッチバージョン (3.7.1 など) を引き続き受け取ることができます。また、イメージセットの設定を定期的に調整して、新製品リリース (stable-3.8 など) 用のチャネルを追加することもできます。
イメージのプルーニング
イメージは、生成およびミラーリングされた最新のイメージセットに含まれなくなった場合、ターゲットミラーレジストリーから自動的にプルーニングされます。これにより、不要なコンテンツを簡単に管理およびクリーンアップし、ストレージリソースを解放することができます。
不要になった OpenShift Container Platform リリースまたは Operator バージョンがある場合、イメージセットの設定を変更してそれらを除外できます。これらはミラーリング時にミラーレジストリーからプルーニングされます。これは、イメージセット設定ファイルで Operator ごとに最小または最大バージョン範囲の設定を調整するか、カタログからミラーリングする Operator のリストから Operator を削除することによって実行できます。Operator カタログ全体または OpenShift Container Platform リリース全体を設定ファイルから削除することもできます。
以下の状況では、イメージはターゲットミラーレジストリーから自動的にプルーニングされません。
- ミラーリングする新規イメージまたは更新されたイメージがない場合
- テクノロジープレビュー OCI 機能を使用している場合
さらに、Operator パブリッシャーがチャネルから Operator バージョンを削除すると、削除されたバージョンはターゲットミラーレジストリーからプルーニングされます。
ターゲットミラーレジストリーからのイメージの自動プルーニングを無効にするには、--skip-pruning フラグを oc mirror コマンドに渡します。
13.2.3.8.2. ミラーレジストリーコンテンツの更新 リンクのコピーリンクがクリップボードにコピーされました!
初期イメージセットをミラーレジストリーに公開した後、oc-mirror プラグインを使用して、切断されたクラスターを最新の状態に保つことができます。
イメージセットの設定に応じて、oc-mirror は、初期ミラーリングの完了後にリリースされた OpenShift Container Platform および選択した Operator の新しいリリースを自動的に検出します。たとえば、毎晩の cron ジョブなどで、定期的に oc-mirror を実行し、製品とセキュリティーの更新をタイムリーに受信することを推奨します。
前提条件
- oc-mirror プラグインを使用して、最初のイメージセットをミラーレジストリーにミラーリングしている。
oc-mirror プラグインの最初の実行に使用されたストレージバックエンドにアクセスできる。
注記同じミラーレジストリーに対して oc-mirror の最初の実行と同じストレージバックエンドを使用する必要があります。oc-mirror プラグインによって生成されたメタデータイメージを削除または変更しないでください。
手順
- 必要に応じて、イメージセット設定ファイルを更新して、新しい OpenShift Container Platform および Operator バージョンを取得します。ミラーリングの使用例については、イメージセットの設定例 を参照してください。
初期イメージセットをミラーレジストリーにミラーリングしたときと同じ手順に従います。手順については、部分的な非接続環境でのイメージセットのミラーリング または 完全な非接続環境でのイメージセットのミラーリング を参照してください。
重要- 差分イメージセットのみが作成およびミラーリングされるように、同じストレージバックエンドを提供する必要があります。
- イメージセットの最初の作成時にミラーレジストリーにトップレベルの namespace を指定した場合は、同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、この同じ namespace を使用する必要があります。
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
13.2.3.9. ドライランの実行 リンクのコピーリンクがクリップボードにコピーされました!
実際にイメージをミラーリングせずに、oc-mirror を使用してドライランを実行できます。これにより、ミラーリングされるイメージのリストと、ミラーレジストリーからプルーニングされるイメージを確認できます。また、イメージセット設定のエラーを早期に検出したり、生成されたイメージのリストを他のツールで使用してミラーリング操作を実行したりすることもできます。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc) がインストールされている。 -
oc-mirrorCLI プラグインをインストールしている。 - イメージセット設定ファイルを作成している。
手順
--dry-runフラグを指定してoc mirrorコマンドを実行し、ドライランを実行します。oc mirror --config=./imageset-config.yaml \ docker://registry.example:5000 \ --dry-run
$ oc mirror --config=./imageset-config.yaml \1 docker://registry.example:5000 \2 --dry-run3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成されたワークスペースディレクトリーに移動します。
cd oc-mirror-workspace/
$ cd oc-mirror-workspace/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成された
mapping.txtファイルを確認します。このファイルには、ミラーリングされるすべてのイメージのリストが含まれています。
生成された
pruning-plan.jsonファイルを確認します。このファイルには、イメージセットの公開時にミラーレジストリーからプルーニングされるすべてのイメージのリストが含まれています。
注記pruning-plan.jsonファイルは、oc-mirror コマンドがミラーレジストリーを指し、プルーニングするイメージがある場合にのみ生成されます。
13.2.3.10. OCI 形式でのファイルベースのカタログ Operator イメージのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用して、Docker v2 形式ではなく Open Container Initiative (OCI) イメージ形式で Operator をミラーリングできます。Operator イメージをディスク上のファイルベースのカタログに OCI 形式でコピーできます。次に、ローカル OCI イメージをターゲットミラーレジストリーにコピーできます。
oc-mirror プラグインを使用して Operator イメージを OCI 形式でミラーリングすることは、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
OCI 機能を使用している場合、イメージはターゲットミラーレジストリーから自動的にプルーニングされません。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc) がインストールされている。 -
oc-mirrorCLI プラグインをインストールしている。
手順
オプション: 必要なカタログとイメージを取得し、ディスクに保存します。ディスク上に OCI 形式のカタログイメージがすでにある場合は、この手順を省略できます。
イメージセット設定ファイルを作成します。
ディスクにコピーするためのイメージセット設定ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OCI 機能を使用する場合、
mirror.operators.catalog設定のみを使用できます。storageConfig設定は無視され、oc mirrorコマンドに渡された場所が優先されます。oc mirrorコマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。oc mirror --config=./imageset-config.yaml \ --use-oci-feature \ --oci-feature-action=copy \ oci://my-oci-catalog
$ oc mirror --config=./imageset-config.yaml \1 --use-oci-feature \2 --oci-feature-action=copy \3 oci://my-oci-catalog4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージセット設定ファイルを渡します。この手順では、
imageset-config.yamlという名前であることを前提としています。 - 2
--use-oci-featureフラグを使用して OCI 機能を有効にします。- 3
- カタログをディスクにコピーするには、
--oci-feature-actionフラグをcopyに設定します。 - 4
- カタログを出力するディスク上のディレクトリーを指定します。この手順では、名前が
my-oci-catalogであることを前提としています。パスはoci://で始まる必要があります。指定されたディレクトリーがフルパスでない場合、ディレクトリーはoc mirrorコマンドが実行される現在の作業ディレクトリーに作成されます。
注記オプションで
--oci-registries-configフラグを使用して、TOML 形式のregistries.confファイルへのパスを指定できます。これを使用して、イメージセット設定ファイルを変更することなく、テスト用の運用前の場所など、別のレジストリーからミラーリングできます。registries.conf ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow registry.mirrorセクションのlocationフィールドを、イメージを取得する別のレジストリーの場所に設定します。registryセクションのlocationフィールドは、イメージセット設定ファイルで指定したものと同じレジストリーの場所である必要があります。ディレクトリーの内容を一覧表示し、次のディレクトリーが作成されたことを確認します。
ls -l
$ ls -lCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
my-oci-catalog oc-mirror-workspace olm_artifacts
my-oci-catalog1 oc-mirror-workspace2 olm_artifacts3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
イメージセット設定ファイルを更新して、ターゲットミラーレジストリーにミラーリングするディスク上のカタログの場所を指定します。
レジストリーをミラーリングするためのイメージセット設定ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ディスク上の OCI カタログの場所への絶対パスを指定します。この手順は、ディレクトリーとして
my-oci-catalogを使用し、redhat-operator-indexカタログをミラーリングしたことを前提としています。パスはoci://で始まる必要があります。
oc mirror コマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。
oc mirror --config=./imageset-config.yaml \ --use-oci-feature \ --oci-feature-action=mirror \ docker://registry.example:5000
$ oc mirror --config=./imageset-config.yaml \1 --use-oci-feature \2 --oci-feature-action=mirror \3 docker://registry.example:50004 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 更新されたイメージセット設定ファイルを渡します。この手順では、
imageset-config.yamlという名前であることを前提としています。 - 2
--use-oci-featureフラグを使用して OCI 機能を有効にします。- 3
- カタログをターゲットミラーレジストリーにミラーリングするには、
--oci-feature-actionフラグをmirrorに設定します。 - 4
- イメージセットファイルをミラーリングするレジストリーを指定します。レジストリーは
docker://で始まる必要があります。ミラーレジストリーに最上位の namespace を指定する場合は、これ以降の実行でもこれと同じ namespace を使用する必要があります。
注記オプションで
--oci-insecure-signature-policyフラグを使用して、署名をターゲットミラーレジストリーにプッシュしないようにすることができます。
次のステップ
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
13.2.3.11. Image set configuration parameters リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインには、ミラーリングするイメージを定義するイメージセット設定ファイルが必要です。次の表に、ImageSetConfiguration リソースで使用可能なパラメーターを示します。
| パラメーター | 説明 | 値 |
|---|---|---|
|
|
|
文字列。例: |
|
| イメージセット内の各アーカイブファイルの最大サイズ (GiB 単位)。 |
整数。例: |
|
| イメージセットの設定。 | オブジェクト |
|
| イメージセットの追加のイメージ設定。 | オブジェクトの配列。以下に例を示します。 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest
|
|
| ミラーリングするイメージのタグまたはダイジェスト。 |
文字列。例: |
|
| ミラーリングをブロックするタグまたはダイジェスト (SHA) を持つイメージのリスト。 |
文字列の配列例: |
|
| イメージセットの Helm 設定。oc-mirror プラグインは、レンダリング時にユーザー入力を必要としない Helm チャートのみをサポートすることに注意してください。 | オブジェクト |
|
| ミラーリングするローカル Helm チャート。 | オブジェクトの配列。以下に例を示します。 local:
- name: podinfo
path: /test/podinfo-5.0.0.tar.gz
|
|
| ミラーリングするローカル Helm チャートの名前。 |
文字列。例: |
|
| ミラーリングするローカル Helm チャートのパス。 |
文字列。例: |
|
| ミラーリング元のリモート Helm リポジトリー。 | オブジェクトの配列。以下に例を示します。 |
|
| ミラーリング元の Helm リポジトリーの名前。 |
文字列。例: |
|
| ミラーリング元の helm リポジトリーの URL。 |
文字列。例: |
|
| ミラーリングするリモート Helm チャート。 | オブジェクトの配列。 |
|
| ミラーリングする Helm チャートの名前。 |
文字列。例: |
|
| ミラーリングする名前付き Helm チャートのバージョン。 |
文字列。例: |
|
| イメージセットの Operators 設定。 | オブジェクトの配列。以下に例を示します。 operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12
packages:
- name: elasticsearch-operator
minVersion: '2.4.0'
|
|
| イメージセットに含める Operator カタログ。 |
文字列。例: |
|
|
|
ブール値。デフォルト値は |
|
| Operator パッケージ設定 | オブジェクトの配列。以下に例を示します。 operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12
packages:
- name: elasticsearch-operator
minVersion: '5.2.3-31'
|
|
| イメージセットに含める Operator パッケージ名 |
文字列。例: |
|
| Operator パッケージのチャネル設定。 | オブジェクト |
|
| イメージセットに含める、パッケージ内で一意の Operator チャネル名。 |
文字列。例: |
|
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。詳細は、以下の注記を参照してください。 |
文字列。例: |
|
| 含める最小バンドルの名前と、チャネルヘッドへのアップグレードグラフ内のすべてのバンドル。名前付きバンドルにセマンティックバージョンメタデータがない場合にのみ、このフィールドを設定します。 |
文字列。例: |
|
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。詳細は、以下の注記を参照してください。 |
文字列。例: |
|
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。詳細は、以下の注記を参照してください。 |
文字列。例: |
|
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。詳細は、以下の注記を参照してください。 |
文字列。例: |
|
|
|
ブール値。デフォルト値は |
|
| 参照カタログをミラーリングするためのオプションの代替名。 |
文字列。例: |
|
|
|
文字列。例: |
|
| イメージセットのプラットフォーム設定。 | オブジェクト |
|
| ミラーリングするプラットフォームリリースペイロードのアーキテクチャー。 | 文字列の配列以下に例を示します。 architectures: - amd64 - arm64
|
|
| イメージセットのプラットフォームチャネル設定。 | オブジェクトの配列。以下に例を示します。 channels: - name: stable-4.10 - name: stable-4.12
|
|
|
|
ブール値。デフォルト値は |
|
| リリースチャネルの名前。 |
文字列。例: |
|
| ミラーリングされる参照プラットフォームの最小バージョン。 |
文字列。例: |
|
| ミラーリングされる参照プラットフォームの最上位バージョン。 |
文字列。例: |
|
| 最短パスミラーリングまたはフルレンジミラーリングを切り替えます。 |
ブール値。デフォルト値は |
|
| ミラーリングするプラットフォームのタイプ。 |
文字列。例: |
|
| OSUS グラフがイメージセットに追加され、その後ミラーに公開されるかどうかを示します。 |
ブール値。デフォルト値は |
|
| イメージセットのバックエンド設定。 | オブジェクト |
|
| イメージセットのローカルバックエンド設定。 | オブジェクト |
|
| イメージセットのメタデータを含むディレクトリーのパス。 |
文字列。例: |
|
| イメージセットのレジストリーバックエンド設定。 | オブジェクト |
|
| バックエンドレジストリー URI。オプションで、URI に namespace 参照を含めることができます。 |
文字列。例: |
|
| オプションで、参照されるバックエンドレジストリーの TLS 検証をスキップします。 |
ブール値。デフォルト値は |
minVersion および maxVersion プロパティーを使用して特定の Operator バージョン範囲をフィルターすると、複数のチャネルヘッドエラーが発生する可能性があります。エラーメッセージには、multiple channel heads があることが表示されます。これは、フィルターが適用されると、Operator の更新グラフが切り捨てられるためです。
Operator Lifecycle Manager では、すべての Operator チャネルに、1 つのエンドポイント (最新バージョンの Operator) を持つ更新グラフを形成するバージョンが含まれている必要があります。グラフが 2 つ以上の別個のグラフ、または複数のエンドポイントを持つグラフに移動できるフィルター範囲を適用する場合。
このエラーを回避するには、最新バージョンの Operator を除外しないでください。それでもエラーが発生する場合は、Operator に応じて maxVersion プロパティーを増やすか、minVersion プロパティーを減らす必要があります。すべての Operator グラフは異なる可能性があるため、エラーがなくなるまで、手順に従ってこれらの値を調整する必要がある場合があります。
13.2.3.12. Image set configuration examples リンクのコピーリンクがクリップボードにコピーされました!
次の ImageSetConfiguration ファイルの例は、さまざまなミラーリングのユースケースの設定を示しています。
ユースケース: 最短の OpenShift Container Platform アップグレードパスを含める
以下の ImageSetConfiguration ファイルは、ローカルストレージバックエンドを使用し、最小バージョン 4.11.37 から最大バージョン 4.12.15 への最短アップグレードパスに沿ってすべての OpenShift Container Platform バージョンを含めます。
ImageSetConfigurationファイルの例
ユースケース: OpenShift Container Platform の最小バージョンから最新バージョンまでのすべてのバージョンを含める
以下の ImageSetConfiguration ファイルは、レジストリーストレージバックエンドを使用し、最小バージョン 4.10.10 からチャネルの最新バージョンまでのすべての OpenShift Container Platform バージョンを含みます。
このイメージセット設定で oc-mirror を呼び出すたびに、stable-4.10 チャネルの最新リリースが評価されるため、定期的に oc-mirror を実行すると、OpenShift Container Platform イメージの最新リリースを自動的に受け取ることができます。
ImageSetConfigurationファイルの例
ユースケース: 最小から最新までの Operator バージョンを含める
次の ImageSetConfiguration ファイルは、ローカルストレージバックエンドを使用し、これには、stable チャネルの Kubernetes Operator 用の Red Hat Advanced Cluster Security (4.0.1 以降のバージョン) のみが含まれています。
最小または最大のバージョン範囲を指定した場合、その範囲内のすべての Operator バージョンを受信できない可能性があります。
デフォルトで、oc-mirror は、Operator Lifecycle Manager (OLM) 仕様でスキップされたバージョン、または新しいバージョンに置き換えられたバージョンを除外します。スキップされた Operator のバージョンは、CVE の影響を受けるか、バグが含まれている可能性があります。代わりに新しいバージョンを使用してください。スキップおよび置き換えられたバージョンの詳細は、OLM を使用した更新グラフの作成 を参照してください。
指定した範囲内のすべての Operator バージョンを受信するには、mirror.operators.full フィールドを true に設定します。
ImageSetConfiguration ファイルの例
最新バージョンではなく最大バージョンを指定するには、mirror.operators.packages.channels.maxVersion フィールドを設定します。
ユースケース: Nutanix CSI Operator を含める
次の ImageSetConfiguration ファイルは、ローカルストレージバックエンドを使用します。このファイルには、Nutanix CSI Operator、OpenShift Update Service (OSUS) グラフイメージ、および追加の Red Hat Universal Base Image (UBI) が含まれます。
ImageSetConfiguration ファイルの例
ユースケース: デフォルトの Operator チャネルを含める
次の ImageSetConfiguration ファイルには、OpenShift Elasticsearch Operator の stable-5.7 および stable チャネルが含まれています。stable-5.7 チャネルのパッケージのみが必要な場合でも、stable チャネルを ImageSetConfiguration ファイルに含める必要があります。このチャネルは Operator のデフォルトチャネルであるためです。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。
oc mirror list operators --catalog=<catalog_name> --package=<package_name> コマンドを実行すると、デフォルトチャネルを見つけることができます。
ImageSetConfiguration ファイルの例
ユースケース: カタログ全体を含める (すべてのバージョン)
次の ImageSetConfiguration ファイルは、mirror.operators.full フィールドを true に設定して、Operator カタログ全体のすべてのバージョンを含めます。
ImageSetConfiguration ファイルの例
ユースケース: カタログ全体を含める (チャネルヘッドのみ)
次の ImageSetConfiguration ファイルには、Operator カタログ全体のチャネルヘッドが含まれています。
デフォルトでは、カタログ内の各 Operator において、oc-mirror にはデフォルトチャネルから Operator の最新バージョン (チャネルヘッド) が含まれています。チャネルヘッドだけでなく、すべての Operator バージョンをミラーリングする場合は、mirror.operators.full フィールドを true に設定する必要があります。
ImageSetConfigurationファイルの例
ユースケース: 任意のイメージと Helm チャートを含む
次の ImageSetConfiguration ファイルは、レジストリーストレージバックエンドを使用し、これには Helm チャートと追加の Red Hat Universal Base Image (UBI) が含まれています。
ImageSetConfigurationファイルの例
13.2.3.13. oc-mirror のコマンドリファレンス リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、oc mirror サブコマンドとフラグを説明しています。
| サブコマンド | 説明 |
|---|---|
|
| 指定されたシェルのオートコンプリートスクリプトを生成します。 |
|
| イメージセットの内容を出力します。 |
|
| サブコマンドに関するヘルプを表示します。 |
|
| 初期イメージセット設定テンプレートを出力します。 |
|
| 利用可能なプラットフォームと Operator のコンテンツとそのバージョンを一覧表示します。 |
|
| oc-mirror バージョンを出力します。 |
| フラグ | 説明 |
|---|---|
|
| イメージセット設定ファイルへのパスを指定します。 |
|
| イメージのプルに関連しないエラーが発生した場合は、続行して、可能な限りミラーリングを試みます。 |
|
| ターゲットレジストリーの TLS 検証を無効にします。 |
|
| ターゲットレジストリーにはプレーン HTTP を使用します。 |
|
|
イメージをミラーリングせずにアクションを出力します。 |
|
| oc-mirror の実行によって生成されたイメージセットアーカイブへのパスを指定して、ターゲットレジストリーにロードします。 |
|
| ヘルプを表示します。 |
|
| イメージをダウンロードしてレイヤーをパックするときに、過去のミラーリングを無視します。増分ミラーリングを無効にし、より多くのデータをダウンロードする可能性があります。 |
|
|
|
|
|
ネストされたパスを制限する宛先レジストリーのネストされたパスの最大数を指定します。デフォルトは |
|
|
レジストリーごとに許可される同時要求の数を指定します。デフォルト値は |
|
|
テクノロジープレビュー OCI 機能の使用時に実行するアクション。オプションは |
|
| テクノロジープレビュー OCI 機能を使用する場合は、署名をプッシュしないでください。 |
|
| テクノロジープレビュー OCI 機能を使用する場合にコピー元となる別のレジストリーの場所を指定するレジストリー設定ファイルを提供します。 |
|
| アーティファクトディレクトリーの削除を省略します。 |
|
| Operator カタログのイメージタグをダイジェストピンに置き換えないでください。 |
|
|
イメージセットの公開時にメタデータをスキップします。これは、イメージセットが |
|
| イメージが見つからない場合は、エラーを報告して実行を中止する代わりにスキップします。イメージセット設定で明示的に指定されたカスタムイメージには適用されません。 |
|
| ターゲットミラーレジストリーからのイメージの自動プルーニングを無効にします。 |
|
| ダイジェストの検証を省略します。 |
|
| ソースレジストリーの TLS 検証を無効にします。 |
|
| ソースレジストリーにはプレーン HTTP を使用します。 |
|
| OCI 形式のイメージをコピーするには、テクノロジープレビュー OCI 機能を使用します。 |
|
|
ログレベルの詳細度の数値を指定します。有効な値は |
13.2.4. oc adm release mirror コマンドを使用したイメージのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Update Service アプリケーションによる過度のメモリー使用を回避するには、以下の手順で説明するように、リリースイメージを別のリポジトリーにミラーリングする必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定し、設定した証明書と認証情報にアクセスできるようになりました。
- Red Hat OpenShift Cluster Manager からプルシークレット をダウンロードし、ミラーリポジトリーへの認証を含めるようにこれを変更している。
- 自己署名証明書を使用する場合は、証明書にサブジェクトの別名を指定しています。
手順
- Red Hat OpenShift Container Platform Upgrade Graph visualizer および update planner を使用して、あるバージョンから別のバージョンへの更新を計画します。OpenShift Upgrade Graph はチャネルのグラフと、現行バージョンと意図されるクラスターのバージョン間に更新パスがあることを確認する方法を提供します。
必要な環境変数を設定します。
リリースバージョンをエクスポートします。
export OCP_RELEASE=<release_version>
$ export OCP_RELEASE=<release_version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <release_version>について、更新する OpenShift Container Platform のバージョンに対応するタグを指定します (例:4.5.4)。ローカルレジストリー名とホストポートをエクスポートします。
LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <local_registry_host_name>には、ミラーレジストリーのレジストリードメイン名を指定し、<local_registry_host_port>には、コンテンツの送信に使用するポートを指定します。ローカルリポジトリー名をエクスポートします。
LOCAL_REPOSITORY='<local_repository_name>'
$ LOCAL_REPOSITORY='<local_repository_name>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <local_repository_name>には、ocp4/openshift4などのレジストリーに作成するリポジトリーの名前を指定します。OpenShift Update Service を使用している場合は、追加のローカルリポジトリー名をエクスポートして、リリースイメージを含めます。
LOCAL_RELEASE_IMAGES_REPOSITORY='<local_release_images_repository_name>'
$ LOCAL_RELEASE_IMAGES_REPOSITORY='<local_release_images_repository_name>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <local_release_images_repository_name>に、ocp4/openshift4-release-imagesなどのレジストリーに作成するリポジトリーの名前を指定します。ミラーリングするリポジトリーの名前をエクスポートします。
PRODUCT_REPO='openshift-release-dev'
$ PRODUCT_REPO='openshift-release-dev'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 実稼働環境のリリースの場合には、
openshift-release-devを指定する必要があります。パスをレジストリープルシークレットにエクスポートします。
LOCAL_SECRET_JSON='<path_to_pull_secret>'
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <path_to_pull_secret>には、作成したミラーレジストリーのプルシークレットの絶対パスおよびファイル名を指定します。注記クラスターが
ImageContentSourcePolicyオブジェクトを使用してリポジトリーのミラーリングを設定する場合、ミラーリングされたレジストリーにグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。リリースミラーをエクスポートします。
RELEASE_NAME="ocp-release"
$ RELEASE_NAME="ocp-release"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 実稼働環境のリリースについては、
ocp-releaseを指定する必要があります。サーバーのアーキテクチャーのタイプをエクスポートします (例:
x86_64)。ARCHITECTURE=<server_architecture>
$ ARCHITECTURE=<server_architecture>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ミラーリングされたイメージをホストするためにディレクトリーへのパスをエクスポートします。
REMOVABLE_MEDIA_PATH=<path>
$ REMOVABLE_MEDIA_PATH=<path>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 最初のスラッシュ (/) 文字を含む完全パスを指定します。
ミラーリングするイメージおよび設定マニフェストを確認します。
oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} --dry-runCopy to Clipboard Copied! Toggle word wrap Toggle overflow バージョンイメージをミラーレジストリーにミラーリングします。
ミラーホストがインターネットにアクセスできない場合は、以下の操作を実行します。
- リムーバブルメディアをインターネットに接続しているシステムに接続します。
イメージおよび設定マニフェストをリムーバブルメディア上のディレクトリーにミラーリングします。
oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、ミラーリングされたリリースイメージ署名 config map も、リムーバブルメディアに保存します。
メディアを非接続環境に移動し、イメージをローカルコンテナーレジストリーにアップロードします。
oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
REMOVABLE_MEDIA_PATHの場合、イメージのミラーリング時に指定した同じパスを使用する必要があります。
-
ocコマンドラインインターフェイス (CLI) を使用して、アップグレードしているクラスターにログインします。 ミラーリングされたリリースイメージ署名設定マップを接続されたクラスターに適用します。
oc apply -f ${REMOVABLE_MEDIA_PATH}/mirror/config/<image_signature_file>$ oc apply -f ${REMOVABLE_MEDIA_PATH}/mirror/config/<image_signature_file>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<image_signature_file>に、ファイルのパスおよび名前を指定します (例:signature-sha256-81154f5c03294534.yaml)。
OpenShift Update Service を使用している場合は、リリースイメージを別のリポジトリーにミラーリングします。
oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}$ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ローカルコンテナーレジストリーとクラスターがミラーホストに接続されている場合は、次の操作を行います。
次のコマンドを使用して、リリースイメージをローカルレジストリーに直接プッシュし、config map をクラスターに適用します。
oc adm release mirror -a ${LOCAL_SECRET_JSON} --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} --apply-release-image-signature$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} --apply-release-image-signatureCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記--apply-release-image-signatureオプションが含まれる場合は、イメージ署名の検証用に設定マップを作成しません。OpenShift Update Service を使用している場合は、リリースイメージを別のリポジトリーにミラーリングします。
oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}$ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow