9.5. イメージレジストリーリポジトリーのミラーリングについて


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

  • ソースイメージのレジストリーのリポジトリーからイメージをプルする要求をリダイレクトするように 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 (IDMS)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。IDMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。
    • ImageTagMirrorSet (ITMS)。このオブジェクトを使用すると、イメージタグを使用して、ミラーリングされたレジストリーからイメージをプルできます。ITMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。
    • ImageContentSourcePolicy (ICSP)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。ミラーが機能しない場合、ICSP CR は必ずソースレジストリーにフォールバックします。

      重要

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

      ImageContentSourcePolicy オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp コマンドを使用して、それらのファイルを ImageDigestMirrorSet YAML ファイルに変換できます。詳細については、イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP)ファイルの変換を参照してください。

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

  • ミラーリングするコンテナーイメージリポジトリーのソース
  • コンテンツを提供する各ミラーリポジトリーの個別のエントリー

次のアクションと、それがノードの drain 動作にどのように影響するかに注意してください。

  • IDMS または ICSP CR オブジェクトを作成すると、MCO はノードの drain またはリブートを実行しません。
  • ITMS CR オブジェクトを作成すると、MCO はノードの drain とリブートを実行します。
  • ITMS、IDMS、または ICSP CR オブジェクトを削除すると、MCO はノードの drain とリブートを実行します。
  • ITMS、IDMS、または ICSP CR オブジェクトを変更すると、MCO はノードの drain とリブートを実行します。

    重要
    • MCO が以下の変更のいずれかを検出すると、ノードの drain (Pod の退避) の実行または再起動を行わずに更新を適用します。

      • マシン設定の spec.config.passwd.users.sshAuthorizedKeys パラメーターの SSH キーの変更。
      • openshift-config namespace でのグローバルプルシークレットまたはプルシークレットへの変更。
      • Kubernetes API Server Operator による /etc/kubernetes/kubelet-ca.crt 認証局 (CA) の自動ローテーション。
    • MCO は、/etc/containers/registries.conf ファイルへの変更 (ImageDigestMirrorSetImageTagMirrorSet、または ImageContentSourcePolicy オブジェクトの編集など) を検出すると、対応するノードの drain (Pod の退避) を実行し、変更を適用して、ノードをスケジューリング対象に戻します。次の変更ではノードの drain (Pod の退避) の実行は発生しません。

      • pull-from-mirror = "digest-only" パラメーターがミラーごとに設定されたレジストリーの追加。
      • pull-from-mirror = "digest-only" パラメーターがレジストリーに設定されたミラーの追加。
      • unqualified-search-registries へのアイテムの追加。

新規クラスターの場合、必要に応じて IDMS、ITMS、および ICSP CR オブジェクトを使用できます。ただし、IDMS と ITMS の使用を推奨します。

クラスターをアップグレードした場合、既存の ICSP オブジェクトは安定を維持し、IDMS オブジェクトと ICSP オブジェクトの両方がサポートされるようになります。ICSP オブジェクトを使用するワークロードは引き続き想定どおりに機能します。一方、IDMS CR で導入されたフォールバックポリシーを利用する場合は、oc adm migrate icsp コマンドを使用して、現在のワークロードを IDMS オブジェクトに移行できます。これは、後述の イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換 セクションで説明しています。IDMS オブジェクトへの移行に、クラスターの再起動は必要ありません。

注記

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

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

