11.4. イメージ設定

イメージレジストリーの設定について理解し、これを設定します。

11.4.1. イメージコントローラー設定パラメーター

image.config.openshift.io/cluster resource は、イメージの処理方法についてのクラスター全体の情報を保持します。正規名および唯一の有効な名前となるのは cluster です。spec は以下の設定パラメーターを提供します。

注記

DisableScheduledImportMaxImagesBulkImportedPerRepositoryMaxScheduledImportsPerMinuteScheduledImageImportMinimumIntervalSecondsInternalRegistryHostname などのパラメーターは設定できません。

パラメーター説明

allowedRegistriesForImport

標準ユーザーがイメージのインポートに使用できるコンテナーイメージレジストリーを制限します。この一覧を、有効なイメージを含むものとしてユーザーが信頼し、アプリケーションのインポート元となるレジストリーに設定します。イメージまたは ImageStreamMappings を API 経由で作成するパーミッションを持つユーザーは、このポリシーによる影響を受けません。通常、これらのパーミッションを持っているのはクラスター管理者のみです。

このリストのすべての要素に、レジストリーのドメイン名で指定されるレジストリーの場所が含まれます。

domainName: レジストリーのドメイン名を指定します。レジストリーが標準以外の (80 または 443) ポートを使用する場合、ポートはドメイン名にも含まれる必要があります。

insecure: insecure はレジストリーがセキュアか、または非セキュアであるかを示します。指定がない場合には、デフォルトでレジストリーはセキュアであることが想定されます。

additionalTrustedCA

image stream importpod image pullopenshift-image-registry pullthrough、およびビルド時に信頼される必要のある追加の CA が含まれる設定マップ の参照です。

この設定マップの namespace は openshift-config です。設定マップの形式では、信頼する追加のレジストリー CA についてレジストリーのホスト名をキーとして使用し、PEM エンコード証明書を値として使用します。

externalRegistryHostnames

デフォルトの外部イメージレジストリーのホスト名を指定します。外部ホスト名は、イメージレジストリーが外部に公開される場合にのみ設定される必要があります。最初の値は、イメージストリームの publicDockerImageRepository フィールドで使用されます。値は hostname[:port] 形式の値である必要があります。

registrySources

コンテナーランタイムがビルドおよび Pod のイメージへのアクセス時に個々のレジストリーを処理する方法を決定する設定が含まれます。たとえば、非セキュアなアクセスを許可するかどうかを設定します。内部クラスターレジストリーの設定は含まれません。

insecureRegistries: 有効な TLS 証明書を持たないか、または HTTP 接続のみをサポートするレジストリーです。すべてのサブドメインを指定するには、ドメイン名に接頭辞としてアスタリスク (*) ワイルドカード文字を追加します。例: *.example.comレジストリー内で個別のリポジトリーを指定できます。例: reg1.io/myrepo/myapp:latest

blockedRegistries: イメージのプルおよびプッシュアクションが拒否されるレジストリーです。すべてのサブドメインを指定するには、ドメイン名に接頭辞としてアスタリスク (*) ワイルドカード文字を追加します。例: *.example.comレジストリー内で個別のリポジトリーを指定できます。例: reg1.io/myrepo/myapp:latest他のすべてのレジストリーは許可されます。

allowedRegistries: イメージのプルおよびプッシュアクションが許可されるレジストリーです。すべてのサブドメインを指定するには、ドメイン名に接頭辞としてアスタリスク (*) ワイルドカード文字を追加します。例: *.example.comレジストリー内で個別のリポジトリーを指定できます。例: reg1.io/myrepo/myapp:latest他のすべてのレジストリーはブロックされます。

containerRuntimeSearchRegistries: イメージの短縮名を使用したイメージのプルおよびプッシュアクションが許可されるレジストリーです。他のすべてのレジストリーはブロックされます。

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

警告

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

image.config.openshift.io/cluster リソースの status フィールドは、クラスターから観察される値を保持します。

パラメーター説明

internalRegistryHostname

internalRegistryHostname を制御するイメージレジストリー Operator によって設定されます。これはデフォルトの OpenShift イメージレジストリーのホスト名を設定します。値は hostname[:port] 形式の値である必要があります。後方互換性を確保す るために、OPENSHIFT_DEFAULT_REGISTRY 環境変数を依然として使用できますが、この設定によってこの環境変数は上書きされます。

