This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.9.2. イメージレジストリーの設定
image.config.openshift.io/cluster
カスタムリソース (CR) を編集してイメージレジストリーの設定を行うことができます。レジストリーへの変更が image.config.openshift.io/cluster
CR に適用されると、Machine Config Operator (MCO) は以下の一連のアクションを実行します。
- ノードを封鎖します
- CRI-O を再起動して変更を適用します
ノードを解放します
注記MCO は、変更を検出してもノードを再起動しません。
手順
image.config.openshift.io/cluster
カスタムリソースを編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、
image.config.openshift.io/cluster
CR の例になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Image
: イメージの処理方法についてのクラスター全体の情報を保持します。正規名および唯一の有効な名前となるのはcluster
です。- 2
allowedRegistriesForImport
: 標準ユーザーがイメージのインポートに使用するコンテナーイメージレジストリーを制限します。このリストを、有効なイメージを含むものとしてユーザーが信頼し、アプリケーションのインポート元となるレジストリーに設定します。イメージまたはImageStreamMappings
を API 経由で作成するパーミッションを持つユーザーは、このポリシーによる影響を受けません。通常、これらのパーミッションを持っているのはクラスター管理者のみです。- 3
additionalTrustedCA
: イメージストリームのインポート、Pod のイメージプル、openshift-image-registry
プルスルー、およびビルド時に信頼される追加の認証局 (CA) が含まれる config map の参照です。この config map の namespace はopenshift-config
です。config map の形式では、信頼する追加のレジストリー CA についてレジストリーのホスト名をキーとして使用し、PEM 証明書を値として使用します。- 4
registrySources
: ビルドおよび Pod のイメージにアクセスする際に、コンテナーランタイムが個々のレジストリーを許可するかブロックするかを決定する設定が含まれます。allowedRegistries
パラメーターまたはblockedRegistries
パラメーターのいずれかを設定できますが、両方を設定することはできません。安全でないレジストリーまたはイメージの短い名前を使用するレジストリーを許可するレジストリーへのアクセスを許可するかどうかを定義することもできます。この例では、使用が許可されるレジストリーを定義するallowedRegistries
パラメーターを使用します。安全でないレジストリーinsecure.com
も許可されます。registrySources
パラメーターには、内部クラスターレジストリーの設定は含まれません。
注記allowedRegistries
パラメーターが定義されると、明示的に一覧表示されない限り、registry.redhat.io レジストリーと quay.io レジストリー、およびデフォルトの OpenShift イメージレジストリーを含むすべてのレジストリーがブロックされます。パラメーターを使用する場合は、Pod の失敗を防ぐために、registry.redhat.io
レジストリーとquay.io
レジストリー、およびinternalRegistryHostname
をallowedRegistries
一覧に追加する必要があります。これらは、お使いの環境内のペイロードイメージで必要とされます。registry.redhat.io
およびquay.io
レジストリーをblockedRegistries
一覧に追加しないでください。allowedRegistries
、blockedRegistries
、またはinsecureRegistries
パラメーターを使用する場合、レジストリー内に個別のリポジトリーを指定できます。例:reg1.io/myrepo/myapp:latest
セキュリティー上のリスクを軽減するために、非セキュアな外部レジストリーは回避する必要があります。
変更が適用されたことを確認するには、ノードを一覧表示します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.1. 特定のレジストリーの追加 リンクのコピーリンクがクリップボードにコピーされました!
image.config.openshift.io/cluster
カスタムリソース (CR) を編集してイメーのプおよびプッシュアクションで許可されるレジストリーのリスト、およびオプションでレジストリー内の個別のリポジトリーを追加できます。OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。
イメージをプルまたはプッシュする場合、コンテナーランタイムは image.config.openshift.io/cluster
CR の registrySources
パラメーターの下にリスト表示されるレジストリーを検索します。allowedRegistries
パラメーターの下にレジストリーのリストを作成している場合、コンテナーランタイムはそれらのレジストリーのみを検索します。一覧に含まれていないレジストリーはブロックされます。
allowedRegistries
パラメーターが定義されると、明示的に一覧表示されない限り、registry.redhat.io
レジストリーと quay.io
レジストリー、およびデフォルトの OpenShift イメージレジストリーを含むすべてのレジストリーがブロックされます。パラメーターを使用する場合は、Pod の失敗を防ぐために、registry.redhat.io
レジストリーと quay.io
レジストリー、および internalRegistryHostname
を allowedRegistries
リストに追加します。これらは、お使いの環境内のペイロードイメージで必要とされます。非接続クラスターの場合、ミラーレジストリーも追加する必要があります。
手順
image.config.openshift.io/cluster
CR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、許可リストを含む
image.config.openshift.io/cluster
リソースの例になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記allowedRegistries
パラメーターまたはblockedRegistries
パラメーターのいずれかを設定できますが、両方を設定することはできません。Machine Config Operator (MCO) は、
image.config.openshift.io/cluster
リソースでレジストリーへの変更の有無を監視します。MCO が変更を検出すると、これはノードをドレイン (解放) し、その変更を適用してノードの遮断を解除します。ノードがReady
状態に戻った後に、許可されるレジストリーリストは、各ノードの/etc/containers/policy.json
ファイルでイメージ署名ポリシーを更新するために使用されます。
検証
次のコマンドを入力して、ノードのリストを取得します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION <node_name> Ready control-plane,master 37m v1.27.8+4fab27b
NAME STATUS ROLES AGE VERSION <node_name> Ready control-plane,master 37m v1.27.8+4fab27b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、ノード上でデバッグモードに入ります。
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、ターミナルに
chroot /host
を入力します。chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、レジストリーがポリシーファイルに追加されたことを確認します。
cat /etc/containers/policy.json | jq '.'
sh-5.1# cat /etc/containers/policy.json | jq '.'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のポリシーは、イメージのプルおよびプッシュで、example.com、quay.io、および registry.redhat.io レジストリーからのイメージのみを許可されることを示しています。
例9.1 イメージ署名ポリシーファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
クラスターが registrySources.insecureRegistries
パラメーターを使用する場合、非セキュアなレジストリーが許可リストに含まれることを確認します。
以下に例を示します。
9.2.2. 特定のレジストリーのブロック リンクのコピーリンクがクリップボードにコピーされました!
image.config.openshift.io/cluster
カスタムリソース (CR) を編集してレジストリー、およびオプションでレジストリー内の個別のリポジトリーをブロックできます。OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。
イメージをプルまたはプッシュする場合、コンテナーランタイムは image.config.openshift.io/cluster
CR の registrySources
パラメーターの下にリスト表示されるレジストリーを検索します。blockedRegistries
パラメーターの下にレジストリーのリストを作成した場合、コンテナーランタイムはそれらのレジストリーを検索しません。他のすべてのレジストリーは許可されます。
Pod の失敗を防ぐために、registry.redhat.io
レジストリーおよび quay.io
レジストリーを blockedRegistries
リストに追加しないでください。これらは、お使いの環境内のペイロードイメージで必要とされます。
手順
image.config.openshift.io/cluster
CR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、ブロックリストを含む
image.config.openshift.io/cluster
CR の例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記blockedRegistries
レジストリーまたはallowedRegistries
レジストリーのいずれかを設定できますが、両方を設定することはできません。Machine Config Operator (MCO) は、
image.config.openshift.io/cluster
リソースでレジストリーへの変更の有無を監視します。MCO が変更を検出すると、これはノードをドレイン (解放) し、その変更を適用してノードの遮断を解除します。ノードがReady
状態に戻った後に、ブロックされたレジストリーへの変更は各ノードの/etc/containers/registries.conf
ファイルに表示されます。
検証
次のコマンドを入力して、ノードのリストを取得します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION <node_name> Ready control-plane,master 37m v1.27.8+4fab27b
NAME STATUS ROLES AGE VERSION <node_name> Ready control-plane,master 37m v1.27.8+4fab27b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、ノード上でデバッグモードに入ります。
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、ターミナルに
chroot /host
を入力します。chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、レジストリーがポリシーファイルに追加されたことを確認します。
cat etc/containers/registries.conf
sh-5.1# cat etc/containers/registries.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例では、
untrusted.com
レジストリーからのイメージが、イメージのプルおよびプッシュで許可されないことを示しています。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.2.1. ペイロードレジストリーのブロック リンクのコピーリンクがクリップボードにコピーされました!
ミラーリング設定では、ImageContentSourcePolicy
(ICSP) オブジェクトを使用して、切断された環境でアップストリームペイロードレジストリーをブロックできます。以下の手順例は、quay.io/openshift-payload
ペイロードレジストリーをブロックする方法を示しています。
手順
ImageContentSourcePolicy
(ICSP) オブジェクトを使用してミラー設定を作成し、ペイロードをインスタンスのレジストリーにミラーリングします。以下の ICSP ファイルの例は、ペイロードinternal-mirror.io/openshift-payload
をミラーリングします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オブジェクトがノードにデプロイされたら、
/etc/containers/registries.conf
ファイルをチェックして、ミラー設定が設定されていることを確認します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、
image.config.openshift.io
カスタムリソースファイルを編集します。oc edit image.config.openshift.io cluster
$ oc edit image.config.openshift.io cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ペイロードレジストリーをブロックするには、次の設定を
image.config.openshift.io
カスタムリソースファイルに追加します。spec: registrySource: blockedRegistries: - quay.io/openshift-payload
spec: registrySource: blockedRegistries: - quay.io/openshift-payload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ノードの
/etc/containers/registries.conf
ファイルをチェックして、上流のペイロードレジストリーがブロックされていることを確認します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.3. 非セキュアなレジストリー リンクのコピーリンクがクリップボードにコピーされました!
image.config.openshift.io/cluster
カスタムリソース (CR) を編集して、非セキュアなレジストリー、およびオプションでレジストリー内の個別のリポジトリーを追加できます。OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。
有効な SSL 証明書を使用しないレジストリー、または HTTPS 接続を必要としないレジストリーは、非セキュアであると見なされます。
セキュリティー上のリスクを軽減するために、非セキュアな外部レジストリーは回避する必要があります。
手順
image.config.openshift.io/cluster
CR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、非セキュアなレジストリーのリストを含む
image.config.openshift.io/cluster
CR の例になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記allowedRegistries
パラメーターが定義されると、明示的に一覧表示されない限り、registry.redhat.io レジストリーと quay.io レジストリー、およびデフォルトの OpenShift イメージレジストリーを含むすべてのレジストリーがブロックされます。パラメーターを使用する場合は、Pod の失敗を防ぐために、registry.redhat.io
レジストリーとquay.io
レジストリー、およびinternalRegistryHostname
を含むすべてのレジストリーをallowedRegistries
リストに追加します。これらは、お使いの環境内のペイロードイメージで必要とされます。非接続クラスターの場合、ミラーレジストリーも追加する必要があります。Machine Config Operator (MCO) は、
image.config.openshift.io/cluster
CR でレジストリーへの変更の有無を監視し、変更を検出するとノードをドレイン (解放) し、遮断を解除します。ノードがReady
状態に戻った後に、非セキュアな、およびブロックされたレジストリーへの変更は、各ノードの/etc/containers/registries.conf
ファイルに表示されます。
検証
レジストリーがポリシーファイルに追加されていることを確認するには、ノードで以下のコマンドを使用します。
cat /etc/containers/registries.conf
$ cat /etc/containers/registries.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例は、
insecure.com
レジストリーからのイメージが非セキュアであり、イメージのプルおよびプッシュで許可されることを示しています。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.4. イメージの短縮名を許可するレジストリーの追加 リンクのコピーリンクがクリップボードにコピーされました!
image.config.openshift.io/cluster
カスタムリソース (CR) を編集して、イメージの短縮名を検索するためにレジストリーを追加できます。OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。
イメージの短縮名を使用して、プル仕様に完全修飾ドメイン名を追加せずに、イメージを検索できます。たとえば、registry.access.redhat.com/rhe7/etcd
の代わりに rhel7/etcd
を使用できます。
完全パスを使用することが実際的ではない場合に、短縮名を使用できる場合があります。たとえば、クラスターが DNS が頻繁に変更される複数の内部レジストリーを参照する場合、毎回の変更ごとにプル仕様の完全修飾ドメイン名を更新する必要が生じる可能性があります。この場合は、イメージの短縮名を使用した方が良いでしょう。
イメージをプルまたはプッシュする場合、コンテナーランタイムは image.config.openshift.io/cluster
CR の registrySources
パラメーターの下にリスト表示されるレジストリーを検索します。短縮名を使用してイメージをプル際に、containerRuntimeSearchRegistries
パラメーターでレジストリーのリストを作成している場合、コンテナーランタイムはそれらのレジストリーを検索します。
公開レジストリーで認証が必要な場合、イメージがデプロイされない可能性があるため、公開レジストリーでイメージの短縮名を使用することは推奨しません。公開レジストリーで完全修飾イメージ名を使用します。
通常、Red Hat の内部レジストリーまたはプライベートレジストリーは、イメージの短縮名の使用をサポートしています。
containerRuntimeSearchRegistries
パラメーターにパブリックレジストリーをリスト表示する場合、リストのすべてのレジストリーを公開することになり、ネットワークおよびレジストリーの攻撃にされされるリスクが生じます。
各パブリックレジストリーが異なる認証情報を必要とし、クラスターでグローバルプルシークレットにパブリックレジストリーがリストされない場合には、containerRuntimeSearchRegistries
パラメーターの下に複数のパブリックレジストリーをリストできません。
認証が必要なパブリックレジストリーの場合、レジストリーの認証情報がグローバルプルシークレットに格納されている場合にのみ、イメージの短縮名を使用できます。
Machine Config Operator (MCO) は、image.config.openshift.io/cluster
リソースでレジストリーへの変更の有無を監視します。MCO が変更を検出すると、これはノードをドレイン (解放) し、その変更を適用してノードの遮断を解除します。ノードが Ready
状態に戻った後に、containerRuntimeSearchRegistries
パラメーターが追加されると、MCO はリスト表示されるレジストリーで各ノードの /etc/containers/registries.conf.d
ディレクトリーにファイルを作成します。このファイルは、/etc/containers/registries.conf
ファイルの非修飾検索レジストリーのデフォルトリストをオーバーライドします。修飾されていない検索レジストリーのデフォルトリストにフォールバックする方法はありません。
containerRuntimeSearchRegistries
パラメーターは、Podman および CRI-O コンテナーエンジンを使用する場合のみ機能します。リストのレジストリーは、ビルドおよびイメージストリームではなく、Pod 仕様でのみ使用できます。
手順
image.config.openshift.io/cluster
CR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、
image.config.openshift.io/cluster
CR の例になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記allowedRegistries
パラメーターが定義されると、明示的に一覧表示されない限り、registry.redhat.io
レジストリーとquay.io
レジストリー、およびデフォルトの OpenShift イメージレジストリーを含むすべてのレジストリーがブロックされます。このパラメーターを使用する場合は、Pod の失敗を防ぐために、registry.redhat.io
レジストリーとquay.io
レジストリー、およびinternalRegistryHostname
を含むすべてのレジストリーをallowedRegistries
リストに追加します。これらは、お使いの環境内のペイロードイメージで必要とされます。非接続クラスターの場合、ミラーレジストリーも追加する必要があります。
検証
次のコマンドを入力して、ノードのリストを取得します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION <node_name> Ready control-plane,master 37m v1.27.8+4fab27b
NAME STATUS ROLES AGE VERSION <node_name> Ready control-plane,master 37m v1.27.8+4fab27b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、ノード上でデバッグモードに入ります。
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、ターミナルに
chroot /host
を入力します。chroot /host
sh-4.4# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、レジストリーがポリシーファイルに追加されたことを確認します。
cat /etc/containers/registries.conf.d/01-image-searchRegistries.conf
sh-5.1# cat /etc/containers/registries.conf.d/01-image-searchRegistries.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
unqualified-search-registries = ['reg1.io', 'reg2.io', 'reg3.io']
unqualified-search-registries = ['reg1.io', 'reg2.io', 'reg3.io']
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.5. イメージレジストリーアクセス用の追加のトラストストアの設定 リンクのコピーリンクがクリップボードにコピーされました!
image.config.openshift.io/cluster
カスタムリソースには、イメージレジストリーのアクセス時に信頼される追加の認証局が含まれる config map への参照を含めることができます。
前提条件
- 認証局 (CA) は PEM でエンコードされている。
手順
openshift-config
namespace で config map を作成し、image.config.openshift.io
カスタムリソースの AdditionalTrustedCA
でその名前を使用して、外部レジストリーにアクセスするときに信頼する必要がある追加の CA を提供できます。
config map のキーは、この CA を信頼するポートがあるレジストリーのホスト名であり、値は各追加レジストリー CA が信頼する証明書のコンテンツです。
イメージレジストリー CA の config map の例
- 1
- レジストリーにポートがある場合 (例:
registry-with-port.example.com:5000
)、:
は..
に置き換える必要があります。
以下の手順で追加の CA を設定できます。
追加の CA を設定するには、以下を実行します。
oc create configmap registry-config --from-file=<external_registry_address>=ca.crt -n openshift-config
$ oc create configmap registry-config --from-file=<external_registry_address>=ca.crt -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit image.config.openshift.io cluster
$ oc edit image.config.openshift.io cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec: additionalTrustedCA: name: registry-config
spec: additionalTrustedCA: name: registry-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.6. イメージレジストリーのリポジトリーミラーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーレジストリーのリポジトリーミラーリングの設定により、以下が可能になります。
- ソースイメージのレジストリーのリポジトリーからイメージをプルする要求をリダイレクトするように 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 インストール時にミラーリングを設定しなくても、
ImageContentSourcePolicy
オブジェクトを使用して後で設定することができます。
以下の手順では、インストール後のミラーを設定し、以下を識別する ImageContentSourcePolicy
オブジェクトを作成します。
- ミラーリングするコンテナーイメージリポジトリーのソース
- ソースリポジトリーから要求されたコンテンツを提供する各ミラーリポジトリーの個別のエントリー。
ImageContentSourcePolicy
オブジェクトを持つクラスターのグローバルプルシークレットのみを設定できます。プロジェクトにプルシークレットを追加することはできません。
前提条件
-
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/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6 \ docker://example.io/example/ubi-minimal
$ skopeo copy \ docker://registry.access.redhat.com/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6 \ docker://example.io/example/ubi-minimal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
example.io
いう名前のコンテナーイメージレジストリーとexample
という名前のイメージリポジトリーがあり、そこにregistry.access.redhat.com
からubi8/ubi-minimal
イメージをコピーします。レジストリーを作成した後、OpenShift Container Platform クラスターを設定して、ソースリポジトリーで作成される要求をミラーリングされたリポジトリーにリダイレクトできます。
- OpenShift Container Platform クラスターにログインします。
ImageContentSourcePolicy
ファイル (例:registryrepomirror.yaml
) を作成し、ソースとミラーを固有のレジストリー、およびリポジトリーのペアとイメージのものに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージレジストリーおよびリポジトリーの名前を示します。
- 2
- 各ターゲットリポジトリーの複数のミラーリポジトリーを示します。1 つのミラーがダウンした場合、ターゲットリポジトリーは別のミラーを使用できます。
- 3
- ミラーリングされているコンテンツが含まれるレジストリーおよびリポジトリーを示します。
- 4
- レジストリー内の namespace を、その namespace の任意のイメージを使用するように設定できます。レジストリードメインをソースとして使用する場合、
ImageContentSourcePolicy
リソースはレジストリーからすべてのリポジトリーに適用されます。 - 5
- レジストリー名を設定すると、ソースレジストリーからミラーレジストリーまでのすべてのリポジトリーに
ImageContentSourcePolicy
リソースが適用されます。 - 6
- イメージ
mirror.example.net/image@sha256:…
をプルします。 - 7
- ミラー
mirror.example.net/myimage@sha256:…
からソースレジストリー namespace のイメージmyimage
をプルします。 - 8
- ミラーレジストリー
mirror.example.net/registry-example-com/example/myimage@sha256:…
からイメージregistry.example.com/example/myimage
をプルします。ImageContentSourcePolicy
リソースは、ソースレジストリーからミラーレジストリーmirror.example.net/registry-example-com
までのすべてのリポジトリーに適用されます。
新しい
ImageContentSourcePolicy
オブジェクトを作成します。oc create -f registryrepomirror.yaml
$ oc create -f registryrepomirror.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 Imagecontentsourcepolicy
リソースはノードを再起動しません。デバッグプロセスを開始し、ノードにアクセスします。
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 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソースからノードにイメージダイジェストをプルし、ミラーによって解決されているかどうかを確認します。
ImageContentSourcePolicy
オブジェクトはイメージダイジェストのみをサポートし、イメージタグはサポートしません。podman pull --log-level=debug registry.access.redhat.com/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6
sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi8/ubi-minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
リポジトリーのミラーリングのトラブルシューティング
リポジトリーのミラーリング手順が説明どおりに機能しない場合は、リポジトリーミラーリングの動作方法についての以下の情報を使用して、問題のトラブルシューティングを行うことができます。
- 最初に機能するミラーは、プルされるイメージを指定するために使用されます。
- メインレジストリーは、他のミラーが機能していない場合にのみ使用されます。
-
システムコンテキストによって、
Insecure
フラグがフォールバックとして使用されます。 -
/etc/containers/registries.conf
ファイルの形式が最近変更されました。現在のバージョンはバージョン 2 で、TOML 形式です。