9.2. イメージ設定内容の設定
image.config.openshift.io/cluster
カスタムリソース (CR) を編集してイメージレジストリーの設定を行うことができます。Machine Config Operator (MCO) は、レジストリーへの変更について image.config.openshift.io/cluster
を監視し、変更を検出するとノードを再起動します。
手順
image.config.openshift.io/cluster
カスタムリソースを編集します。$ oc edit image.config.openshift.io/cluster
以下は、
image.config.openshift.io/cluster
CR の例になります。apiVersion: config.openshift.io/v1 kind: Image 1 metadata: annotations: release.openshift.io/create-only: "true" creationTimestamp: "2019-05-17T13:44:26Z" generation: 1 name: cluster resourceVersion: "8302" selfLink: /apis/config.openshift.io/v1/images/cluster uid: e34555da-78a9-11e9-b92b-06d6c7da38dc spec: allowedRegistriesForImport: 2 - domainName: quay.io insecure: false additionalTrustedCA: 3 name: myconfigmap registrySources:4 allowedRegistries: - example.com - quay.io - registry.redhat.io insecureRegistries: - insecure.com status: internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
- 1
Image
: イメージの処理方法についてのクラスター全体の情報を保持します。正規名および唯一の有効な名前となるのはcluster
です。- 2
allowedRegistriesForImport
: 標準ユーザーがイメージのインポートに使用するコンテナーイメージレジストリーを制限します。この一覧を、有効なイメージを含むものとしてユーザーが信頼し、アプリケーションのインポート元となるレジストリーに設定します。イメージまたはImageStreamMappings
を API 経由で作成するパーミッションを持つユーザーは、このポリシーによる影響を受けません。通常、これらのパーミッションを持っているのはクラスター管理者のみです。- 3
additionalTrustedCA
:ImageStream import
、pod image pull
、openshift-image-registry pullthrough
、およびビルドの処理時に信頼される必要のある追加の CA が含まれる ConfigMap の参照です。この ConfigMap の namespace はopenshift-config
です。ConfigMap の形式では、信頼する追加のレジストリー CA についてレジストリーのホスト名をキーとして使用し、PEM 証明書を値として使用します。- 4
registrySources
: コンテナーランタイムがビルドおよび Pod のイメージへのアクセス時に個々のレジストリーを処理する方法を決定する設定が含まれます。たとえば、非セキュアなアクセスを許可するかどうかを設定します。内部クラスターレジストリーの設定は含まれません。この例では、使用可能なレジストリーを定義するallowedRegistries
を一覧表示します。一覧表示されたレジストリーのいずれかが非セキュアです。
変更が適用されたことを確認するには、ノードを一覧表示します。
$ oc get nodes
出力例
NAME STATUS ROLES AGE VERSION ci-ln-j5cd0qt-f76d1-vfj5x-master-0 Ready master 98m v1.19.0+7070803 ci-ln-j5cd0qt-f76d1-vfj5x-master-1 Ready,SchedulingDisabled master 99m v1.19.0+7070803 ci-ln-j5cd0qt-f76d1-vfj5x-master-2 Ready master 98m v1.19.0+7070803 ci-ln-j5cd0qt-f76d1-vfj5x-worker-b-nsnd4 Ready worker 90m v1.19.0+7070803 ci-ln-j5cd0qt-f76d1-vfj5x-worker-c-5z2gz NotReady,SchedulingDisabled worker 90m v1.19.0+7070803 ci-ln-j5cd0qt-f76d1-vfj5x-worker-d-stsjv Ready worker 90m v1.19.0+7070803
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 and quay.io を含むすべてのレジストリーがブロックされます。パラメーターを使用する場合、Pod の失敗を防ぐために、お使いの環境内のペイロードイメージで必要な registry.redhat.io
および quay.io
を allowedRegistries
一覧に追加します。非接続クラスターの場合、ミラーレジストリーも追加する必要があります。
手順
image.config.openshift.io/cluster
CR を編集します。$ oc edit image.config.openshift.io/cluster
以下は、許可リストを含む
image.config.openshift.io/cluster
リソースの例になります。apiVersion: config.openshift.io/v1 kind: Image metadata: annotations: release.openshift.io/create-only: "true" creationTimestamp: "2019-05-17T13:44:26Z" generation: 1 name: cluster resourceVersion: "8302" selfLink: /apis/config.openshift.io/v1/images/cluster uid: e34555da-78a9-11e9-b92b-06d6c7da38dc spec: registrySources: 1 allowedRegistries: 2 - example.com - quay.io - registry.redhat.io status: internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
注記allowedRegistries
パラメーターまたはblockedRegistries
パラメーターのいずれかを設定できますが、両方を設定することはできません。Machine Config Operator (MCO) は、
image.config.openshift.io/cluster
CR でレジストリーへの変更の有無を監視し、変更を検出するとノードを再起動します。許可されるレジストリーへの変更により、各ノードの/host/etc/containers/policy.json
ファイルのイメージ署名ポリシーが作成または更新されます。レジストリーがポリシーファイルに追加されていることを確認するには、ノードで以下のコマンドを使用します。
$ cat /host/etc/containers/policy.json
以下のポリシーは、イメージのプルおよびプッシュで、example.com、quay.io、および registry.redhat.io レジストリーからのイメージのみを許可されることを示しています。
例9.1 イメージ署名ポリシーファイルの例
{ "default": [{ "type": "reject" }], "transports": { "atomic": { "example.com": [{ "type": "insecureAcceptAnything" }], "quay.io": [{ "type": "insecureAcceptAnything" }], "registry.redhat.io": [{ "type": "insecureAcceptAnything" }] }, "docker": { "example.com": [{ "type": "insecureAcceptAnything" }], "quay.io": [{ "type": "insecureAcceptAnything" }], "registry.redhat.io": [{ "type": "insecureAcceptAnything" }] }, "docker-daemon": { "": [{ "type": "insecureAcceptAnything" }] } } }
クラスターが registrySources.insecureRegistries
パラメーターを使用する場合、非セキュアなレジストリーが許可リストに含まれることを確認します。
以下に例を示します。
spec: registrySources: insecureRegistries: - insecure.com allowedRegistries: - example.com - quay.io - registry.redhat.io - insecure.com