11.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 用の最新のグラフデータイメージを構築します。
11.2.1. oc-mirror プラグインを使用したリソースのミラーリング
					oc-mirror OpenShift CLI (oc) プラグインを使用して、完全なまたは部分的な非接続環境でイメージをミラーレジストリーにミラーリングできます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror を実行する必要があります。
				
詳細は、oc-mirror プラグイン v2 を使用した非接続インストールのイメージのミラーリング を参照してください。
11.2.2. oc adm release mirror コマンドを使用したイメージのミラーリング
					oc adm release mirror コマンドを使用して、イメージをミラーレジストリーにミラーリングできます。
				
11.2.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 を使用できます。mirror registry for Red Hat OpenShift は、非接続インストールおよび更新で OpenShift Container Platform コンテナーイメージをミラーリングするために使用できる小規模なコンテナーレジストリーです。 
11.2.2.2. ミラーホストの準備
ミラー手順を実行する前に、ホストを準備して、コンテンツを取得し、リモートの場所にプッシュできるようにする必要があります。
11.2.2.2.1. OpenShift CLI のインストール
							OpenShift CLI (oc) をインストールすると、コマンドラインインターフェイスから OpenShift Container Platform を操作できます。oc は Linux、Windows、または macOS にインストールできます。
						
								以前のバージョンの oc をインストールしている場合、これを使用して OpenShift Container Platform 4.18 のすべてのコマンドを実行することはできません。新しいバージョンの oc をダウンロードしてインストールしてください。非接続環境でのクラスターを更新する場合は、更新する予定の oc バージョンをインストールします。
							
11.2.2.2.1.1. Linux への OpenShift CLI のインストール
								以下の手順を使用して、OpenShift CLI (oc) バイナリーを Linux にインストールできます。
							
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- Product Variant ドロップダウンリストからアーキテクチャーを選択します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.18 Linux Clients エントリーの横にある Download Now をクリックして、ファイルを保存します。
- アーカイブを展開します。 - tar xvf <file> - $ tar xvf <file>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ocバイナリーを、- PATHにあるディレクトリーに配置します。- PATHを確認するには、以下のコマンドを実行します。- echo $PATH - $ echo $PATH- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- OpenShift CLI のインストール後に、 - ocコマンドを使用して利用できます。- oc <command> - $ oc <command>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
11.2.2.2.1.2. Windows への OpenShift CLI のインストール
								以下の手順を使用して、OpenShift CLI (oc) バイナリーを Windows にインストールできます。
							
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.18 Windows Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
- ZIP プログラムでアーカイブを展開します。
- ocバイナリーを、- PATHにあるディレクトリーに移動します。- PATHを確認するには、コマンドプロンプトを開いて以下のコマンドを実行します。- path - C:\> path- Copy 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 
11.2.2.2.1.3. macOS への OpenShift CLI のインストール
								以下の手順を使用して、OpenShift CLI (oc) バイナリーを macOS にインストールできます。
							
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.18 macOS Clients エントリーの横にある Download Now をクリックして、ファイルを保存します。 注記- macOS arm64 の場合は、OpenShift v4.18 macOS arm64 Client エントリーを選択します。 
- アーカイブを展開し、解凍します。
- ocバイナリーをパスにあるディレクトリーに移動します。- PATHを確認するには、ターミナルを開き、以下のコマンドを実行します。- echo $PATH - $ echo $PATH- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- ocコマンドを使用してインストールを確認します。- oc <command> - $ oc <command>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
11.2.2.2.2. イメージのミラーリングを可能にする認証情報の設定
Red Hat からミラーへのイメージのミラーリングを可能にするコンテナーイメージレジストリー認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
前提条件
- 非接続環境で使用するミラーレジストリーを設定した。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
- ミラーレジストリーへの書き込みアクセス権がある。
手順
インストールホストで以下の手順を実行します。
- 
									registry.redhat.ioプルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。
- 次のコマンドを実行して、プルシークレットのコピーを 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 -w0- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <user_name>および- <password>には、レジストリーに設定したユーザー名およびパスワードを指定します。
 - 出力例 - BGVtbYk3ZHAtqXs= - BGVtbYk3ZHAtqXs=- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 変更済みのプルシークレットの例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
11.2.2.3. ミラーレジストリーへのイメージのミラーリング
OpenShift Update Service アプリケーションによる過度のメモリー使用を回避するには、以下の手順で説明するように、リリースイメージを別のリポジトリーにミラーリングする必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定し、設定した証明書と認証情報にアクセスできるようになりました。
- Red Hat OpenShift Cluster Manager からプルシークレット をダウンロードし、ミラーリポジトリーへの認証を組み込むように変更している。
- 自己署名証明書を使用する場合は、証明書にサブジェクトの別名を指定しています。
手順
- Red Hat OpenShift Container Platform Update Graph visualizer および update planner を使用して、あるバージョンから別のバージョンへの更新を計画します。OpenShift Update 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を指定する必要があります。
- クラスターのアーキテクチャーのタイプをエクスポートします。 - ARCHITECTURE=<cluster_architecture> - $ ARCHITECTURE=<cluster_architecture>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- x86_64、- aarch64、- s390x、または- ppc64leなど、クラスターのアーキテクチャーを指定します。
 
- ミラーリングされたイメージをホストするためにディレクトリーへのパスをエクスポートします。 - 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-run- Copy 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-signature- Copy 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