インストール後のミラー設定カスタムリソース (CR) を作成して、ソースイメージレジストリーからミラーリングされたイメージレジストリーにイメージプル要求をリダイレクトできます。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

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

    • Red Hat Quay でミラーリングされたリポジトリーのセットアップRed Hat Quay を使用して、あるリポジトリーから別のリポジトリーにイメージをコピーでき、それらのリポジトリーを時間の経過とともに繰り返し同期することもできます。

    • skopeo などのツールを使用して、ソースリポジトリーからミラーリングされたリポジトリーにイメージを手動でコピーします。

      たとえば、{op-system-base-full システム} に skopeo RPM パッケージをインストールした後、以下の例に示すように skopeo コマンドを使用します。

      $ skopeo copy --all \
      docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \
      docker://example.io/example/ubi-minimal
      Copy to Clipboard Toggle word wrap

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

  2. 次の例のいずれかを使用して、インストール後のミラー設定のカスタムリソース(CR)を作成します。

    • 必要に応じて ImageDigestMirrorSet または ImageTagMirrorSet CR を作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。

      apiVersion: config.openshift.io/v1
      kind: ImageDigestMirrorSet
      metadata:
        name: ubi9repo
      spec:
        imageDigestMirrors:
        - mirrors:
          - example.io/example/ubi-minimal
          - example.com/example2/ubi-minimal
          source: registry.access.redhat.com/ubi9/ubi-minimal
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.com/redhat
          source: registry.example.com/redhat
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.com
          source: registry.example.com
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.net/image
          source: registry.example.com/example/myimage
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.net
          source: registry.example.com/example
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.net/registry-example-com
          source: registry.example.com
          mirrorSourcePolicy: AllowContactingSource
      Copy to Clipboard Toggle word wrap
    • ImageContentSourcePolicy カスタムリソースを作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。

      apiVersion: operator.openshift.io/v1alpha1
      kind: ImageContentSourcePolicy
      metadata:
        name: mirror-ocp
      spec:
        repositoryDigestMirrors:
        - mirrors:
          - mirror.registry.com:443/ocp/release
          source: quay.io/openshift-release-dev/ocp-release
        - mirrors:
          - mirror.registry.com:443/ocp/release
          source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
      Copy to Clipboard Toggle word wrap

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

      - mirror.registry.com:443/ocp/release
      ミラーイメージレジストリーおよびリポジトリーの名前を指定します。
      ソース:quay.io/openshift-release-dev/ocp-release
      ミラーリングされるコンテンツが含まれるオンラインレジストリーおよびリポジトリーを指定します。
  3. 次のコマンドを実行して、新しいオブジェクトを作成します。

    $ oc create -f registryrepomirror.yaml
    Copy to Clipboard Toggle word wrap

    オブジェクトの作成後、Machine Config Operator (MCO) は ImageTagMirrorSet オブジェクトのみのノードの drain (Pod の退避) を実行します。MCO は、ImageDigestMirrorSet オブジェクトと ImageContentSourcePolicy オブジェクトのノードの drain (Pod の退避) を実行しません。

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

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

      $ oc get node
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                           STATUS                     ROLES    AGE  VERSION
      ip-10-0-137-44.ec2.internal    Ready                      worker   7m   v1.32.3
      ip-10-0-138-148.ec2.internal   Ready                      master   11m  v1.32.3
      ip-10-0-139-122.ec2.internal   Ready                      master   11m  v1.32.3
      ip-10-0-147-35.ec2.internal    Ready                      worker   7m   v1.32.3
      ip-10-0-153-12.ec2.internal    Ready                      worker   7m   v1.32.3
      ip-10-0-154-10.ec2.internal    Ready                      master   11m  v1.32.3
      Copy to Clipboard Toggle word wrap

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

      $ oc debug node/ip-10-0-147-35.ec2.internal
      Copy to Clipboard Toggle word wrap

      出力例

      Starting pod/ip-10-0-147-35ec2internal-debug ...
      To use host binaries, run `chroot /host`
      Copy to Clipboard Toggle word wrap

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

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

      sh-4.2# cat /etc/containers/registries.conf
      Copy to Clipboard Toggle word wrap

      次の出力は、インストール後のミラー設定 CR が適用される registries.conf ファイルを示しています。

      出力例

      unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
      short-name-mode = ""
      
      [[registry]]
        prefix = ""
        location = "registry.access.redhat.com/ubi9/ubi-minimal"
      
        [[registry.mirror]]
          location = "example.io/example/ubi-minimal"
          pull-from-mirror = "digest-only"
      
        [[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.example.com"
      
        [[registry.mirror]]
          location = "mirror.example.com"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com/redhat"
      
        [[registry.mirror]]
          location = "mirror.example.com/redhat"
          pull-from-mirror = "digest-only"
      [[registry]]
        prefix = ""
        location = "registry.access.redhat.com/ubi9/ubi-minimal"
        blocked = true
      
        [[registry.mirror]]
          location = "example.io/example/ubi-minimal-tag"
          pull-from-mirror = "tag-only"
      Copy to Clipboard Toggle word wrap

      [[registry]].location = "registry.access.redhat.com/ubi9/ubi-minimal":: プル仕様にリストされているリポジトリー。[[registry.mirror]].location = "example.io/example/ubi-minimal":: そのリポジトリーのミラーを示します。[[registry.mirror]].pull-from-mirror = "digest-only":: ミラーからイメージがダイジェスト参照イメージであることを示しています。[[registry]].blocked = true:: このリポジトリーに NeverContactSource パラメーターが設定されていることを示します。[[registry.mirror]].pull-from-mirror = "tag-only":: ミラーからのイメージプルがタグ参照イメージであることを示します。

    5. ソースからノードにイメージをプルし、ミラーによって解決されるかどうかを確認します。

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

トラブルシューティング

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

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

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

ミラーリング用にイメージリポジトリーを設定するときに、以下の表を使用してパラメーターに関する情報を取得できます。

Expand
パラメーター値と情報

apiVersion:

必須。値は config.openshift.io/v1 API である必要があります。

kind:

プルタイプに応じたオブジェクトの種類。ImageDigestMirrorSet タイプはダイジェスト参照イメージをプルします。ImageTagMirrorSet タイプはタグ参照イメージをプルします。

spec: imageDigestMirrors:

イメージのプル方法のタイプ。ImageDigestMirrorSet CR に imageDigestMirrors を使用しますImageTagMirrorSet CR には imageTagMirrors を使用します。

- mirrors: - example.io/example/ubi-minimal

ミラーリングされたイメージのレジストリーとリポジトリーの名前。

- mirrors: -example.com/example2/ubi-minimal

このパラメーターの値は、各ターゲットリポジトリーのセカンダリーミラーリポジトリーの名前です。1 つのミラーがダウンした場合、ターゲットリポジトリーはセカンダリーミラーを使用できます。

ソース:registry.access.redhat.com/ubi9/ubi-minimal

レジストリーおよびリポジトリーソース。ソースは、イメージのプル仕様にリストされているリポジトリーです。

mirrorSourcePolicy: AllowContactingSource

イメージのプルが失敗した場合のフォールバックポリシーを示すオプションのパラメーター。AllowContactingSource 値により、ソースリポジトリーからのイメージのプルの継続的な試行が可能になります。デフォルト値。NeverContactSource は、ソースリポジトリーからイメージのプルが継続しようとするのを防ぎます。

ソース:registry.example.com/redhat: レジストリー内の namespace を示すオプションのパラメーター。レジストリーに namespace を設定すると、その namespace で任意のイメージを使用できます。レジストリードメインをソースとして使用する場合、オブジェクトはレジストリーからすべてのリポジトリーに適用されます。

ソース:registry.example.com

レジストリーを示す任意のパラメーターです。そのレジストリー内の任意のイメージを許可します。レジストリー名を指定すると、ソースレジストリーからミラーレジストリーまでのすべてのリポジトリーにオブジェクトが適用されます。

ソース:registry.example.com/example/myimage

イメージ registry.example.com/example/myimage@sha256:…​ をミラー mirror.example.net/image@sha256:.. からプルします。

ソース:registry.example.com/example

ミラー mirror.example.net/image@sha256:…​ からソースレジストリー namespace のイメージ registry.example.com/example/image@sha256:…​ をプルします。

ソース:registry.example.com

ImageContentSourcePolicy (ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。

この機能は引き続き OpenShift Container Platform に含まれており、引き続きサポートされます。ただし、この製品の将来のリリースでは削除される予定であり、新しいデプロイメントには推奨されません。

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

移行によって registries.conf ファイルは変更されないため、クラスターを再起動する必要はありません。

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>
    Copy to Clipboard Toggle word wrap

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

    <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
    Copy to Clipboard Toggle word wrap

    出力例

    wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml
    wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml
    Copy to Clipboard Toggle word wrap

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

    $ oc create -f <path_to_the_directory>/<file-name>.yaml
    Copy to Clipboard Toggle word wrap

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

    <path_to_the_directory>
    --dest-dir フラグを使用した場合は、ディレクトリーへのパスを指定します。
    <file_name>
    ImageDigestMirrorSet YAML の名前を指定します。
  3. IDMS オブジェクトがロールアウトされた後、ICSP オブジェクトを削除します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat