9.2. イメージレジストリーの設定


image.config.openshift.io/cluster カスタムリソース (CR) を編集してイメージレジストリーの設定を行うことができます。レジストリーへの変更が image.config.openshift.io/cluster CR に適用されると、Machine Config Operator (MCO) は以下の一連のアクションを実行します。

  1. ノードを封鎖します
  2. CRI-O を再起動して変更を適用します
  3. ノードを解放します

    注記

    MCO は、変更を検出してもノードを再起動しません。

手順

  1. 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
        - image-registry.openshift-image-registry.svc:5000
        - reg1.io/myrepo/myapp:latest
        insecureRegistries:
        - insecure.com
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    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 レジストリー、および internalRegistryHostnameallowedRegistries 一覧に追加する必要があります。これらは、お使いの環境内のペイロードイメージで必要とされます。registry.redhat.io および quay.io レジストリーを blockedRegistries 一覧に追加しないでください。

    allowedRegistriesblockedRegistries、または insecureRegistries パラメーターを使用する場合、レジストリー内に個別のリポジトリーを指定できます。例: reg1.io/myrepo/myapp:latest

    セキュリティー上のリスクを軽減するために、非セキュアな外部レジストリーは回避する必要があります。

  2. 変更が適用されたことを確認するには、ノードを一覧表示します。

    $ oc get nodes

    出力例

    NAME                                         STATUS                     ROLES                  AGE   VERSION
    ip-10-0-137-182.us-east-2.compute.internal   Ready,SchedulingDisabled   worker                 65m   v1.30.3
    ip-10-0-139-120.us-east-2.compute.internal   Ready,SchedulingDisabled   control-plane          74m   v1.30.3
    ip-10-0-176-102.us-east-2.compute.internal   Ready                      control-plane          75m   v1.30.3
    ip-10-0-188-96.us-east-2.compute.internal    Ready                      worker                 65m   v1.30.3
    ip-10-0-200-59.us-east-2.compute.internal    Ready                      worker                 63m   v1.30.3
    ip-10-0-223-123.us-east-2.compute.internal   Ready                      control-plane          73m   v1.30.3

9.2.1. 特定のレジストリーの追加

image.config.openshift.io/cluster カスタムリソース (CR) を編集してイメージのプルおよびプッシュアクションで許可されるレジストリーのリスト、およびオプションでレジストリー内の個別のリポジトリーを追加できます。Red Hat OpenShift Service on AWS は、この CR への変更をクラスター内のすべてのノードに適用します。

イメージをプルまたはプッシュする場合、コンテナーランタイムは image.config.openshift.io/cluster CR の registrySources パラメーターの下にリスト表示されるレジストリーを検索します。allowedRegistries パラメーターの下にレジストリーのリストを作成している場合、コンテナーランタイムはそれらのレジストリーのみを検索します。一覧に含まれていないレジストリーはブロックされます。

警告

allowedRegistries パラメーターが定義されると、明示的に一覧表示されない限り、registry.redhat.io レジストリーと quay.io レジストリー、およびデフォルトの OpenShift イメージレジストリーを含むすべてのレジストリーがブロックされます。パラメーターを使用する場合は、Pod の失敗を防ぐために、registry.redhat.io レジストリーと quay.io レジストリー、および internalRegistryHostnameallowedRegistries リストに追加します。これらは、お使いの環境内のペイロードイメージで必要とされます。非接続クラスターの場合、ミラーレジストリーも追加する必要があります。

手順

  • image.config.openshift.io/cluster カスタムリソースを編集します。

    $ 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
        - reg1.io/myrepo/myapp:latest
        - image-registry.openshift-image-registry.svc:5000
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    1
    コンテナーランタイムがビルドおよび Pod のイメージへのアクセス時に個々のレジストリーを処理する方法を決定する設定が含まれます。内部クラスターレジストリーの設定は含まれません。
    2
    レジストリー、およびイメージのプルおよびプッシュアクションに使用するレジストリー内のリポジトリーを指定します。他のすべてのレジストリーはブロックされます。
    注記

    allowedRegistries パラメーターまたは blockedRegistries パラメーターのいずれかを設定できますが、両方を設定することはできません。

    Machine Config Operator (MCO) は、image.config.openshift.io/cluster リソースでレジストリーへの変更の有無を監視します。MCO が変更を検出すると、これはノードをドレイン (解放) し、その変更を適用してノードの遮断を解除します。ノードが Ready 状態に戻った後に、許可されるレジストリーリストは、各ノードの /etc/containers/policy.json ファイルでイメージ署名ポリシーを更新するために使用されます。

注記

クラスターが registrySources.insecureRegistries パラメーターを使用する場合、非セキュアなレジストリーが許可リストに含まれることを確認します。

以下に例を示します。

spec:
  registrySources:
    insecureRegistries:
    - insecure.com
    allowedRegistries:
    - example.com
    - quay.io
    - registry.redhat.io
    - insecure.com
    - image-registry.openshift-image-registry.svc:5000

9.2.2. 特定のレジストリーのブロック

image.config.openshift.io/cluster カスタムリソース (CR) を編集してレジストリー、およびオプションでレジストリー内の個別のリポジトリーをブロックできます。Red Hat OpenShift Service on AWS は、この CR への変更をクラスター内のすべてのノードに適用します。

イメージをプルまたはプッシュする場合、コンテナーランタイムは image.config.openshift.io/cluster CR の registrySources パラメーターの下にリスト表示されるレジストリーを検索します。blockedRegistries パラメーターの下にレジストリーのリストを作成した場合、コンテナーランタイムはそれらのレジストリーを検索しません。他のすべてのレジストリーは許可されます。

警告

Pod の失敗を防ぐために、registry.redhat.io レジストリーおよび quay.io レジストリーを blockedRegistries リストに追加しないでください。これらは、お使いの環境内のペイロードイメージで必要とされます。

手順

  • 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
    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
        blockedRegistries: 2
        - untrusted.com
        - reg1.io/myrepo/myapp:latest
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    1
    コンテナーランタイムがビルドおよび Pod のイメージへのアクセス時に個々のレジストリーを処理する方法を決定する設定が含まれます。内部クラスターレジストリーの設定は含まれません。
    2
    レジストリー、およびオプションでイメージのプルおよびプッシュアクションに使用できないレジストリー内のリポジトリーを指定します。他のすべてのレジストリーは許可されます。
    注記

    blockedRegistries レジストリーまたは allowedRegistries レジストリーのいずれかを設定できますが、両方を設定することはできません。

    Machine Config Operator (MCO) は、image.config.openshift.io/cluster リソースでレジストリーへの変更の有無を監視します。MCO が変更を検出すると、これはノードをドレイン (解放) し、その変更を適用してノードの遮断を解除します。ノードが Ready 状態に戻った後に、ブロックされたレジストリーへの変更は各ノードの /etc/containers/registries.conf ファイルに表示されます。

9.2.3. 非セキュアなレジストリー

image.config.openshift.io/cluster カスタムリソース (CR) を編集して、非セキュアなレジストリー、およびオプションでレジストリー内の個別のリポジトリーを追加できます。Red Hat OpenShift Service on AWS は、この CR への変更をクラスター内のすべてのノードに適用します。

有効な SSL 証明書を使用しないレジストリー、または HTTPS 接続を必要としないレジストリーは、非セキュアであると見なされます。

警告

セキュリティー上のリスクを軽減するために、非セキュアな外部レジストリーは回避する必要があります。

手順

  • 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
    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
        insecureRegistries: 2
        - insecure.com
        - reg4.io/myrepo/myapp:latest
        allowedRegistries:
        - example.com
        - quay.io
        - registry.redhat.io
        - insecure.com 3
        - reg4.io/myrepo/myapp:latest
        - image-registry.openshift-image-registry.svc:5000
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    1
    コンテナーランタイムがビルドおよび Pod のイメージへのアクセス時に個々のレジストリーを処理する方法を決定する設定が含まれます。内部クラスターレジストリーの設定は含まれません。
    2
    非セキュアなレジストリーを指定します。そのレジストリーでリポジトリーを指定できます。
    3
    非セキュアなレジストリーが allowedRegistries 一覧に含まれていることを確認します。
    注記

    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 ファイルに表示されます。