externalRegistryHostnames

イメージレジストリー Operator によって設定され、外部に公開される際にイメージレジストリーの外部のホスト名を指定します。最初の値は、イメージストリームの publicDockerImageRepository フィールドで使用されます。値は hostname[:port] 形式の値である必要があります。

11.4.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) が含まれる設定マップの参照です。この設定マップの namespace は openshift-config です。設定マップの形式では、信頼する追加のレジストリー 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.26.0
    ip-10-0-139-120.us-east-2.compute.internal   Ready,SchedulingDisabled   control-plane          74m   v1.26.0
    ip-10-0-176-102.us-east-2.compute.internal   Ready                      control-plane          75m   v1.26.0
    ip-10-0-188-96.us-east-2.compute.internal    Ready                      worker                 65m   v1.26.0
    ip-10-0-200-59.us-east-2.compute.internal    Ready                      worker                 63m   v1.26.0
    ip-10-0-223-123.us-east-2.compute.internal   Ready                      control-plane          73m   v1.26.0

許可、ブロック、および安全でないレジストリーパラメーターの詳細は、イメージレジストリーの設定 を参照してください。

11.4.3. イメージレジストリーアクセス用の追加のトラストストアの設定

image.config.openshift.io/cluster カスタムリソースには、イメージレジストリーのアクセス時に信頼される追加の認証局が含まれる config map への参照を含めることができます。

前提条件

  • 認証局 (CA) は PEM でエンコードされている。

手順

設定マップを openshift-config namespace に作成し、その名前を image.config.openshift.io カスタムリソースの AdditionalTrustedCA で使用し、追加の CA を指定できます。

設定マップキーは、この 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 を設定できます。

  1. 追加の 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

11.4.4. イメージレジストリーのリポジトリーミラーリングの設定

コンテナーレジストリーリポジトリーのミラーリングを設定すると、次のタスクを実行できます。

  • ソースイメージのレジストリーのリポジトリーからイメージをプルする要求をリダイレクトするように 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.この CR を使用すると、ダイジェスト仕様を使用して、ミラー化されたレジストリーからイメージを取得できます。
    • ImageTagMirrorSet。この CR を使用すると、イメージタグを使用して、ミラー化されたレジストリーからイメージを取得できます。
    重要

    ImageContentSourcePolicy (ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。ImageContentSourcePolicy オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp コマンドを使用して、それらのファイルを ImageDigestMirrorSet YAML ファイルに変換できます。詳細については、次のセクションのイメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換を参照してください。

これらのカスタムリソースオブジェクトは両方とも、次の情報を識別します。

  • ミラーリングするコンテナーイメージリポジトリーのソース
  • ソースリポジトリーから要求されたコンテンツを提供する各ミラーリポジトリーの個別のエントリー。
注記

クラスターが ImageDigestMirrorSet または ImageTagMirrorSet オブジェクトを使用してリポジトリーミラーリングを設定する場合、ミラーリングされたレジストリーにはグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。

次の手順では、ImageDigestMirrorSet オブジェクトを作成するインストール後のミラー設定を作成します。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできることを確認します。
  • クラスターに ImageContentSourcePolicy オブジェクトがないことを確認します。たとえば、次のコマンドを使用できます。

    $ oc get ImageContentSourcePolicy

    出力例

    No resources found

手順

  1. ミラーリングされたリポジトリーを設定します。以下のいずれかを実行します。

    • 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

      この例では、example.io いう名前のコンテナーイメージレジストリーと example という名前のイメージリポジトリーがあり、そこに registry.access.redhat.com から ubi9/ubi-minimal イメージをコピーします。レジストリーを作成した後、OpenShift Container Platform クラスターを設定して、ソースリポジトリーで作成される要求をミラーリングされたリポジトリーにリダイレクトできます。

  2. OpenShift Container Platform クラスターにログインします。
  3. 必要に応じて ImageDigestMirrorSet または ImageTagMirrorSet CR を作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。

    apiVersion: config.openshift.io/v1 1
    kind: ImageDigestMirrorSet 2
    metadata:
      name: ubi9repo
    spec:
      imageDigestMirrors: 3
      - mirrors:
        - example.io/example/ubi-minimal 4
        - example.com/example/ubi-minimal 5
        source: registry.access.redhat.com/ubi9/ubi-minimal 6
        mirrorSourcePolicy: AllowContactingSource 7
      - mirrors:
        - mirror.example.com/redhat
        source: registry.redhat.io/openshift4 8
        mirrorSourcePolicy: AllowContactingSource
      - mirrors:
        - mirror.example.com
        source: registry.redhat.io 9
        mirrorSourcePolicy: AllowContactingSource
      - mirrors:
        - mirror.example.net/image
        source: registry.example.com/example/myimage 10
        mirrorSourcePolicy: AllowContactingSource
      - mirrors:
        - mirror.example.net
        source: registry.example.com/example 11
        mirrorSourcePolicy: AllowContactingSource
      - mirrors:
        - mirror.example.net/registry-example-com
        source: registry.example.com 12
        mirrorSourcePolicy: AllowContactingSource
    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 を示します。これにより、その namaspace で任意のイメージを使用できます。レジストリードメインをソースとして使用する場合、オブジェクトはレジストリーからすべてのリポジトリーに適用されます。
    9
    オプション: レジストリーを示し、そのレジストリー内の任意のイメージを使用できるようにします。レジストリー名を指定すると、ソースレジストリーからミラーレジストリーまでのすべてのリポジトリーにオブジェクトが適用されます。
    10
    イメージ registry.example.com/example/myimage@sha256:…​ をミラー mirror.example.net/image@sha256:.. からプルします。
    11
    ミラー mirror.example.net/image@sha256:… からソースレジストリー名前空間のイメージ registry.example.com/example/image@sha256:…​ をプルします。
    12
    ミラーレジストリー example.net/registry-example-com/myimage@sha256:…​ からイメージ registry.example.com/myimage@sha256 をプルします。ImageContentSourcePolicy リソースは、ソースレジストリーからミラーレジストリー mirror.example.net/registry-example-com までのすべてのリポジトリーに適用されます。
  4. 新規オブジェクトを作成します。

    $ oc create -f registryrepomirror.yaml

    オブジェクトが作成された後、新しい設定が各ノードにデプロイメントされると、Machine Config Operator (MCO) がノードを封鎖します。MCO は、ImageTagMirrorSet オブジェクトのノードのみを再起動します。MCO は ImageDigestMirrorSet オブジェクトのノードを再起動しません。ノードが uncordon されると、クラスターは、ソースリポジトリーへの要求に対してミラーリングされたリポジトリーの使用を開始します。

  5. ミラーリングされた設定が適用されていることを確認するには、ノードのいずれかで以下を実行します。

    1. ノードの一覧を表示します。

      $ oc get node

      出力例

      NAME                           STATUS                     ROLES    AGE  VERSION
      ip-10-0-137-44.ec2.internal    Ready                      worker   7m   v1.26.0
      ip-10-0-138-148.ec2.internal   Ready                      master   11m  v1.26.0
      ip-10-0-139-122.ec2.internal   Ready                      master   11m  v1.26.0
      ip-10-0-147-35.ec2.internal    Ready                      worker   7m   v1.26.0
      ip-10-0-153-12.ec2.internal    Ready                      worker   7m   v1.26.0
      ip-10-0-154-10.ec2.internal    Ready                      master   11m  v1.26.0

    2. デバッグプロセスを開始し、ノードにアクセスします。

      $ oc debug node/ip-10-0-147-35.ec2.internal

      出力例

      Starting pod/ip-10-0-147-35ec2internal-debug ...
      To use host binaries, run `chroot /host`

    3. ルートディレクトリーを /host に変更します。

      sh-4.2# chroot /host
    4. /etc/containers/registries.conf ファイルをチェックして、変更が行われたことを確認します。

      sh-4.2# cat /etc/containers/registries.conf

      次の出力は、ImageDigestMirrorSet オブジェクトと ImageTagMirrorSet オブジェクトが適用された registries.conf ファイルを表しています。最後の 2 つのエントリーは、それぞれ digest-only および tag-only とマークされています。

      出力例

      unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
      short-name-mode = ""
      
      [[registry]]
        prefix = ""
        location = "registry.access.redhat.com/ubi9/ubi-minimal" 1
      
        [[registry.mirror]]
          location = "example.io/example/ubi-minimal" 2
          pull-from-mirror = "digest-only" 3
      
        [[registry.mirror]]
          location = "example.com/example/ubi-minimal"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com"
      
        [[registry.mirror]]
          location = "mirror.example.net/registry-example-com"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com/example"
      
        [[registry.mirror]]
          location = "mirror.example.net"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com/example/myimage"
      
        [[registry.mirror]]
          location = "mirror.example.net/image"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.redhat.io"
      
        [[registry.mirror]]
          location = "mirror.example.com"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.redhat.io/openshift4"
      
        [[registry.mirror]]
          location = "mirror.example.com/redhat"
          pull-from-mirror = "digest-only"
      [[registry]]
        prefix = ""
        location = "registry.access.redhat.com/ubi9/ubi-minimal"
        blocked = true 4
      
        [[registry.mirror]]
          location = "example.io/example/ubi-minimal-tag"
          pull-from-mirror = "tag-only" 5

      1
      プルスペックで参照されるリポジトリーを示します。
      2
      そのリポジトリーのミラーを示します。
      3
      ミラーからプルされたイメージがダイジェスト参照イメージであることを示します。
      4
      このリポジトリーに NeverContactSource パラメーターが設定されていることを示します。
      5
      ミラーからプルされたイメージがタグ参照イメージであることを示します。
    5. ソースからノードにイメージをプルし、ミラーによって解決されるかどうかを確認します。

      sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf...

リポジトリーのミラーリングのトラブルシューティング

リポジトリーのミラーリング手順が説明どおりに機能しない場合は、リポジトリーミラーリングの動作方法についての以下の情報を使用して、問題のトラブルシューティングを行うことができます。

  • 最初に機能するミラーは、プルされるイメージを指定するために使用されます。
  • メインレジストリーは、他のミラーが機能していない場合にのみ使用されます。
  • システムコンテキストによって、Insecure フラグがフォールバックとして使用されます。
  • /etc/containers/registries.conf ファイルの形式が最近変更されました。現在のバージョンはバージョン 2 で、TOML 形式です。
  • ImageDigestMirrorSet オブジェクトと ImageTagMirrorSet オブジェクトの両方に同じリポジトリーを追加することはできません。

11.4.5. イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換

ImageContentSourcePolicy (ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。この機能は引き続き OpenShift Container Platform に含まれており、引き続きサポートされます。ただし、この製品の将来のリリースでは削除される予定であり、新しいデプロイメントには推奨されません。

ICSP オブジェクトは、リポジトリーミラーリングを設定するために ImageDigestMirrorSet および ImageTagMirrorSet オブジェクトに置き換えられています。ImageContentSourcePolicy オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp コマンドを使用して、それらのファイルを ImageDigestMirrorSet YAML ファイルに変換できます。このコマンドは、API を現在のバージョンに更新し、kind 値を ImageDigestMirrorSet に変更し、spec.repositoryDigestMirrorsspec.imageDigestMirrors に変更します。ファイルの残りの部分は変更されません。

ImageDigestMirrorSet または ImageTagMirrorSet オブジェクトの詳細については、前のセクションのイメージレジストリーリポジトリーミラーリングの設定を参照してください。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできることを確認します。
  • クラスターに ImageContentSourcePolicy オブジェクトがあることを確認します。

手順

  1. 次のコマンドを使用して、1 つ以上の ImageContentSourcePolicy YAML ファイルを ImageDigestMirrorSet YAML ファイルに変換します。

    $ oc adm migrate icsp <file_name>.yaml <file_name>.yaml <file_name>.yaml --dest-dir <path_to_the_directory>

    ここでは、以下のようになります。

    <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

    出力例

    wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml
    wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml

  2. 次のコマンドを実行して CR オブジェクトを作成します。

    $ oc create -f <path_to_the_directory>/<file-name>.yaml

    ここでは、以下のようになります。

    <path_to_the_directory>
    --dest-dir フラグを使用した場合は、ディレクトリーへのパスを指定します。
    <file_name>
    ImageDigestMirrorSet YAML の名前を指定します。