5.6. ミラーレジストリーで Windows コンテナーを使用する
				Windows Machine Config Operator (WMCO) は、ImageDigestMirrorSet (IDMS) または ImageTagMirrorSet (ITMS) オブジェクトを使用してクラスターを設定し、ミラーレジストリーからイメージをプルすることにより、パブリックレジストリーではなくレジストリーミラーからイメージをプルできます。
			
ミラーレジストリーには次の利点があります。
- パブリックレジストリーの停止を回避
- ノードと Pod の作成を高速化
- 組織のファイアウォールの背後からイメージを取得します
ミラーレジストリーは、切断されたネットワークまたはエアギャップネットワーク内の OpenShift Container Platform クラスターでも使用できます。切断されたネットワーク は、直接インターネットに接続できない制限されたネットワークです。クラスターはインターネットにアクセスできないため、外部のコンテナーイメージを参照することはできません。
ミラーレジストリーを使用するには、次の一般的な手順が必要です。
- Red Hat Quay などのツールを使用して、ミラーレジストリーを作成します。
- コンテナーイメージレジストリー認証情報ファイルを作成します。
- オンラインイメージリポジトリーからミラーレジストリーにイメージをコピーします。
これらの手順の詳細は、「切断されたインストールのミラーリングについて」を参照してください。
				ミラーレジストリーを作成してイメージをミラーリングした後、ImageDigestMirrorSet (IDMS) または ImageTagMirrorSet (ITMS) オブジェクトを使用して、各 Pod 仕様を更新せずにミラーレジストリーからイメージをプルするようにクラスターを設定できます。IDMS および ITMS オブジェクトは、ソースイメージレジストリーのリポジトリーからイメージをプルする要求をリダイレクトし、代わりにミラーリポジトリーによって解決されるようにします。
			
				IDMS または ITMS オブジェクトに変更が加えられた場合、WMCO は Windows ノード上の適切な hosts.toml ファイルを新しい情報で自動的に更新します。ミラー設定が変更になると、WMCO は各 Windows ノードを順番に更新することに注意してください。そのため、これらの更新に必要な時間は、クラスター内の Windows ノードの数に応じて増加します。
			
WMCO によって設定される Windows ノードは、containerd コンテナーランタイムに依存しています。そのため、WMCO は containerd の設定ファイルをレジストリーの設定で最新の状態に維持します。新しいノードの場合、これらのファイルは作成時にインスタンスにコピーされます。既存のノードの場合、レジストリーコントローラーが、ミラーレジストリーをアクティブ化した後、SSH を使用して各ノードにアクセスし、生成された設定ファイルをコピーして、既存のファイルを置き換えます。
マシンセットまたは Bring-Your-Own-Host (BYOH) Windows ノードでミラーレジストリーを使用できます。
IDMS または ITMS オブジェクトを使用して Windows ノード上のコンテナーイメージをミラーリングする場合は、次の動作が Linux ノードとは異なる点に注意してください。
- Windows ノードでのミラーリングは、レジストリーレベルで機能します。Linux ノードのように、イメージレベルでは機能しません。そのため、IDMS または ITMS オブジェクトを使用してミラーリングされる Windows イメージには、特定の命名要件があります。 - namespace の最後の部分とミラーイメージのイメージ名は、ミラーリングされるイメージと一致する必要があります。たとえば、 - mcr.microsoft.com/oss/kubernetes/pause:3.9イメージをミラーリングする場合、ミラーは- $mirrorRegistry/<organization>/oss/kubernetes/pause:3.9形式である必要があります。- $orgは、任意の組織名または namespace にすることも、完全に除外することもできます。有効な値は、- $mirrorRegistry/oss/kubernetes/pause:3.9、- $mirrorRegistry/custom/oss/kubernetes/pause:3.9、- $mirrorRegistry/x/y/z/oss/kubernetes/pause:3.9などです。
- Windows ノードは、ITMS オブジェクトを取得し、それを使用してレジストリー全体のミラーを設定します。次の例では、 - quay.io/remote-org/imageを- quay.io/my-org/imageにミラーリングするように設定します。その結果、Windows ノードはそのミラーを- quay.io/remote-orgのすべてのイメージに使用するようになります。そのため、- quay.io/remote-org/image:tagは期待どおり- quay.io/my-org/image:tagイメージを使用しますが、- quay.io/remote-org/different-image:tagを使用する別のコンテナーも- quay.io/remote-org/different-image:tagミラーを使用しようとします。これを考慮しないと、意図しない動作が発生する可能性があります。- このため、コンテナーイメージを指定するには、ITMS オブジェクトではなく、IDMS オブジェクトによるダイジェストを使用してください。ダイジェストを使用すると、コンテナーが指定するイメージとプルされるイメージのダイジェストが同じになるため、間違ったコンテナーイメージが使用されるのを防止できます。 
5.6.1. イメージレジストリーリポジトリーのミラーリングについて
コンテナーレジストリーリポジトリーのミラーリングを設定すると、次のタスクを実行できます。
- ソースイメージのレジストリーのリポジトリーからイメージをプルする要求をリダイレクトするように OpenShift Container Platform クラスターを設定し、これをミラーリングされたイメージレジストリーのリポジトリーで解決できるようにします。
- 各ターゲットリポジトリーに対して複数のミラーリングされたリポジトリーを特定し、1 つのミラーがダウンした場合に別のミラーを使用できるようにします。
OpenShift Container Platform のリポジトリーミラーリングには、以下の属性が含まれます。
- イメージプルには、レジストリーのダウンタイムに対する回復性があります。
- 非接続環境のクラスターは、quay.io などの重要な場所からイメージをプルし、企業のファイアウォールの背後にあるレジストリーに要求されたイメージを提供させることができる。
- イメージのプル要求時にレジストリーへの接続が特定の順序で試行され、通常は永続レジストリーが最後に試行される。
- 
							入力したミラー情報は、OpenShift Container Platform クラスター内のすべての Windows ノード上の適切な hosts.tomlcontainerd 設定ファイルに追加されます。
- ノードがソースリポジトリーからイメージの要求を行うと、要求されたコンテンツを見つけるまで、ミラーリングされた各リポジトリーに対する接続を順番に試行する。すべてのミラーで障害が発生した場合、クラスターはソースリポジトリーに対して試行する。成功すると、イメージはノードにプルされる。
リポジトリーミラーリングのセットアップは次の方法で実行できます。
- OpenShift Container Platform のインストール時: - OpenShift Container Platform に必要なコンテナーイメージをプルし、それらのイメージを会社のファイアウォールの背後に配置することで、非接続環境にあるデータセンターに OpenShift Container Platform をインストールできます。 
- OpenShift Container Platform の新規インストール後: - OpenShift Container Platform のインストール中にミラーリングを設定しなかった場合は、以下のカスタムリソース (CR) オブジェクトのいずれかを使用して、インストール後に設定できます。 - 
									ImageDigestMirrorSet(IDMS)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。IDMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。
- 
									ImageTagMirrorSet(ITMS)。このオブジェクトを使用すると、イメージタグを使用して、ミラーリングされたレジストリーからイメージをプルできます。ITMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。
 
- 
									
これらのカスタムリソースオブジェクトはそれぞれ、次の情報を識別します。
- ミラーリングするコンテナーイメージリポジトリーのソース
- ソースリポジトリーから要求されたコンテンツを提供する各ミラーリポジトリーの個別のエントリー。
以下のアクションと、ノードのドレイン動作への影響に注意してください。
- IDMS または ICSP CR オブジェクトを作成する場合、MCO はノードをドレインまたは再起動しません。
- ITMS CR オブジェクトを作成すると、MCO はノードをドレインして再起動します。
- ITMS、IDMS、または ICSP CR オブジェクトを削除すると、MCO はノードをドレインして再起動します。
- ITMS、IDMS、または ICSP CR オブジェクトを変更すると、MCO はノードをドレインして再起動します。 重要- MCO が以下の変更のいずれかを検出すると、ノードのドレインまたは再起動を行わずに更新を適用します。 - 
												マシン設定の spec.config.passwd.users.sshAuthorizedKeysパラメーターの SSH キーの変更。
- 
												openshift-confignamespace でのグローバルプルシークレットまたはプルシークレットへの変更。
- 
												Kubernetes API Server Operator による /etc/kubernetes/kubelet-ca.crt認証局 (CA) の自動ローテーション。
 
- 
												マシン設定の 
- MCO は、 - ImageDigestMirrorSet、- ImageTagMirrorSet、- ImageContentSourcePolicyオブジェクトの編集など、- /etc/containers/registries.confファイルへの変更を検出すると、対応するノードをドレインし、変更を適用し、ノードの遮断を解除します。次の変更ではノードのドレインは発生しません。- 
												pull-from-mirror = "digest-only"パラメーターがミラーごとに設定されたレジストリーの追加。
- 
												pull-from-mirror = "digest-only"パラメーターがレジストリーに設定されたミラーの追加。
- 
												unqualified-search-registriesへのアイテムの追加。
 
- 
												
 
					Windows Machine Config Operator (WMCO) は、IDMS および ITMS リソースへの変更を監視し、それらの変更を含む hosts.toml containerd 設定ファイルのセットをソースレジストリーごとに 1 つずつ生成します。次に、WMCO は既存の Windows ノードを更新して、新しいレジストリー設定を使用します。
				
ミラー化されたレジストリーを使用して Windows ノードを追加する前に、IDMS および ITMS オブジェクトを作成する必要があります。
5.6.2. イメージレジストリーのリポジトリーミラーリングの設定
インストール後のミラー設定カスタムリソース (CR) を作成して、ソースイメージレジストリーからミラーリングされたイメージレジストリーにイメージプル要求をリダイレクトできます。
						ImageDigestMirrorSet および ImageTagMirrorSet オブジェクトを通じてミラーリングされた Windows イメージには、特定の命名要件があります。これは「ミラーレジストリーで Windows コンテナーを使用する」で説明されています。
					
前提条件
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- ミラーリングされたリポジトリーを設定します。以下のいずれかを実行します。 - Red Hat Quay でのレポジトリーのミラーリング で説明されているように、Red Hat Quay でミラーリングされたリポジトリーを設定します。Red Hat Quay を使用すると、あるリポジトリーから別のリポジトリーにイメージをコピーでき、これらのリポジトリーを一定期間繰り返し自動的に同期することもできます。
- skopeoなどのツールを使用して、ソースリポジトリーからミラーリングされたリポジトリーにイメージを手動でコピーします。- たとえば、Red Hat Enterprise Linux (RHEL 7 または RHEL 8) システムに skopeo RPM パッケージをインストールした後、以下の例に示すように - skopeoコマンドを使用します。- skopeo copy --all \ docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \ docker://example.io/example/ubi-minimal - $ skopeo copy --all \ docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \ docker://example.io/example/ubi-minimal- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - この例では、 - example.ioいう名前のコンテナーイメージレジストリーと- exampleという名前のイメージリポジトリーがあり、そこに- registry.access.redhat.comから- ubi9/ubi-minimalイメージをコピーします。ミラーリングされたレジストリーを作成した後、ソースリポジトリーに対する要求をミラーリングされたリポジトリーにリダイレクトするように OpenShift Container Platform クラスターを構成できます。
 重要- mcr.microsoft.com/oss/kubernetes/pause:3.9イメージをミラーリングする必要があります。たとえば、次の- skopeoコマンドを使用してイメージをミラーリングできます。- skopeo copy \ docker://mcr.microsoft.com/oss/kubernetes/pause:3.9\ docker://example.io/oss/kubernetes/pause:3.9 - $ skopeo copy \ docker://mcr.microsoft.com/oss/kubernetes/pause:3.9\ docker://example.io/oss/kubernetes/pause:3.9- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- OpenShift Container Platform クラスターにログインします。
- 必要に応じて - ImageDigestMirrorSetまたは- ImageTagMirrorSetCR を作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- この CR で使用する API を示します。これはconfig.openshift.io/v1である必要があります。
- 2
- プルタイプに応じてオブジェクトの kind を示します。- 
											ImageDigestMirrorSet: ダイジェスト参照イメージをプルします。
- 
											ImageTagMirrorSet: タグ参照イメージをプルします。
 
- 
											
- 3
- 次のいずれかのイメージプルメソッドのタイプを示します。- 
											imageDigestMirrors:ImageDigestMirrorSetCR に使用します。
- 
											imageTagMirrors:ImageTagMirrorSetCR に使用します。
 
- 
											
- 4
- ミラーリングされたイメージのレジストリーとリポジトリーの名前を示します。
- 5
- オプション: 各ターゲットリポジトリーのセカンダリーミラーリポジトリーを示します。1 つのミラーがダウンした場合、ターゲットリポジトリーは別のミラーを使用できます。
- 6
- イメージプル仕様で参照されるリポジトリーである、レジストリーおよびリポジトリーソースを示します。
- 7
- オプション: イメージのプルが失敗した場合のフォールバックポリシーを示します。- 
											AllowContactingSource: ソースリポジトリーからのイメージのプルの継続的な試行を許可します。これはデフォルトになります。
- 
											NeverContactSource: ソースリポジトリーからのイメージのプルの継続的な試行を防ぎます。
 
- 
											
 
- 新規オブジェクトを作成します。 - oc create -f registryrepomirror.yaml - $ oc create -f registryrepomirror.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ミラーリングされた設定が適用されていることを確認するには、ノードのいずれかで以下を実行します。 - ノードの一覧を表示します。 - oc get node - $ oc get node- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- デバッグプロセスを開始し、ノードにアクセスします。 - oc debug node/ip-10-0-147-35.ec2.internal - $ oc debug node/ip-10-0-147-35.ec2.internal- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Starting pod/ip-10-0-147-35ec2internal-debug ... To use host binaries, run `chroot /host` - Starting pod/ip-10-0-147-35ec2internal-debug ... To use host binaries, run `chroot /host`- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ルートディレクトリーを - /hostに変更します。- chroot /host - sh-4.2# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- WMCO が各 Windows インスタンスの各レジストリーに対して - hosts.tomlファイルを生成したことを確認します。前述の IDMS オブジェクトの例の場合は、次のファイル構造に 3 つのファイルが存在するはずです。- tree $config_path - $ tree $config_path- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 次の出力は、前の例の IDMS オブジェクトが適用された - hosts.tomlcontainerd 設定ファイルを表しています。- host.toml ファイルの例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ソースからノードにイメージをプルし、ミラーによって解決されるかどうかを確認します。 - podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf... - sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
リポジトリーのミラーリングのトラブルシューティング
リポジトリーのミラーリング手順が説明どおりに機能しない場合は、リポジトリーミラーリングの動作方法に関する以下の情報を使用して、問題のトラブルシューティングを行うことができます。
- 最初に機能するミラーは、プルされるイメージを指定するために使用されます。
- メインレジストリーは、他のミラーが機能していない場合にのみ使用されます。
- 
							システムコンテキストによって、Insecureフラグがフォールバックとして使用されます。