9.3. イメージレジストリーリポジトリーのミラーリングについて
コンテナーレジストリーリポジトリーのミラーリングを設定すると、次のタスクを実行できます。
- ソースイメージのレジストリーのリポジトリーからイメージをプルする要求をリダイレクトするように OpenShift Container Platform クラスターを設定し、これをミラーリングされたイメージレジストリーのリポジトリーで解決できるようにします。
- 各ターゲットリポジトリーに対して複数のミラーリングされたリポジトリーを特定し、1 つのミラーがダウンした場合に別のミラーを使用できるようにします。
OpenShift Container Platform のリポジトリーミラーリングには、以下の属性が含まれます。
- イメージプルには、レジストリーのダウンタイムに対する回復性があります。
- 非接続環境のクラスターは、quay.io などの重要な場所からイメージをプルし、会社のファイアウォールの背後にあるレジストリーに要求されたイメージを提供することができます。
- イメージのプル要求時にレジストリーへの接続が特定の順序で試行され、通常は永続レジストリーが最後に試行されます。
-
入力したミラー情報は、OpenShift Container Platform クラスターの全ノードの
/etc/containers/registries.conf
ファイルに追加されます。 - ノードがソースリポジトリーからイメージの要求を行うと、要求されたコンテンツを見つけるまで、ミラーリングされた各リポジトリーに対する接続を順番に試行します。すべてのミラーで障害が発生した場合、クラスターはソースリポジトリーに対して試行します。成功すると、イメージはノードにプルされます。
リポジトリーミラーリングのセットアップは次の方法で実行できます。
OpenShift Container Platform のインストール時:
OpenShift Container Platform に必要なコンテナーイメージをプルし、それらのイメージを会社のファイアウォールの背後に配置することで、非接続環境にあるデータセンターに OpenShift Container Platform をインストールできます。
OpenShift Container Platform の新規インストール後:
OpenShift Container Platform のインストール中にミラーリングを設定しなかった場合は、以下のカスタムリソース (CR) オブジェクトのいずれかを使用して、インストール後に設定できます。
-
ImageDigestMirrorSet
(IDMS)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。IDMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。 -
ImageTagMirrorSet
(ITMS)。このオブジェクトを使用すると、イメージタグを使用して、ミラーリングされたレジストリーからイメージをプルできます。ITMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。 -
ImageContentSourcePolicy
(ICSP)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。ミラーが機能しない場合、ICSP は常にソースレジストリーにフォールバックします。
重要ImageContentSourcePolicy
(ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。ImageContentSourcePolicy
オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp
コマンドを使用して、それらのファイルをImageDigestMirrorSet
YAML ファイルに変換できます。詳細は、次のセクションの「イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換」を参照してください。-
これらのカスタムリソースオブジェクトはそれぞれ、次の情報を識別します。
- ミラーリングするコンテナーイメージリポジトリーのソース
- ソースリポジトリーから要求されたコンテンツを提供する各ミラーリポジトリーの個別のエントリー。
新しいクラスターの場合は、必要に応じて IDMS、ITMS、および ICSP CR オブジェクトを使用できます。ただし、IDMS と ITMS の使用を推奨します。
クラスターをアップグレードした場合、既存の ICSP オブジェクトは安定を維持し、IDMS オブジェクトと ICSP オブジェクトの両方がサポートされるようになります。ICSP オブジェクトを使用するワークロードは、引き続き期待どおりに機能します。一方、IDMS CR で導入されたフォールバックポリシーを利用する場合は、oc adm migrate icsp
コマンドを使用して、現在のワークロードを IDMS オブジェクトに移行できます。これは、後述の イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換 セクションで説明しています。IDMS オブジェクトへの移行に、クラスターの再起動は必要ありません。
クラスターで ImageDigestMirrorSet
、ImageTagMirrorSet
、または ImageContentSourcePolicy
オブジェクトを使用してリポジトリーミラーリングを設定する場合、ミラーリングされたレジストリーにはグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。
9.3.1. イメージレジストリーのリポジトリーミラーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
インストール後のミラー設定カスタムリソース (CR) を作成して、ソースイメージレジストリーからミラーリングされたイメージレジストリーにイメージプル要求をリダイレクトできます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
ミラーリングされたリポジトリーを設定します。以下のいずれかを実行します。
- Repository Mirroring in Red Hat Quay で説明されているように、Red Hat Quay でミラーリング されたリポジトリーを設定します。Red Hat Quay を使用すると、あるリポジトリーから別のリポジトリーにイメージをコピーでき、それらのリポジトリーを一定期間繰り返し自動的に同期することもできます。
skopeo
などのツールを使用して、ソースリポジトリーからミラーリングされたリポジトリーにイメージを手動でコピーします。たとえば、Red Hat Enterprise Linux (RHEL 7 または RHEL 8) システムに skopeo RPM パッケージをインストールした後、以下の例に示すように
skopeo
コマンドを使用します。skopeo copy \ docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \ docker://example.io/example/ubi-minimal
$ skopeo copy \ 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 クラスターを構成できます。
- OpenShift Container Platform クラスターにログインします。
次の例のいずれかを使用して、インストール後のミラー設定 CR を作成します。
必要に応じて
ImageDigestMirrorSet
またはImageTagMirrorSet
CR を作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この CR で使用する API を示します。これは
config.openshift.io/v1
である必要があります。 - 2
- プルタイプに応じてオブジェクトの種類を示します。
-
ImageDigestMirrorSet
: ダイジェスト参照イメージをプルします。 -
ImageTagMirrorSet
: タグ参照イメージをプルします。
-
- 3
- 次のいずれかのイメージプルメソッドのタイプを示します。
-
imageDigestMirrors
:ImageDigestMirrorSet
CR に使用します。 -
imageTagMirrors
:ImageTagMirrorSet
CR に使用します。
-
- 4
- ミラーリングされたイメージのレジストリーとリポジトリーの名前を示します。
- 5
- オプション: 各ターゲットリポジトリーのセカンダリーミラーリポジトリーを示します。1 つのミラーがダウンした場合、ターゲットリポジトリーは別のミラーを使用できます。
- 6
- イメージプル仕様で参照されるリポジトリーである、レジストリーおよびリポジトリーソースを示します。
- 7
- オプション: イメージのプルが失敗した場合のフォールバックポリシーを示します。
-
AllowContactingSource
: ソースリポジトリーからのイメージのプルの継続的な試行を許可します。これはデフォルトになります。 -
NeverContactSource
: ソースリポジトリーからのイメージのプルの継続的な試行を防ぎます。
-
- 8
- オプション: レジストリー内の namespace を示します。これにより、その namespace で任意のイメージを使用できます。レジストリードメインをソースとして使用する場合、オブジェクトはレジストリーからすべてのリポジトリーに適用されます。
- 9
- オプション: レジストリーを示し、そのレジストリー内の任意のイメージを使用できるようにします。レジストリー名を指定すると、ソースレジストリーからミラーレジストリーまでのすべてのリポジトリーにオブジェクトが適用されます。
- 10
- イメージ
registry.example.com/example/myimage@sha256:…
をミラーmirror.example.net/image@sha256:..
からプルします。 - 11
- ミラー
mirror.example.net/image@sha256:…
からソースレジストリー namespace のイメージregistry.example.com/example/image@sha256:…
をプルします。 - 12
- ミラーレジストリー
example.net/registry-example-com/myimage@sha256:…
からイメージregistry.example.com/myimage@sha256
をプルします。
ImageContentSourcePolicy
カスタムリソースを作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新規オブジェクトを作成します。
oc create -f registryrepomirror.yaml
$ oc create -f registryrepomirror.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オブジェクトの作成後、Machine Config Operator (MCO) は
ImageTagMirrorSet
オブジェクトのみのノードをドレインします。MCO は、ImageDigestMirrorSet
オブジェクトとImageContentSourcePolicy
オブジェクトのノードをドレインしません。ミラーリングされた設定が適用されていることを確認するには、ノードのいずれかで以下を実行します。
ノードの一覧を表示します。
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 /etc/containers/registries.conf
ファイルをチェックして、変更が行われたことを確認します。cat /etc/containers/registries.conf
sh-4.2# cat /etc/containers/registries.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の出力は、インストール後のミラー設定 CR が適用された
registries.conf
ファイルを表しています。最後の 2 つのエントリーは、それぞれdigest-only
およびtag-only
とマークされています。出力例
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
フラグがフォールバックとして使用されます。 -
/etc/containers/registries.conf
ファイルの形式が最近変更されました。現在のバージョンはバージョン 2 で、TOML 形式です。
9.3.2. イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換 リンクのコピーリンクがクリップボードにコピーされました!
ImageContentSourcePolicy
(ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。この機能は引き続き OpenShift Container Platform に含まれており、引き続きサポートされます。ただし、この製品の将来のリリースでは削除される予定であり、新しいデプロイメントには推奨されません。
ICSP オブジェクトは、リポジトリーミラーリングを設定するために ImageDigestMirrorSet
および ImageTagMirrorSet
オブジェクトに置き換えられています。ImageContentSourcePolicy
オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp
コマンドを使用して、それらのファイルを ImageDigestMirrorSet
YAML ファイルに変換できます。このコマンドは、API を現在のバージョンに更新し、kind
値を ImageDigestMirrorSet
に変更し、spec.repositoryDigestMirrors
を spec.imageDigestMirrors
に変更します。ファイルの残りの部分は変更されません。
移行によって registries.conf
ファイルは変更されないため、クラスターを再起動する必要はありません。
ImageDigestMirrorSet
または ImageTagMirrorSet
オブジェクトの詳細は、前のセクションの「イメージレジストリーリポジトリーミラーリングの設定」を参照してください。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
クラスターに
ImageContentSourcePolicy
オブジェクトがあることを確認します。
手順
次のコマンドを使用して、1 つ以上の
ImageContentSourcePolicy
YAML ファイルをImageDigestMirrorSet
YAML ファイルに変換します。oc adm migrate icsp <file_name>.yaml <file_name>.yaml <file_name>.yaml --dest-dir <path_to_the_directory>
$ oc adm migrate icsp <file_name>.yaml <file_name>.yaml <file_name>.yaml --dest-dir <path_to_the_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<file_name>
-
ソース
ImageContentSourcePolicy
YAML の名前を指定します。複数のファイル名をリストできます。 --dest-dir
-
オプション: 出力
ImageDigestMirrorSet
YAML のディレクトリーを指定します。設定されていない場合、ファイルは現在のディレクトリーに書き込まれます。
たとえば、次のコマンドは
icsp.yaml
およびicsp-2.yaml
ファイルを変換し、新しい YAML ファイルをidms-files
ディレクトリーに保存します。oc adm migrate icsp icsp.yaml icsp-2.yaml --dest-dir idms-files
$ oc adm migrate icsp icsp.yaml icsp-2.yaml --dest-dir idms-files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml
wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して CR オブジェクトを作成します。
oc create -f <path_to_the_directory>/<file-name>.yaml
$ oc create -f <path_to_the_directory>/<file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<path_to_the_directory>
-
--dest-dir
フラグを使用した場合は、ディレクトリーへのパスを指定します。 <file_name>
-
ImageDigestMirrorSet
YAML の名前を指定します。
- IDMS オブジェクトがロールアウトされた後、ICSP オブジェクトを削除します。