4.8.4. Operator カタログのミラーリング


oc adm catalog mirror コマンドを使用して、Red Hat が提供するカタログまたはカスタムカタログの Operator コンテンツをコンテナーイメージレジストリーにミラーリングできます。ターゲットレジストリーは Docker v2-2 をサポートする必要があります。ネットワークが制限された環境のクラスターの場合、このレジストリーには、ネットワークが制限されたクラスターのインストール時に作成されたミラーレジストリーなど、クラスターにネットワークアクセスのあるレジストリーを使用できます。

重要

OpenShift Container Platform クラスターの内部レジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。

oc adm catalog mirror コマンドは、Red Hat が提供するインデックスイメージであるか、または独自のカスタムビルドされたインデックスイメージであるかに関係なく、ミラーリングプロセス中に指定されるインデックスイメージをターゲットレジストリーに自動的にミラーリングします。次に、ミラーリングされたインデックスイメージを使用して、Operator Lifecycle Manager (OLM) がミラーリングされたカタログを OpenShift Container Platform クラスターにロードできるようにするカタログソースを作成できます。

前提条件

  • ネットワークアクセスが無制限のワークステーション
  • podman バージョン 1.9.3 以降。
  • Docker v2-2 をサポートするミラーレジストリーへのアクセス。
  • ミラーリングされた Operator コンテンツを保存するために使用するミラーレジストリー上の namespace を決定します。たとえば、olm-mirror namespace を作成できます。
  • ミラーレジストリーにインターネットアクセスがない場合は、ネットワークアクセスが無制限のワークステーションにリムーバブルメディアを接続します。
  • registry.redhat.io などのプライベートレジストリーを使用している場合、後続の手順で使用するために REG_CREDS 環境変数をレジストリー認証情報のファイルパスに設定します。たとえば podman CLI の場合は、以下のようになります。

    $ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
    Copy to Clipboard Toggle word wrap