9.2.4. イメージの短縮名を許可するレジストリーの追加

image.config.openshift.io/cluster カスタムリソース (CR) を編集して、イメージの短縮名を検索するためにレジストリーを追加できます。Red Hat OpenShift Service on AWS は、この CR への変更をクラスター内のすべてのノードに適用します。

イメージの短縮名を使用して、プル仕様に完全修飾ドメイン名を追加せずに、イメージを検索できます。たとえば、registry.access.redhat.com/rhe7/etcd の代わりに rhel7/etcd を使用できます。

完全パスを使用することが実際的ではない場合に、短縮名を使用できる場合があります。たとえば、クラスターが DNS が頻繁に変更される複数の内部レジストリーを参照する場合、毎回の変更ごとにプル仕様の完全修飾ドメイン名を更新する必要が生じる可能性があります。この場合は、イメージの短縮名を使用した方が良いでしょう。

イメージをプルまたはプッシュする場合、コンテナーランタイムは image.config.openshift.io/cluster CR の registrySources パラメーターの下にリスト表示されるレジストリーを検索します。短縮名を使用してイメージをプル際に、containerRuntimeSearchRegistries パラメーターでレジストリーのリストを作成している場合、コンテナーランタイムはそれらのレジストリーを検索します。

警告

公開レジストリーで認証が必要な場合、イメージがデプロイされない可能性があるため、公開レジストリーでイメージの短縮名を使用することは推奨しません。公開レジストリーで完全修飾イメージ名を使用します。

通常、Red Hat の内部レジストリーまたはプライベートレジストリーは、イメージの短縮名の使用をサポートしています。

containerRuntimeSearchRegistries パラメーター (registry.redhat.iodocker.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/cluster カスタムリソースを編集します。

    $ oc edit image.config.openshift.io/cluster

    以下は、image.config.openshift.io/cluster CR の例になります。

    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:
      allowedRegistriesForImport:
        - domainName: quay.io
          insecure: false
      additionalTrustedCA:
        name: myconfigmap
      registrySources:
        containerRuntimeSearchRegistries: 1
        - reg1.io
        - reg2.io
        - reg3.io
        allowedRegistries: 2
        - example.com
        - quay.io
        - registry.redhat.io
        - reg1.io
        - reg2.io
        - reg3.io
        - image-registry.openshift-image-registry.svc:5000
    ...
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    1
    イメージの短縮名で使用するレジストリーを指定します。セキュリティー上のリスクが発生する可能性を軽減するために、内部レジストリーまたはプライベートレジストリーでのみイメージの短縮名を使用する必要があります。
    2
    containerRuntimeSearchRegistries に一覧表示されるレジストリーが allowedRegistries 一覧に含まれることを確認します。
    注記

    allowedRegistries パラメーターが定義されると、明示的に一覧表示されない限り、registry.redhat.io レジストリーと quay.io レジストリー、およびデフォルトの OpenShift イメージレジストリーを含むすべてのレジストリーがブロックされます。このパラメーターを使用する場合は、Pod の失敗を防ぐために、registry.redhat.io レジストリーと quay.io レジストリー、および internalRegistryHostname を含むすべてのレジストリーを allowedRegistries リストに追加します。これらは、お使いの環境内のペイロードイメージで必要とされます。非接続クラスターの場合、ミラーレジストリーも追加する必要があります。

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 の例

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-registry-ca
data:
  registry.example.com: |
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
  registry-with-port.example.com..5000: | 1
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----

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 edit image.config.openshift.io cluster
    spec:
      additionalTrustedCA:
        name: registry-config
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.