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/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、
image.config.openshift.io/clusterCR の例になります。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 nodesCopy 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/clusterCR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/clusterCopy 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 が変更を検出すると、machine config pool (MCP) 内のノードでロールアウトがトリガーされます。許可されたレジストリーのリストは、各ノードの/etc/containers/policy.jsonファイルでイメージ署名ポリシーを更新するために使用されます。/etc/containers/policy.jsonファイルへの変更において、ノードをドレインする必要はありません。
検証
次のコマンドを入力して、ノードのリストを取得します。
oc get nodes
$ oc get nodesCopy 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+4fab27bCopy 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 /hostCopy 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/clusterCR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、ブロックリストを含む
image.config.openshift.io/clusterCR の例です。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 nodesCopy 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+4fab27bCopy 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 /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、レジストリーがポリシーファイルに追加されたことを確認します。
cat etc/containers/registries.conf
sh-5.1# cat etc/containers/registries.confCopy 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 clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow ペイロードレジストリーをブロックするには、次の設定を
image.config.openshift.ioカスタムリソースファイルに追加します。spec: registrySources: blockedRegistries: - quay.io/openshift-payloadspec: registrySources: blockedRegistries: - quay.io/openshift-payloadCopy 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/clusterCR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、非セキュアなレジストリーのリストを含む
image.config.openshift.io/clusterCR の例になります。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/clusterCR でレジストリーへの変更の有無を監視し、変更を検出するとノードをドレイン (解放) し、遮断を解除します。ノードがReady状態に戻った後に、非セキュアな、およびブロックされたレジストリーへの変更は、各ノードの/etc/containers/registries.confファイルに表示されます。
検証
レジストリーがポリシーファイルに追加されていることを確認するには、ノードで以下のコマンドを使用します。
cat /etc/containers/registries.conf
$ cat /etc/containers/registries.confCopy 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 パラメーター (registry.redhat.io、docker.io、および quay.io レジストリーを含む) にパブリックレジストリーをリスト表示する場合、認証情報はリスト上のすべてのレジストリーに公開され、ネットワークおよびレジストリーの攻撃にされされるリスクが生じます。イメージをプルするためのプルシークレットは 1 つしかないため、グローバルプルシークレットで定義されているように、そのシークレットは、そのリスト内のすべてのレジストリーに対して認証するために使用されます。したがって、リストにパブリックレジストリーを含めると、セキュリティーリスクが発生します。
各パブリックレジストリーが異なる認証情報を必要とし、クラスターでグローバルプルシークレットにパブリックレジストリーがリストされない場合には、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/clusterCR を編集します。oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は、
image.config.openshift.io/clusterCR の例になります。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 nodesCopy 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+4fab27bCopy 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 /hostCopy 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.confCopy 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-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit image.config.openshift.io cluster
$ oc edit image.config.openshift.io clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow spec: additionalTrustedCA: name: registry-configspec: additionalTrustedCA: name: registry-configCopy 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 オブジェクトを作成します。
- ミラーリングするコンテナーイメージリポジトリーのソース
- ソースリポジトリーから要求されたコンテンツを提供する各ミラーリポジトリーの個別のエントリー。
以下のアクションと、ノードのドレイン動作への影響に注意してください。
- 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へのアイテムの追加。
-
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-minimalCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ImageContentSourcePolicyオブジェクトが作成されると、新しい設定が各ノードにデプロイされ、クラスターはソースリポジトリーへの要求のためにミラーリングされたリポジトリーの使用を開始します。ミラーリングされた設定が適用されていることを確認するには、ノードのいずれかで以下を実行します。
ノードのリストを表示します。
oc get node
$ oc get nodeCopy 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.internalCopy 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 /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/containers/registries.confファイルをチェックして、変更が行われたことを確認します。cat /etc/containers/registries.conf
sh-4.2# cat /etc/containers/registries.confCopy 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:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455ebaa6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
リポジトリーのミラーリングのトラブルシューティング
リポジトリーのミラーリング手順が説明どおりに機能しない場合は、リポジトリーミラーリングの動作方法に関する以下の情報を使用して、問題のトラブルシューティングを行うことができます。
- 最初に機能するミラーは、プルされるイメージを指定するために使用されます。
- メインレジストリーは、他のミラーが機能していない場合にのみ使用されます。
-
システムコンテキストによって、
Insecureフラグがフォールバックとして使用されます。 -
/etc/containers/registries.confファイルの形式が最近変更されました。現在のバージョンはバージョン 2 で、TOML 形式です。