手順

  1. Red Hat が提供するカタログをミラーリングする場合は、ネットワークアクセスが無制限のワークステーションで以下のコマンドを実行し、registry.redhat.io で認証します。

    $ podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. oc adm catalog mirror コマンドは、インデックスイメージのコンテンツを抽出し、ミラーリングに必要なマニフェストを生成します。コマンドのデフォルト動作で、マニフェストを生成し、インデックスイメージからのすべてのイメージコンテンツを、インデックスイメージと同様にミラーレジストリーに対して自動的にミラーリングします。または、ミラーレジストリーが完全に非接続または エアギャップ環境のホスト上にある場合、最初にコンテンツをリムーバブルメディアにミラーリングし、メディアを非接続環境に移行してから、メディアからレジストリーにコンテンツをレジストリーに対してミラーリングできます。

    • オプション A: ミラーレジストリーがネットワークアクセスが無制限のワークステーションと同じネットワーク上にある 場合、ワークステーションで以下のアクションを実行します。

      1. ミラーレジストリーに認証が必要な場合は、以下のコマンドを実行してレジストリーにログインします。

        $ podman login <mirror_registry>
        Copy to Clipboard Toggle word wrap
      2. 以下のコマンドを実行してコンテンツをミラーリングします。

        $ oc adm catalog mirror \
            <index_image> \
        1
        
            <mirror_registry>:<port>/<namespace> \
        2
        
            [-a ${REG_CREDS}] \
        3
        
            [--insecure] \
        4
        
            [--index-filter-by-os='<platform>/<arch>'] \
        5
        
            [--manifests-only] 
        6
        Copy to Clipboard Toggle word wrap
        1
        ミラーリングするカタログのインデックスイメージを指定します。たとえば、これは以前に作成したプルーニングされたインデックスイメージ、または registry.redhat.io/redhat/redhat-operator-index:v4.6 などのデフォルトカタログのソースインデックスイメージのいずれかである可能性があります。
        2
        Operator コンテンツをミラーリングするターゲットレジストリーおよび namespace の完全修飾ドメイン名 (FQDN) を指定します。ここで、<namespace> はレジストリーの既存の namespace です。たとえば、olm-mirror namespace を作成し、ミラーリングされたすべてのコンテンツをプッシュすることができます。
        3
        オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。registry.redhat.io には、{REG_CREDS} が必要です。
        4
        オプション: ターゲットレジストリーの信頼を設定しない場合は、--insecure フラグを追加します。
        5
        オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは '<platform>/<arch>[/<variant>]' として渡されます。これはインデックスで参照されるイメージには適用されません。使用できる値は、linux/amd64linux/ppc64le、および linux/s390x です。
        6
        オプション: ミラーリングに必要なマニフェストのみを生成し、実際にはイメージコンテンツをレジストリーにミラーリングしません。このオプションは、ミラーリングする内容を確認するのに役立ちます。また、パッケージのサブセットのみが必要な場合に、マッピングの一覧に変更を加えることができます。次に、mapping.txt ファイルを oc image mirror コマンドで使用し、後のステップでイメージの変更済みの一覧をミラーリングできます。このフラグは、カタログからのコンテンツの高度で選択可能なミラーリングにのみ使用することが意図されています。opm index prune をインデックスイメージをプルーニングするために以前にしている場合、これはほとんどのカタログ管理のユースケースに適しています。

        出力例

        src image has index label for database path: /database/index.db
        using database path mapping: /database/index.db:/tmp/153048078
        wrote database to /tmp/153048078 
        1
        
        ...
        wrote mirroring manifests to manifests-redhat-operator-index-1614211642 
        2
        Copy to Clipboard Toggle word wrap

        1
        コマンドで生成された一時的な index.db データベースのディレクトリー。
        2
        生成される manifests ディレクトリー名を記録します。このディレクトリー名は、後の手順で使用されます。
        注記

        Red Hat Quay では、ネストされたリポジトリーはサポート対象外です。その結果、oc adm catalog mirror コマンドを実行すると、401 unauthorized エラーで失敗します。回避策として、oc adm catalog mirror コマンドを実行するときに --max-components = 2 オプションを使用して、ネストされたリポジトリーの作成を無効にすることができます。この回避策の詳細は、Unauthorized error thrown while using catalog mirror command with Quay registry のナレッジソリューション記事を参照してください。

    • オプション B: ミラーレジストリーが非接続ホストにある場合 は、以下のアクションを実行します。

      1. ネットワークアクセスが無制限のワークステーションで以下のコマンドを実行し、コンテンツをローカルファイルにミラーリングします。

        $ oc adm catalog mirror \
            <index_image> \
        1
        
            file:///local/index \
        2
        
            [-a ${REG_CREDS}] \
            [--insecure]
        Copy to Clipboard Toggle word wrap
        1
        ミラーリングするカタログのインデックスイメージを指定します。たとえば、これは以前に作成したプルーニングされたインデックスイメージ、または registry.redhat.io/redhat/redhat-operator-index:v4.6 などのデフォルトカタログのソースインデックスイメージのいずれかである可能性があります。
        2
        現在のディレクトリーのローカルファイルにコンテンツをミラーリングします。

        出力例

        ...
        info: Mirroring completed in 5.93s (5.915MB/s)
        wrote mirroring manifests to manifests-my-index-1614985528 
        1
        
        
        To upload local images to a registry, run:
        
        	oc adm catalog mirror file://local/index/myrepo/my-index:v1 REGISTRY/REPOSITORY 
        2
        Copy to Clipboard Toggle word wrap

        1
        生成される manifests ディレクトリー名を記録します。このディレクトリー名は、後の手順で使用されます。
        2
        提供されたインデックスイメージをベースとする、拡張された file:// パスを記録します。このパスは、後のステップで使用されます。
      2. 現在のディレクトリーに生成される v2/ ディレクトリーをリムーバブルメディアにコピーします。
      3. メディアを物理的に削除して、これをミラーレジストリーにアクセスできる非接続環境のホストに割り当てます。
      4. ミラーレジストリーに認証が必要な場合は、非接続環境のホストで以下のコマンドを実行し、レジストリーにログインします。

        $ podman login <mirror_registry>
        Copy to Clipboard Toggle word wrap
      5. v2/ ディレクトリーを含む親ディレクトリーから以下のコマンドを実行し、ローカルファイルからミラーレジストリーにイメージをアップロードします。

        $ oc adm catalog mirror \
            file://local/index/<repo>/<index_image>:<tag> \
        1
        
            <mirror_registry>:<port>/<namespace> \
        2
        
            [-a ${REG_CREDS}] \
            [--insecure]
        Copy to Clipboard Toggle word wrap
        1
        直前のコマンド出力の file:// パスを指定します。
        2
        Operator コンテンツをミラーリングするターゲットレジストリーおよび namespace の完全修飾ドメイン名 (FQDN) を指定します。ここで、<namespace> はレジストリーの既存の namespace です。たとえば、olm-mirror namespace を作成し、ミラーリングされたすべてのコンテンツをプッシュすることができます。
        注記

        Red Hat Quay では、ネストされたリポジトリーはサポート対象外です。その結果、oc adm catalog mirror コマンドを実行すると、401 unauthorized エラーで失敗します。回避策として、oc adm catalog mirror コマンドを実行するときに --max-components = 2 オプションを使用して、ネストされたリポジトリーの作成を無効にすることができます。この回避策の詳細は、Unauthorized error thrown while using catalog mirror command with Quay registry のナレッジソリューション記事を参照してください。

  3. コンテンツをレジストリーにミラーリングした後に、現在のディレクトリーに生成される manifests ディレクトリーを検査します。

    注記

    manifests ディレクトリー名は後の手順で使用されます。

    直前の手順で同じネットワークのレジストリーにコンテンツをミラーリングする場合、ディレクトリー名は以下の形式になります。

    manifests-<index_image_name>-<random_number>
    Copy to Clipboard Toggle word wrap

    直前の手順で非接続ホストのレジストリーにコンテンツをミラーリングする場合、ディレクトリー名は以下の形式になります。

    manifests-index/<namespace>/<index_image_name>-<random_number>
    Copy to Clipboard Toggle word wrap

    manifests ディレクトリーには以下のファイルが含まれており、これらの一部にはさらに変更が必要になる場合があります。

    • catalogSource.yaml ファイルは、インデックスイメージタグおよび他の関連するメタデータで事前に設定される CatalogSource オブジェクトの基本的な定義です。このファイルは、カタログソースをクラスターに追加するためにそのまま使用したり、変更したりできます。

      重要

      ローカルファイルにコンテンツをミラーリングする場合は、catalogSource.yaml ファイルを変更して metadata.name フィールドからバックスラッシュ (/) 文字を削除する必要があります。または、オブジェクトの作成を試みると、invalid resource name (無効なリソース名) を示すエラーを出して失敗します。

    • これにより、imageContentSourcePolicy.yaml ファイルは ImageContentSourcePolicy オブジェクトを定義します。このオブジェクトは、ノードを Operator マニフェストおよびミラーリングされたレジストリーに保存されるイメージ参照間で変換できるように設定します。

      注記

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

    • mapping.txt ファイルには、すべてのソースイメージが含まれ、これはそれらのイメージをターゲットレジストリー内のどこにマップするかを示します。このファイルは oc image mirror コマンドと互換性があり、ミラーリング設定をさらにカスタマイズするために使用できます。

      重要

      ミラーリングのプロセスで --manifests-only フラグを使用しており、ミラーリングするパッケージのサブセットをさらにトリミングするには、mapping.txt ファイルの変更および oc image mirror コマンドでのファイルの使用について、Package Manifest Format カタログイメージのミラーリングの手順を参照してください。これらの追加のアクションを実行した後に、この手順を続行できます。

  4. 非接続クラスターへのアクセスのあるホストで、以下のコマンドを実行して manifests ディレクトリーで imageContentSourcePolicy.yaml ファイルを指定し、ImageContentSourcePolicy オブジェクトを作成します。

    $ oc create -f <path/to/manifests/dir>/imageContentSourcePolicy.yaml
    Copy to Clipboard Toggle word wrap

    ここで、<path/to/manifests/dir> は、ミラーリングされたコンテンツについての manifests ディレクトリーへのパスです。

ミラーリングされたインデックスイメージおよび Operator コンテンツを参照する CatalogSource を作成できるようになりました。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat