非接続インストールミラーリング


OpenShift Container Platform 4.16

インストールコンテナーイメージのミラーリング

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、切断された OpenShift Container Platform インストールのインストールコンテナーイメージをミラーリングする方法を説明します。

第1章 非接続インストールミラーリングについて

クラスター管理者は、ミラーレジストリーを使用して、クラスターが外部コンテンツに対する組織の制御を満たすコンテナーイメージのみを使用するようにできます。

1.1. 切断された環境にクラスターをインストールするためのミラーレジストリー

クラスターをインストールしてプロビジョニングする前に、必要なコンテナーイメージを非接続環境にミラーリングする必要があります。これらのコンテナーイメージをミラーリングするには、ミラーレジストリーが必要です。ミラーレジストリーを作成および使用するには、以下のオプションを検討してください。

  • Red Hat Quay などのコンテナーイメージレジストリーがすでにある場合は、これをミラーレジストリーとして使用できます。レジストリーがまだない場合には、作成する必要があります。
  • レジストリーの確立後に、ミラーリングツールが必要になります。OpenShift Container Platform イメージリポジトリーを非接続環境でミラーレジストリーにミラーリングするには、oc-mirror OpenShift CLI (oc)プラグインを使用できます。oc-mirror プラグインは、必要なすべての OpenShift Container Platform コンテンツおよびその他のイメージをミラーレジストリーにミラーリングする単一のツールです。oc-mirror プラグインは、ミラーリングに推奨される方法です。
  • または、oc adm コマンドを使用して、OpenShift Container Platform のリリースおよびカタログイメージをミラーリングすることもできます。

第2章 Red Hat OpenShift 導入用のミラーレジストリーを使用したミラーレジストリーの作成

Red Hat OpenShift 導入用のミラーレジストリー は、切断されたインストールに必要な OpenShift Container Platform のコンテナーイメージのミラーリングターゲットとして使用できる小規模で合理化されたコンテナーレジストリーです。

Red Hat Quay などのコンテナーイメージレジストリーがすでにある場合は、このセクションをスキップして、OpenShift Container Platform イメージリポジトリーのミラーリング に直接進むことができます。

重要

Red Hat Openshift 導入 用のミラーレジストリー は、Red Hat Quay の実稼働デプロイメントの代替としての使用を目的としていません。

2.1. 前提条件

  • OpenShift Container Platform サブスクリプション
  • Podman 3.4.2 以降および OpenSSL がインストールされている Red Hat Enterprise Linux (RHEL) 8 および 9。
  • Red Hat Quay サービスの完全修飾ドメイン名。DNS サーバーを介して解決する必要があります。
  • ターゲットホストでのキーベースの SSH 接続。SSH キーは、ローカルインストール用に自動的に生成されます。リモートホストの場合は、独自の SSH キーを生成する必要があります。
  • vCPU 2 つ以上。
  • RAM 8 GB。
  • OpenShift Container Platform 4.16 リリースイメージの場合は約 12 GB、OpenShift Container Platform 4.16 リリースイメージおよび OpenShift Container Platform 4.16 Red Hat Operator イメージの場合は約 358 GB。

    重要
    • ストリームあたり最大 1 TB 以上が推奨されます。
    • これらの要件は、リリースイメージと Operator イメージのみを使用したローカルテスト結果に基づいています。ストレージ要件は、組織のニーズによって異なります。たとえば、複数の z-stream をミラーリングする場合は、より多くのスペースが必要になることがあります。標準の Red Hat Quay 機能 または適切な API コールアウト を使用して不要なイメージを削除し、スペースを解放できます。

2.2. Red Hat OpenShift 導入用のミラーレジストリー

OpenShift Container Platform の切断されたデプロイメントの場合に、クラスターのインストールを実行するためにコンテナーレジストリーが必要です。このようなクラスターで実稼働レベルのレジストリーサービスを実行するには、別のレジストリーデプロイメントを作成して最初のクラスターをインストールする必要があります。Red Hat Openshift 導入用のミラーレジストリー は、このニーズに対応し、すべての OpenShift サブスクリプションに含まれています。これは、OpenShift コンソールの ダウンロード ページからダウンロードできます。

Red Hat Openshift 導入用のミラーレジストリー を使用すると、ユーザーは mirror -registry コマンドラインインターフェイス(CLI)ツールを使用して、Red Hat Quay の小規模バージョンとその必要なコンポーネントをインストールできます。Red Hat Openshift 導入用のミラーレジストリー は、事前設定されたローカルストレージとローカルデータベースを使用して自動的にデプロイされます。また、このレジストリーには、自動生成されたユーザー認証情報とアクセス許可も含まれており、単一の入力セットを使用するだけで開始でき、追加の設定を選択する必要はありません。

Red Hat Openshift 導入用のミラーレジストリー は、事前に決定されたネットワーク設定を提供し、成功時にデプロイされたコンポーネントの認証情報とアクセス URL を報告します。完全修飾ドメイン名(FQDN)サービス、スーパーユーザー名とパスワード、カスタム TLS 証明書などのオプションの設定入力のセットも少しだけ含まれています。これにより、ユーザーはコンテナーレジストリーを利用できるため、制限されたネットワーク環境で OpenShift Container Platform を実行するときに、すべての OpenShift Container Platform リリースコンテンツのオフラインミラーを簡単に作成できます。

インストール環境で別のコンテナー レジストリーがすでに使用可能な場合、Red Hat Openshift 導入用のミラー レジストリー の使用はオプションです。

2.2.1. Red Hat OpenShift のミラーレジストリーに関する制限

以下の制限は、Red Hat Openshift 導入用のミラーレジストリー に適用されます

  • Red Hat Openshift 導入用のミラーレジストリー は高可用性レジストリーではなく、ローカルファイルシステムストレージのみがサポートされています。Red Hat Quay や OpenShift Container Platform の内部イメージレジストリーを置き換えることを目的としたものではありません。
  • Red Hat Openshift 導入 用のミラーレジストリー は、Red Hat Quay の実稼働デプロイメントの代替としての使用を目的としていません。
  • Red Hat Openshift 導入用のミラーレジストリー は、リリースイメージや Red Hat Operator イメージなど、切断された OpenShift Container Platform クラスターのインストールに必要なイメージのホスティングでのみサポートされます。Red Hat Enterprise Linux (RHEL)マシンでローカルストレージを使用し、RHEL でサポートされているストレージは、Red Hat Openshift 導入用のミラーレジストリー でサポートされます

    注記

    Red Hat Openshift 導入用のミラーレジストリー はローカルストレージを使用するため、イメージのミラーリング時に消費されるストレージの使用を認識し、Red Hat Quay のガベージコレクション機能を使用して潜在的な問題を軽減する必要があります。この機能の詳細は、「Red Hat Quay ガベージコレクション」を参照してください。

  • ブートストラップ目的で Red Hat OpenShift のミラーレジストリー にプッシュされた Red Hat 製品イメージの サポートは、それぞれの製品の有効なサブスクリプションでカバーされます。ブートストラップエクスペリエンスをさらに有効にする例外のリストは、セルフマネージド Red Hat OpenShift のサイジングおよびサブスクリプションガイド に記載されています。
  • お客様が作成したコンテンツは、Red Hat Openshift 導入用のミラーレジストリー でホストしないでください
  • クラスターのフリートの更新時に単一障害点を生み出す可能性があるため、複数のクラスターで Red Hat Openshift 導入用のミラーレジストリー を使用することは推奨されません。代わりに、Red Hat Openshift 導入用のミラーレジストリー を使用して、OpenShift Container Platform コンテンツを他のクラスターに提供できる Red Hat Quay などの実稼働レベルの高可用性レジストリーをホストできるクラスターをインストールします。

2.3. Red Hat OpenShift 導入用のミラーレジストリーを使用したローカルホストでのミラーリング

この手順では、 mirror-registry インストーラーツールを使用して、Red Hat Openshift 導入用 のミラーレジストリー をローカルホストにインストールする方法を説明します。このツールを使用することで、ユーザーは、OpenShift Container Platform イメージのミラーを保存する目的で、ポート 443 で実行されるローカルホストレジストリーを作成できます。

注記

mirror-registry CLI ツールを使用して Red Hat Openshift 導入用 のミラーレジストリー をインストールすると、マシンにいくつかの変更が加えられます。インストール後、インストールファイル、ローカルストレージ、および設定バンドルを含む $HOME/quay-install ディレクトリーが作成されます。デプロイ先がローカルホストである場合には、信頼できる SSH キーが生成され、コンテナーのランタイムが永続的になるようにホストマシン上の systemd ファイルが設定されます。さらに、init という名前の初期ユーザーが、自動生成されたパスワードを使用して作成されます。すべてのアクセス認証情報は、インストール操作の最後に出力されます。

手順

  1. OpenShift コンソールのダウンロードページにある Red Hat Openshift 導入用のミラーレジストリーの最新バージョンは、mirror-registry.tar.gz パッケージをダウンロードし ください。
  2. mirror-registry ツールを使用して、現在のユーザーアカウントでローカルホストに Red Hat Openshift 導入用 のミラーレジストリー をインストールします。使用可能なフラグの完全なリストは、「Red Hat OpenShift フラグのミラーレジストリー」を参照してください。

    $ ./mirror-registry install \
      --quayHostname <host_example_com> \
      --quayRoot <example_directory_name>
    Copy to Clipboard Toggle word wrap
  3. インストール時に生成されたユーザー名とパスワードを使用して、次のコマンドを実行してレジストリーにログインします。

    $ podman login -u init \
      -p <password> \
      <host_example_com>:8443> \
      --tls-verify=false 
    1
    Copy to Clipboard Toggle word wrap
    1
    生成された rootCA 証明書を信頼するようにシステムを設定して、--tls-verify=false の実行を回避できます。詳細は、「Red Hat Quay の生成」および「認証局を信頼するようにシステムを設定する」を参照してください。
    注記

    インストール後、https:// <host.example.com>:8443 の UI にアクセスしてログインすることもできます。

  4. ログイン後、OpenShift Container Platform イメージをミラーリングできます。必要に応じて、このドキュメントの「OpenShift Container Platform イメージリポジトリーのミラーリング」または、「非接続クラスターで使用する Operator カタログのミラーリング」セクションを参照してください。

    注記

    ストレージレイヤーの問題が原因で Red Hat Openshift 導入用のミラーレジストリー で保存されたイメージに問題がある場合は、OpenShift Container Platform イメージを再ミラーリングするか、より安定したストレージにミラーレジストリーを再インストールできます。

2.4. ローカルホストからの Red Hat OpenShift 導入用のミラーレジストリーの更新

この手順では、upgrade コマンドを使用してローカルホストから Red Hat Openshift 導入用のミラーレジストリー を更新する方法について説明します。最新バージョンに更新することで、新機能、バグ修正およびセキュリティー脆弱性の修正が保証されます。

重要

バージョン 1 からバージョン 2 にアップグレードする場合は、次の制約に注意してください。

  • SQLite では複数の書き込みが許可されていないため、ワーカー数が 1 に設定されます。
  • mirror registry for Red Hat OpenShift のユーザーインターフェイス (UP) を使用しないでください。
  • アップグレード中は sqlite-storage Podman ボリュームにアクセスしないでください。
  • アップグレードプロセス中にミラーレジストリーが再起動されるため、ミラーレジストリーのダウンタイムが断続的に発生します。
  • PostgreSQL のデータは、復旧用に /$HOME/quay-install/quay-postgres-backup/ ディレクトリーにバックアップされます。

前提条件

  • Red Hat Openshift 導入用のミラーレジストリー をローカルホストにインストールしている。

手順

  • Red Hat OpenShift のミラーレジストリー を 1.3 → 2.y にアップグレードし、インストールディレクトリーが /etc/quay-install のデフォルトである場合は、次のコマンドを入力できます。

    $ sudo ./mirror-registry upgrade -v
    Copy to Clipboard Toggle word wrap
    注記
    • Red Hat OpenShift のミラーレジストリー は、Red Hat Quay ストレージ、Postgres データ、および /etc/quay-install データの Podman ボリュームを新しい $HOME/quay-install の場所に移行します。これにより、今後のアップグレード時 に the- quayRoot フラグなしで Red Hat OpenShift のミラーレジストリー を使用できます。
    • ./ mirror-registry upgrade -v フラグを使用して Red Hat Openshift のミラーレジストリー をアップグレードするユーザーは、ミラーレジストリーの作成時に使用したものと同じ認証情報を含める必要があります。たとえば、Red Hat Openshift 導入用のミラーレジストリー を with --quayHostname <host_example_com > および --quayRoot <example_directory_name> でインストールした場合、ミラーレジストリーを適切にアップグレードするには、その文字列を含める必要があります。
  • mirror registry for Red Hat OpenShift を 1.3 → 2.y にアップグレードする場合、1.y デプロイメントでカスタムの quay 設定とストレージディレクトリーを使用していた場合は、--quayRoot フラグと --quayStorage フラグを渡す必要があります。以下に例を示します。

    $ sudo ./mirror-registry upgrade --quayHostname <host_example_com> --quayRoot <example_directory_name>  --quayStorage <example_directory_name>/quay-storage -v
    Copy to Clipboard Toggle word wrap
  • Red Hat OpenShift のミラーレジストリー を 1.3 → 2.y にアップグレードし、カスタム SQLite ストレージパスを指定する場合は、--sqliteStorage フラグを渡す必要があります。次に例を示します。

    $ sudo ./mirror-registry upgrade --sqliteStorage <example_directory_name>/sqlite-storage -v
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、Red Hat Openshift 導入用のミラーレジストリー が更新されていることを確認します。

    $ podman ps
    Copy to Clipboard Toggle word wrap

    出力例

    registry.redhat.io/quay/quay-rhel8:v3.12.10
    Copy to Clipboard Toggle word wrap

2.5. Red Hat OpenShift 導入用のミラーレジストリーを使用したリモートホストでのミラーリング

この手順では、 mirror-registry ツールを使用して、Red Hat Openshift 導入用 のミラーレジストリー をリモートホストにインストールする方法を説明します。そうすることで、ユーザーは OpenShift Container Platform イメージのミラーを保持するレジストリーを作成できます。

注記

mirror-registry CLI ツールを使用して Red Hat Openshift 導入用 のミラーレジストリー をインストールすると、マシンにいくつかの変更が加えられます。インストール後、インストールファイル、ローカルストレージ、および設定バンドルを含む $HOME/quay-install ディレクトリーが作成されます。デプロイ先がローカルホストである場合には、信頼できる SSH キーが生成され、コンテナーのランタイムが永続的になるようにホストマシン上の systemd ファイルが設定されます。さらに、init という名前の初期ユーザーが、自動生成されたパスワードを使用して作成されます。すべてのアクセス認証情報は、インストール操作の最後に出力されます。

手順

  1. OpenShift コンソールのダウンロードページにある Red Hat Openshift 導入用のミラーレジストリーの最新バージョンは、mirror-registry.tar.gz パッケージをダウンロードし ください。
  2. mirror-registry ツールを使用して、現在のユーザーアカウントでローカルホストに Red Hat Openshift 導入用 のミラーレジストリー をインストールします。使用可能なフラグの完全なリストは、「Red Hat OpenShift フラグのミラーレジストリー」を参照してください。

    $ ./mirror-registry install -v \
      --targetHostname <host_example_com> \
      --targetUsername <example_user> \
      -k ~/.ssh/my_ssh_key \
      --quayHostname <host_example_com> \
      --quayRoot <example_directory_name>
    Copy to Clipboard Toggle word wrap
  3. インストール中に生成されたユーザー名とパスワードを使用して、次のコマンドを実行してミラーレジストリーにログインします。

    $ podman login -u init \
      -p <password> \
      <host_example_com>:8443> \
      --tls-verify=false 
    1
    Copy to Clipboard Toggle word wrap
    1
    生成された rootCA 証明書を信頼するようにシステムを設定して、--tls-verify=false の実行を回避できます。詳細は、「SSL を使用した Red Hat Quay への接続の保護」および、「認証局を信頼するようにシステムを設定する」を参照してください。
    注記

    インストール後、https:// <host.example.com>:8443 の UI にアクセスしてログインすることもできます。

  4. ログイン後、OpenShift Container Platform イメージをミラーリングできます。必要に応じて、このドキュメントの「OpenShift Container Platform イメージリポジトリーのミラーリング」または、「非接続クラスターで使用する Operator カタログのミラーリング」セクションを参照してください。

    注記

    ストレージレイヤーの問題が原因で Red Hat Openshift 導入用のミラーレジストリー で保存されたイメージに問題がある場合は、OpenShift Container Platform イメージを再ミラーリングするか、より安定したストレージにミラーレジストリーを再インストールできます。

2.6. リモートホストからの Red Hat OpenShift 導入用のミラーレジストリーの更新

この手順では、upgrade コマンドを使用してリモートホストから Red Hat Openshift 導入用のミラーレジストリー を更新する方法について説明します。最新バージョンへの更新により、バグ修正およびセキュリティー脆弱性の修正が確保されます。

重要

バージョン 1 からバージョン 2 にアップグレードする場合は、次の制約に注意してください。

  • SQLite では複数の書き込みが許可されていないため、ワーカー数が 1 に設定されます。
  • mirror registry for Red Hat OpenShift のユーザーインターフェイス (UP) を使用しないでください。
  • アップグレード中は sqlite-storage Podman ボリュームにアクセスしないでください。
  • アップグレードプロセス中にミラーレジストリーが再起動されるため、ミラーレジストリーのダウンタイムが断続的に発生します。
  • PostgreSQL のデータは、復旧用に /$HOME/quay-install/quay-postgres-backup/ ディレクトリーにバックアップされます。

前提条件

  • Red Hat Openshift 導入用のミラーレジストリー をリモートホストにインストールしている。

手順

  • Red Hat Openshift 導入用のミラーレジストリー をリモートホストから アップグレードするには、以下のコマンドを入力します。

    $ ./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key
    Copy to Clipboard Toggle word wrap
    注記

    ./ mirror-registry upgrade -v フラグを使用して Red Hat Openshift 導入用 のミラーレジストリー をアップグレードするユーザーは、ミラーレジストリーの作成時に使用したものと同じ認証情報を含める必要があります。たとえば、Red Hat Openshift 導入用のミラーレジストリー を with --quayHostname <host_example_com > および --quayRoot <example_directory_name> でインストールした場合、ミラーレジストリーを適切にアップグレードするには、その文字列を含める必要があります。

  • Red Hat OpenShift のミラーレジストリー を 1.3 → 2.y にアップグレードし、カスタム SQLite ストレージパスを指定する場合は、--sqliteStorage フラグを渡す必要があります。次に例を示します。

    $ ./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key --sqliteStorage <example_directory_name>/quay-storage
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、Red Hat Openshift 導入用のミラーレジストリー が更新されていることを確認します。

    $ podman ps
    Copy to Clipboard Toggle word wrap

    出力例

    registry.redhat.io/quay/quay-rhel8:v3.12.10
    Copy to Clipboard Toggle word wrap

2.7. Red Hat OpenShift SSL/TLS 証明書のミラーレジストリーの置き換え

場合によっては、Red Hat Openshift 導入用のミラーレジストリー の SSL/TLS 証明書を更新する必要がある場合があります。これは、以下のシナリオで役に立ちます。

  • Red Hat OpenShift 証明書の現在のミラーレジストリー を置き換える場合。
  • Red Hat OpenShift インストールの以前のミラーレジストリー と同じ証明書を使用している場合。
  • Red Hat OpenShift 証明書のミラーレジストリー を 定期的に更新する場合。

以下の手順を使用して、Red Hat OpenShift SSL/TLS 証明書のミラーレジストリー を置き換えます。

手順

  1. 以下のコマンドを実行して、Red Hat Openshift 導入用のミラーレジストリー をインストールします

    $ ./mirror-registry install \
    --quayHostname <host_example_com> \
    --quayRoot <example_directory_name>
    Copy to Clipboard Toggle word wrap

    これにより、Red Hat Openshift 導入用のミラーレジストリー$HOME/quay-install ディレクトリーにインストールされます。

  2. 新しい認証局 (CA) バンドルを準備し、新しい ssl.key および ssl.crt キーファイルを生成します。詳細は、Red Hat Quay の SSL および TLS の設定 を参照してください。
  3. 次のコマンドを入力して、/$HOME/quay-install に環境変数 (QUAY など) を割り当てます。

    $ export QUAY=/$HOME/quay-install
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを入力して、新しい ssl.crt ファイルを /$HOME/quay-install ディレクトリーにコピーします。

    $ cp ~/ssl.crt $QUAY/quay-config
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを入力して、新しい ssl.key ファイルを /$HOME/quay-install ディレクトリーにコピーします。

    $ cp ~/ssl.key $QUAY/quay-config
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを入力して、quay-app アプリケーション Pod を再起動します。

    $ systemctl --user restart quay-app
    Copy to Clipboard Toggle word wrap

2.8. Red Hat OpenShift 導入用のミラーレジストリーのアンインストール

以下の手順を使用して、ローカルホストから Red Hat Openshift 導入用のミラーレジストリー をアンインストールします。

前提条件

  • Red Hat Openshift 導入用のミラーレジストリー をローカルホストにインストールしている。

手順

  • 次のコマンドを実行して、ローカルホスト から Red Hat Openshift 導入用のミラーレジストリー をアンインストールします。

    $ ./mirror-registry uninstall -v \
      --quayRoot <example_directory_name>
    Copy to Clipboard Toggle word wrap
    注記
    • Red Hat Openshift 導入用のミラーレジストリー を削除すると、 削除前にユーザーにプロンプトが表示されます。--autoApprove を使用して、このプロンプトをスキップできます。
    • アンインストール時に、the-quayRoot フラグを使用して Red Hat Openshift 導入用のミラーレジストリー をインストールするユーザーには、 --quayRoot フラグを含める必要があります。たとえば、Red Hat Openshift 導入用のミラーレジストリー with- quayRoot example_directory_name をインストールしている場合、ミラーレジストリーを適切にアンインストールするには、その文字列を含める必要があります。

2.9. mirror registry for Red Hat OpenShift のフラグ

Red Hat Openshift 導入用のミラーレジストリー では、以下のフラグを使用できます

Expand
Flags説明

--autoApprove

対話型プロンプトを無効にするブール値。true に設定すると、ミラーレジストリーをアンインストールするときに quayRoot ディレクトリーが自動的に削除されます。指定しない場合には、デフォルトは false に設定されます。

--initPassword

Quay のインストール中に作成された init ユーザーのパスワード。空白を含まず、8 文字以上にする必要があります。

--initUser string

初期ユーザーのユーザー名を表示します。指定しない場合、デフォルトで init になります。

--no-color-c

インストール、アンインストール、およびアップグレードコマンドの実行時に、ユーザーがカラーシーケンスを無効にして、それを Ansible に伝播できるようにします。

--quayHostname

クライアントがレジストリーへの接続に使用するミラーレジストリーの完全修飾ドメイン名。Quay config.yamlSERVER_HOSTNAME に相当します。DNS で解決する必要があります。指定しない場合は、デフォルトは <targetHostname>:8443 です。[1]

--quayStorage

Quay 永続ストレージデータが保存されるフォルダー。デフォルトは quay-storage Podman ボリュームです。アンインストールには root 権限が必要です。

--quayRoot-r

rootCA.keyrootCA.pemrootCA.srl 証明書など、コンテナーイメージレイヤーと設定データが保存されるディレクトリー。指定しない場合、デフォルトは $HOME/quay-install です。

--sqliteStorage

SQLite データベースデータが保存されるフォルダー。指定されていない場合は、デフォルトで sqlite-storage Podman ボリュームになります。アンインストールするには root が必要です。

--ssh-key-k

SSH ID キーのパス。指定しない場合、デフォルトは ~/.ssh/quay_installer です。

--sslCert

SSL/TLS 公開鍵/証明書へのパス。デフォルトは {quayRoot}/quay-config で、指定しない場合は自動生成されます。

--sslCheckSkip

config.yaml ファイルの SERVER_HOSTNAME に対する証明書のホスト名のチェックをスキップします。[2]

--sslKey

HTTPS 通信に使用される SSL/TLS 秘密鍵へのパス。デフォルトは {quayRoot}/quay-config で、指定しない場合は自動生成されます。

--targetHostname-H

Quay のインストール先のホスト名。デフォルトは $HOST になります。たとえば、指定していない場合にはローカルホストになります。

--targetUsername-u

SSH に使用するターゲットホストのユーザー。デフォルトは $USER です。たとえば、指定しない場合は現在のユーザーになります。

--verbose-v

デバッグログと Ansible Playbook の出力を表示します。

--version

Red Hat Openshift 導入用のミラーレジストリー のバージョンを表示します

  1. システムのパブリック DNS 名がローカルホスト名と異なる場合は、--quayHostname を変更する必要があります。さらに、--quayHostname フラグは、IP アドレスを使用したインストールをサポートしていません。ホスト名を使用してインストールする必要があります。
  2. --sslCheckSkip は、ミラーレジストリーがプロキシーの背後に設定されており、公開されているホスト名が内部の Quay ホスト名と異なる場合に使用されます。また、インストール中に、指定した Quay ホスト名に対して証明書の検証を行わない場合にも使用できます。

2.10. mirror registry for Red Hat OpenShift のリリースノート

mirror registry for Red Hat OpenShift は、非接続環境でのインストールに使用する OpenShift Container Platform の必要なコンテナーイメージをミラーリングするためのターゲットとして使用できる、小規模で効率的なコンテナーレジストリーです。

以下のリリースノートは、OpenShift Container Platform の mirror registry for Red Hat OpenShift の開発履歴を記録したものです。

2.10.1. mirror registry for Red Hat OpenShift 2.0 のリリースノート

以下のセクションでは、mirror registry for Red Hat OpenShift の 2.0 リリースの詳細をそれぞれ説明します。

2.10.1.1. Mirror registry for Red Hat OpenShift 2.0.8

発行日: 2025 年 10 月 16 日

Mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.12 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.2. Mirror registry for Red Hat OpenShift 2.0.7

発行日: 2025 年 7 月 14 日

Mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.10 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.3. Mirror registry for Red Hat OpenShift 2.0.6

発行日: 2025 年 4 月 28 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.8 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.4. mirror registry for Red Hat OpenShift 2.0.5

発行日: 2025 年 1 月 13 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.5 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.5. mirror registry for Red Hat OpenShift 2.0.4

発行日: 2025 年 1 月 6 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.4 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.6. mirror registry for Red Hat OpenShift 2.0.3

発行日: 2024 年 11 月 25 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.3 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.7. mirror registry for Red Hat OpenShift 2.0.2

発行日: 2024 年 10 月 31 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.2 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.8. mirror registry for Red Hat OpenShift 2.0.1

発行日: 2024 年 9 月 26 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.1 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

2.10.1.9. mirror registry for Red Hat OpenShift 2.0.0

発行日: 2024 年 9 月 3 日

mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.0 で利用できるようになりました。

mirror registry for Red Hat OpenShift には、次のアドバイザリーが提供されています。

以下の新機能は、Red Hat OpenShift 2.0.0 のミラーレジストリー で利用できます。

  • mirror registry for Red Hat OpenShift のリリースに伴い、内部データベースが PostgreSQL から SQLite にアップグレードされました。その結果、データがデフォルトで sqlite-storage Podman ボリュームに保存されるようになり、tarball 全体のサイズが 300 MB 削減されました。

    新規インストールではデフォルトで SQLite が使用されます。バージョン 2.0 にアップグレードする前に、環境に応じて「ローカルホストからの mirror registry for Red Hat OpenShift の更新」または「リモートホストからの mirror registry for Red Hat OpenShift の更新」を参照してください。

  • 新しい機能フラグ --sqliteStorage が追加されました。このフラグを使用すると、SQLite データベースのデータを保存する場所を手動で設定できます。
  • Red Hat OpenShift のミラーレジストリー が、IBM Power および IBM Z アーキテクチャー (s390x および ppc64le) で利用できるようになりました。

2.10.2. mirror registry for Red Hat OpenShift 1.3 のリリースノート

mirror registry for Red Hat OpenShift 1.3 のリリースノートを確認するには、mirror registry for Red Hat OpenShift 1.3 のリリースノート を参照してください。

2.10.3. mirror registry for Red Hat OpenShift 1.2 のリリースノート

mirror registry for Red Hat OpenShift 1.2 のリリースノートを確認するには、mirror registry for Red Hat OpenShift 1.2 のリリースノート を参照してください。

2.10.4. mirror registry for Red Hat OpenShift 1.1 のリリースノート

mirror registry for Red Hat OpenShift 1.1 のリリースノートを確認するには、mirror registry for Red Hat OpenShift 1.1 のリリースノート を参照してください。

2.11. Red Hat OpenShift のミラーレジストリーのトラブルシューティング

Red Hat Openshift 導入用のミラーレジストリー のトラブルシューティングを支援するため に、ミラーレジストリーによってインストールされた systemd サービスのログを収集できます。次のサービスがインストールされます。

  • quay-app.service
  • quay-postgres.service
  • quay-redis.service
  • quay-pod.service

前提条件

  • Red Hat Openshift 導入用のミラーレジストリー がインストールされて いる。

手順

  • root 権限で Red Hat OpenShift のミラーレジストリー をインストールした場合は、次のコマンドを入力して systemd サービスのステータス情報を取得できます。

    $ sudo systemctl status <service>
    Copy to Clipboard Toggle word wrap
  • 標準ユーザーとして Red Hat OpenShift のミラーレジストリー をインストールした場合は、次のコマンドを入力して systemd サービスのステータス情報を取得できます。

    $ systemctl --user status <service>
    Copy to Clipboard Toggle word wrap

2.12. 関連情報

第3章 非接続インストールのイメージのミラーリング

クラスターが、外部コンテンツに対する組織の制限条件を満たすコンテナーイメージのみを使用するようにできますネットワークが制限された環境でプロビジョニングするインフラストラクチャーにクラスターをインストールする前に、必要なコンテナーイメージをその環境にミラーリングする必要があります。コンテナーイメージをミラーリングするには、ミラーリング用のレジストリーが必要です。

重要

必要なコンテナーイメージを取得するには、インターネットへのアクセスが必要です。この手順では、ネットワークとインターネットの両方にアクセスできるミラーホストにミラーレジストリーを配置します。ミラーホストにアクセスできない場合は、非接続クラスターで使用する Operator カタログのミラーリング を使用して、ネットワークの境界を越えて移動できるデバイスにイメージをコピーします。

3.1. 前提条件

3.2. ミラーレジストリーについて

OpenShift Container Platform のインストールとその後の製品更新に必要なイメージを、Red Hat Quay、JFrog Artifactory、Sonatype Nexus リポジトリー、Harbor などのコンテナーミラーレジストリーにミラーリングできます。大規模なコンテナーレジストリーにアクセスできない場合は、OpenShift Container Platform サブスクリプションに含まれる小規模なコンテナーレジストリーである Red Hat Openshift 導入用のミラー レジストリー を使用できます。

Docker v2-2 をサポートする任意のコンテナーレジストリー(Red Hat Quay、Red Hat Openshift 導入 用のミラーレジストリー、Sonatype Nexus リポジトリー、Harbor など)を使用できます。選択したレジストリーに関係なく、インターネット上の Red Hat がホストするサイトから分離されたイメージレジストリーにコンテンツをミラーリングする手順は同じです。コンテンツをミラーリングした後に、各クラスターをミラーレジストリーからこのコンテンツを取得するように設定します。

重要

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

Red Hat Openshift 導入用のミラーレジストリー以外のコンテナーレジストリー を選択する場合は、プロビジョニングするクラスター内のすべてのマシンから到達可能である必要があります。レジストリーに到達できない場合、インストール、更新、またはワークロードの再配置などの通常の操作が失敗する可能性があります。そのため、ミラーレジストリーは可用性の高い方法で実行し、ミラーレジストリーは少なくとも OpenShift Container Platform クラスターの実稼働環境の可用性の条件に一致している必要があります。

ミラーレジストリーを OpenShift Container Platform イメージで設定する場合、2 つのシナリオを実行することができます。インターネットとミラーレジストリーの両方にアクセスできるホストがあり、クラスターノードにアクセスできない場合は、そのマシンからコンテンツを直接ミラーリングできます。このプロセスは、connected mirroring (接続ミラーリング) と呼ばれます。このようなホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを制限された環境に配置する必要があります。このプロセスは、disconnected mirroring (非接続ミラーリング) と呼ばれます。

ミラーリングされたレジストリーの場合は、プルされたイメージのソースを表示するには、CRI-O ログで Trying to access のログエントリーを確認する必要があります。ノードで crictl images コマンドを使用するなど、イメージのプルソースを表示する他の方法では、イメージがミラーリングされた場所からプルされている場合でも、ミラーリングされていないイメージ名を表示します。

注記

Red Hat は、OpenShift Container Platform を使用してサードパーティーのレジストリーをテストしません。

関連情報

CRI-O ログを表示してイメージソースを表示する方法の詳細は、Viewing the image pull source を参照してください。

3.3. ミラーホストの準備

ミラー手順を実行する前に、ホストを準備して、コンテンツを取得し、リモートの場所にプッシュできるようにする必要があります。

3.3.1. OpenShift CLI のインストール

コマンドラインインターフェイスを使用して OpenShift Container Platform と対話するために OpenShift CLI (oc) をインストールすることができます。oc は Linux、Windows、または macOS にインストールできます。

重要

以前のバージョンの oc をインストールしている場合、これを使用して OpenShift Container Platform 4.16 のすべてのコマンドを実行することはできません。新しいバージョンの oc をダウンロードしてインストールしてください。

3.3.1.1. Linux への OpenShift CLI のインストール

以下の手順を使用して、OpenShift CLI (oc) バイナリーを Linux にインストールできます。

手順

  1. Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
  2. Product Variant ドロップダウンリストからアーキテクチャーを選択します。
  3. バージョン ドロップダウンリストから適切なバージョンを選択します。
  4. OpenShift v4.16 Linux Clients エントリーの横にある Download Now をクリックして、ファイルを保存します。
  5. アーカイブを展開します。

    $ tar xvf <file>
    Copy to Clipboard Toggle word wrap
  6. oc バイナリーを、PATH にあるディレクトリーに配置します。

    PATH を確認するには、以下のコマンドを実行します。

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

検証

  • OpenShift CLI のインストール後に、oc コマンドを使用して利用できます。

    $ oc <command>
    Copy to Clipboard Toggle word wrap
3.3.1.2. Windows への OpenShift CLI のインストール

以下の手順を使用して、OpenShift CLI (oc) バイナリーを Windows にインストールできます。

手順

  1. Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
  2. バージョン ドロップダウンリストから適切なバージョンを選択します。
  3. OpenShift v4.16 Windows Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
  4. ZIP プログラムでアーカイブを展開します。
  5. oc バイナリーを、PATH にあるディレクトリーに移動します。

    PATH を確認するには、コマンドプロンプトを開いて以下のコマンドを実行します。

    C:\> path
    Copy to Clipboard Toggle word wrap

検証

  • OpenShift CLI のインストール後に、oc コマンドを使用して利用できます。

    C:\> oc <command>
    Copy to Clipboard Toggle word wrap
3.3.1.3. macOS への OpenShift CLI のインストール

以下の手順を使用して、OpenShift CLI (oc) バイナリーを macOS にインストールできます。

手順

  1. Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
  2. バージョン ドロップダウンリストから適切なバージョンを選択します。
  3. OpenShift v4.16 macOS Clients エントリーの横にある Download Now をクリックして、ファイルを保存します。

    注記

    macOS arm64 の場合は、OpenShift v4.16 macOS arm64 Client エントリーを選択します。

  4. アーカイブを展開し、解凍します。
  5. oc バイナリーをパスにあるディレクトリーに移動します。

    PATH を確認するには、ターミナルを開き、以下のコマンドを実行します。

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

検証

  • oc コマンドを使用してインストールを確認します。

    $ oc <command>
    Copy to Clipboard Toggle word wrap

3.4. イメージのミラーリングを可能にする認証情報の設定

Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。

警告

クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。

警告

このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。

前提条件

  • 非接続環境で使用するミラーレジストリーを設定した。
  • イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
  • イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。

手順

インストールホストで以下の手順を実行します。

  1. registry.redhat.io プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。
  2. JSON 形式でプルシークレットのコピーを作成します。

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 
    1
    Copy to Clipboard Toggle word wrap
    1
    プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。

    ファイルの内容は以下の例のようになります。

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap
  3. ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。

    $ echo -n '<user_name>:<password>' | base64 -w0 
    1
    
    BGVtbYk3ZHAtqXs=
    Copy to Clipboard Toggle word wrap
    1
    <user_name> および <password> には、レジストリーに設定したユーザー名およびパスワードを指定します。
  4. JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。

      "auths": {
        "<mirror_registry>": { 
    1
    
          "auth": "<credentials>", 
    2
    
          "email": "you@example.com"
        }
      },
    Copy to Clipboard Toggle word wrap
    1
    ミラーレジストリーがコンテンツを提供するために使用するレジストリーのドメイン名およびポート (オプション) を指定します。例: registry.example.com または registry.example.com:8443
    2
    ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードを指定します。

    ファイルは以下の例のようになります。

    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "you@example.com"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

3.5. OpenShift Container Platform イメージリポジトリーのミラーリング

クラスターのインストールまたはアップグレード時に使用するために、OpenShift Container Platform イメージリポジトリーをお使いのレジストリーにミラーリングします。

前提条件

  • ミラーホストがインターネットにアクセスできる。
  • ネットワークが制限された環境で使用するミラーレジストリーを設定し、設定した証明書および認証情報にアクセスできる。
  • Red Hat OpenShift Cluster Manager からプルシークレット をダウンロードし、ミラーリポジトリーへの認証を組み込むように変更している。
  • 自己署名証明書を使用する場合は、証明書にサブジェクトの別名を指定しています。

手順

ミラーホストで以下の手順を実行します。

  1. OpenShift Container Platform ダウンロード ページを確認し、インストールする必要のある OpenShift Container Platform のバージョンを判別し、Repository Tags ページで対応するタグを判別します。
  2. 必要な環境変数を設定します。

    1. リリースバージョンをエクスポートします。

      $ OCP_RELEASE=<release_version>
      Copy to Clipboard Toggle word wrap

      <release_version> について、インストールする OpenShift Container Platform のバージョンに対応するタグを指定します (例: 4.5.4)。

    2. ローカルレジストリー名とホストポートをエクスポートします。

      $ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
      Copy to Clipboard Toggle word wrap

      <local_registry_host_name> には、ミラーレジストリーのレジストリードメイン名を指定し、<local_registry_host_port> には、コンテンツの送信に使用するポートを指定します。

    3. ローカルリポジトリー名をエクスポートします。

      $ LOCAL_REPOSITORY='<local_repository_name>'
      Copy to Clipboard Toggle word wrap

      <local_repository_name> には、ocp4/openshift4 などのレジストリーに作成するリポジトリーの名前を指定します。

    4. ミラーリングするリポジトリーの名前をエクスポートします。

      $ PRODUCT_REPO='openshift-release-dev'
      Copy to Clipboard Toggle word wrap

      実稼働環境のリリースの場合には、openshift-release-dev を指定する必要があります。

    5. パスをレジストリープルシークレットにエクスポートします。

      $ LOCAL_SECRET_JSON='<path_to_pull_secret>'
      Copy to Clipboard Toggle word wrap

      <path_to_pull_secret> には、作成したミラーレジストリーのプルシークレットの絶対パスおよびファイル名を指定します。

    6. リリースミラーをエクスポートします。

      $ RELEASE_NAME="ocp-release"
      Copy to Clipboard Toggle word wrap

      実稼働環境のリリースは、ocp-release を指定する必要があります。

    7. クラスターのアーキテクチャーのタイプをエクスポートします。

      $ ARCHITECTURE=<cluster_architecture> 
      1
      Copy to Clipboard Toggle word wrap
      1
      x86_64aarch64s390x、または ppc64le など、クラスターのアーキテクチャーを指定します。
    8. ミラーリングされたイメージをホストするためにディレクトリーへのパスをエクスポートします。

      $ REMOVABLE_MEDIA_PATH=<path> 
      1
      Copy to Clipboard Toggle word wrap
      1
      最初のスラッシュ (/) 文字を含む完全パスを指定します。
  3. バージョンイメージをミラーレジストリーにミラーリングします。

    • ミラーホストがインターネットにアクセスできない場合は、以下の操作を実行します。

      1. リムーバブルメディアをインターネットに接続しているシステムに接続します。
      2. ミラーリングするイメージおよび設定マニフェストを確認します。

        $ oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
             --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
             --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
             --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
        Copy to Clipboard Toggle word wrap
      3. 直前のコマンドの出力の imageContentSources セクション全体を記録します。ミラーの情報はミラーリングされたリポジトリーに一意であり、インストール時に imageContentSources セクションを install-config.yaml ファイルに追加する必要があります。
      4. イメージをリムーバブルメディア上のディレクトリーにミラーリングします。

        $ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
        Copy to Clipboard Toggle word wrap
      5. メディアをネットワークが制限された環境に移し、イメージをローカルコンテナーレジストリーにアップロードします。

        $ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} 
        1
        Copy to Clipboard Toggle word wrap
        1
        REMOVABLE_MEDIA_PATH の場合、イメージのミラーリング時に指定した同じパスを使用する必要があります。
        重要

        oc image mirror を実行すると、error: unable to retrieve source image エラーが発生する場合があります。このエラーは、イメージレジストリーに存在しなくなったイメージへの参照がイメージインデックスに含まれている場合に発生します。イメージインデックスは、それらのイメージを実行しているユーザーがアップグレードグラフの新しいポイントへのアップグレードパスを実行できるように、古い参照を保持する場合があります。一時的な回避策として、--skip-missing オプションを使用してエラーを回避し、イメージインデックスのダウンロードを続行できます。詳細は、Service Mesh Operator mirroring failed を参照してください。

    • ローカルコンテナーレジストリーがミラーホストに接続されている場合は、以下の操作を実行します。

      1. 以下のコマンドを使用して、リリースイメージをローカルレジストリーに直接プッシュします。

        $ oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
             --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
             --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
             --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
        Copy to Clipboard Toggle word wrap

        このコマンドは、リリース情報をダイジェストとしてプルします。その出力には、クラスターのインストール時に必要な imageContentSources データが含まれます。

      2. 直前のコマンドの出力の imageContentSources セクション全体を記録します。ミラーの情報はミラーリングされたリポジトリーに一意であり、インストール時に imageContentSources セクションを install-config.yaml ファイルに追加する必要があります。

        注記

        ミラーリングプロセス中にイメージ名に Quay.io のパッチが適用され、podman イメージにはブートストラップ仮想マシンのレジストリーに Quay.io が表示されます。

  4. ミラーリングしたコンテンツに基づくインストールプログラムを作成するために、インストールプログラムを展開してリリースに固定します。

    • ミラーホストがインターネットにアクセスできない場合は、以下のコマンドを実行します。

      $ oc adm release extract -a ${LOCAL_SECRET_JSON} --icsp-file=<file> --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}" \
      --insecure=true 
      1
      Copy to Clipboard Toggle word wrap
      1
      オプション: ターゲットレジストリーの信頼を設定しない場合は、--insecure=true フラグを追加します。
    • ローカルコンテナーレジストリーがミラーホストに接続されている場合は、以下のコマンドを実行します。

      $ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
      Copy to Clipboard Toggle word wrap
      重要

      選択した OpenShift Container Platform のバージョンに適したイメージを確実に使用するために、ミラーリングしたコンテンツからインストールプログラムを展開する必要があります。

      インターネット接続のあるマシンで、このステップを実行する必要があります。

  5. installer-provisioned infrastructure を使用するクラスターの場合は、以下のコマンドを実行します。

    $ openshift-install
    Copy to Clipboard Toggle word wrap

3.6. 非接続環境の Cluster Samples Operator

非接続環境で Cluster Samples Operator を設定するには、クラスターのインストール後に追加の手順を実行する必要があります。以下の情報を確認し、準備してください。

3.6.1. ミラーリングの Cluster Samples Operator のサポート

インストール時に、OpenShift Container Platform は imagestreamtag-to-image という名前の設定マップを openshift-cluster-samples-operator namespace に作成します。imagestreamtag-to-image 設定マップには、各イメージストリームタグのエントリー (設定されるイメージ) が含まれます。

設定マップの data フィールドの各エントリーのキーの形式は、<image_stream_name>_<image_stream_tag_name> です。

OpenShift Container Platform の非接続インストール時に、Cluster Samples Operator のステータスは Removed に設定されます。これを Managed に変更することを選択する場合、サンプルがインストールされます。

注記

ネットワークが制限されている環境または切断されている環境でサンプルを使用するには、ネットワークの外部のサービスにアクセスする必要がある場合があります。サービスの例には、Github、Maven Central、npm、RubyGems、PyPi などがあります。場合によっては、Cluster Samples Operator のオブジェクトが必要なサービスに到達できるようにするために、追加の手順を実行する必要があります。

この config map は、イメージストリームをインポートするためにミラーリングする必要があるイメージの参照情報として使用できます。

  • Cluster Samples Operator が Removed に設定される場合、ミラーリングされたレジストリーを作成するか、使用する必要のある既存のミラーリングされたレジストリーを判別できます。
  • 新しい config map をガイドとして使用し、ミラーリングされたレジストリーに必要なサンプルをミラーリングします。
  • Cluster Samples Operator 設定オブジェクトの skippedImagestreams リストに、ミラーリングされていないイメージストリームを追加します。
  • Cluster Samples Operator 設定オブジェクトの samplesRegistry をミラーリングされたレジストリーに設定します。
  • 次に、Cluster Samples Operator を Managed に設定し、ミラーリングしたイメージストリームをインストールします。

3.7. 非接続クラスターで使用する Operator カタログのミラーリング

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

重要
  • OpenShift イメージレジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
  • oc adm catalog mirror を実行すると、error: unable to retrieve source image エラーが発生する場合があります。このエラーは、イメージレジストリーに存在しなくなったイメージへの参照がイメージインデックスに含まれている場合に発生します。イメージインデックスは、それらのイメージを実行しているユーザーがアップグレードグラフの新しいポイントへのアップグレードパスを実行できるように、古い参照を保持する場合があります。一時的な回避策として、--skip-missing オプションを使用してエラーを回避し、イメージインデックスのダウンロードを続行できます。詳細は、Service Mesh Operator mirroring failed を参照してください。

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

3.7.1. 前提条件

非接続クラスターで使用する Operator カタログのミラーリングには、以下の前提条件があります。

  • ネットワークアクセスが無制限のワークステーション
  • podman バージョン 1.9.3 以降。
  • 既存のカタログをフィルタリングまたは プルーニング して、Operator のサブセットのみを選択的にミラーリングする場合は、次のセクションを参照してください。

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

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

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

3.7.2. カタログコンテンツの抽出およびミラーリング

oc adm catalog mirror コマンドは、インデックスイメージのコンテンツを抽出し、ミラーリングに必要なマニフェストを生成します。コマンドのデフォルト動作で、マニフェストを生成し、インデックスイメージからのすべてのイメージコンテンツを、インデックスイメージと同様にミラーレジストリーに対して自動的にミラーリングします。

または、ミラーレジストリーが完全に非接続または エアギャップ 環境のホスト上にある場合、最初にコンテンツをリムーバブルメディアにミラーリングし、メディアを非接続環境に移行してから、メディアからレジストリーにコンテンツをレジストリーに対してミラーリングできます。

3.7.2.1. 同じネットワーク上のレジストリーへのカタログコンテンツのミラーリング

ミラーレジストリーがネットワークアクセスが無制限のワークステーションと同じネットワーク上に置かれている場合は、ワークステーションで以下のアクションを実行します。

手順

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

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

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

    出力例

    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 のナレッジソリューションを参照してください。

3.7.2.2. カタログコンテンツをエアギャップされたレジストリーへのミラーリング

ミラーレジストリーが完全に切断された、またはエアギャップのあるホスト上にある場合は、次のアクションを実行します。

手順

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

    $ oc adm catalog mirror \
        <index_image> \ 
    1
    
        file:///local/index \ 
    2
    
        -a ${REG_CREDS} \ 
    3
    
        --insecure \ 
    4
    
        --index-filter-by-os='<platform>/<arch>' 
    5
    Copy to Clipboard Toggle word wrap
    1
    ミラーリングするカタログのインデックスイメージを指定します。
    2
    現在のディレクトリーのローカルファイルにミラーリングするコンテンツを指定します。
    3
    オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
    4
    オプション: ターゲットレジストリーの信頼を設定しない場合は、--insecure フラグを追加します。
    5
    オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは '<platform>/<arch>[/<variant>]' として指定されます。これはインデックスで参照されるイメージには適用されません。使用できる値は、linux/amd64linux/ppc64lelinux/s390xlinux/arm64、および .*です。

    出力例

    ...
    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:// パスを記録します。このパスは、後続のステップで参照されます。

    このコマンドにより、現在のディレクトリーに v2/ ディレクトリーが作成されます。

  2. v2/ ディレクトリーをリムーバブルメディアにコピーします。
  3. メディアを物理的に削除して、これをミラーレジストリーにアクセスできる非接続環境のホストに割り当てます。
  4. ミラーレジストリーに認証が必要な場合は、非接続環境のホストで以下のコマンドを実行し、レジストリーにログインします。

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

    $ oc adm catalog mirror \
        file://local/index/<repository>/<index_image>:<tag> \ 
    1
    
        <mirror_registry>:<port>[/<repository>] \ 
    2
    
        -a ${REG_CREDS} \ 
    3
    
        --insecure \ 
    4
    
        --index-filter-by-os='<platform>/<arch>' 
    5
    Copy to Clipboard Toggle word wrap
    1
    直前のコマンド出力の file:// パスを指定します。
    2
    Operator の内容をミラーリングするターゲットレジストリーの完全修飾ドメイン名 (FQDN) を指定します。ミラーレジストリー <repository> には、前提条件で説明した olm-mirror など、レジストリー上の既存のリポジトリーまたは namespace を指定できます。ミラーリング中に既存のリポジトリーが見つかった場合は、そのリポジトリー名が結果のイメージ名に追加されます。イメージ名にリポジトリー名を含めたくない場合は、この行から <repository> 値を省略します (例: <mirror_registry>:<port>)
    3
    オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
    4
    オプション: ターゲットレジストリーの信頼を設定しない場合は、--insecure フラグを追加します。
    5
    オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは '<platform>/<arch>[/<variant>]' として指定されます。これはインデックスで参照されるイメージには適用されません。使用できる値は、linux/amd64linux/ppc64lelinux/s390xlinux/arm64、および .*です。
    注記

    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 のナレッジソリューションを参照してください。

  6. oc adm catalog mirror コマンドを再度実行します。新しくミラー化されたインデックスイメージをソースとして使用し、前の手順で使用したものと同じミラーレジストリーターゲットを使用します。

    $ oc adm catalog mirror \
        <mirror_registry>:<port>/<index_image> \
        <mirror_registry>:<port>[/<repository>] \
        --manifests-only \
    1
    
        [-a ${REG_CREDS}] \
        [--insecure]
    Copy to Clipboard Toggle word wrap
    1
    コマンドがミラーリングされたすべてのコンテンツを再度コピーしないように、このステップには --manifests-only フラグが必要です。
    重要

    前のステップで生成された imageContentSourcePolicy.yaml ファイルのイメージマッピングをローカルパスから有効なミラー位置に更新する必要があるため、このステップが必要です。そうしないと、後のステップで ImageContentSourcePolicy オブジェクトを作成するときにエラーが発生します。

カタログのミラーリング後、残りのクラスターインストールを続行できます。クラスターのインストールが正常に完了した後に、この手順から manifests ディレクトリーを指定して ImageContentSourcePolicy および CatalogSource オブジェクトを作成する必要があります。これらのオブジェクトは、OperatorHub からの Operator のインストールを有効にするために必要になります。

3.7.3. 生成されたマニフェスト

Operator カタログコンテンツをミラーレジストリーにミラーリングした後に、現在のディレクトリーに manifests ディレクトリーが生成されます。

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

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

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

manifests-index/<repository>/<index_image_name>-<random_number>
Copy to Clipboard Toggle word wrap
注記

manifests ディレクトリー名は、後続の手順で参照されます。

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 コマンドでのファイルの使用について、OpenShift Container Platform 4.7 ドキュメントの Package Manifest Format カタログイメージのミラーリング の手順を参照してください。

3.7.4. インストール後の要件

カタログのミラーリング後、残りのクラスターインストールを続行できます。クラスターのインストールが正常に完了した後に、この手順から manifests ディレクトリーを指定して ImageContentSourcePolicy および CatalogSource オブジェクトを作成する必要があります。これらのオブジェクトは、OperatorHub からの Operator のインストールを設定し、有効にするために必要です。

3.8. 次のステップ

第4章 oc-mirror プラグインを使用した非接続インストールのイメージのミラーリング

プライベートレジストリー内の OpenShift Container Platform コンテナーイメージのミラーリングされたセットからクラスターをインストールすることにより、インターネットに直接接続せずに制限されたネットワークでクラスターを実行することができます。このレジストリーは、クラスターが実行されている限り、常に実行されている必要があります。詳細は、前提条件 セクションを参照してください。

oc-mirror OpenShift CLI (oc) プラグインを使用して、完全なまたは部分的な非接続環境でイメージをミラーレジストリーにミラーリングできます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror を実行する必要があります。

4.1. oc-mirror プラグインについて

oc-mirror OpenShift CLI(oc) プラグインを使用すると、単一のツールを使用して、必要なすべての OpenShift Container Platform コンテンツおよびその他のイメージをミラーレジストリーにミラーリングできます。次の機能を提供します。

  • OpenShift Container Platform のリリース、Operator、Helm チャート、およびその他のイメージをミラーリングするための一元化された方法を提供します。
  • OpenShift Container Platform および Operator の更新パスを維持します。
  • 宣言型イメージセット設定ファイルを使用して、クラスターに必要な OpenShift Container Platform リリース、Operator、およびイメージのみを含めます。
  • 将来のイメージセットのサイズを縮小するインクリメンタルミラーリングを実行します。
  • 前回の実行以降にイメージセット設定から除外されたターゲットミラーレジストリーからのイメージをプルーニングします。
  • オプションで、OpenShift Update Service (OSUS) を使用する際のサポートアーティファクトを生成します。

oc-mirror プラグインを使用する場合、イメージセット設定ファイルでミラーリングするコンテンツを指定します。この YAML ファイルでは、クラスターに必要な OpenShift Container Platform リリースと Operator のみを含めるように設定を微調整できます。これにより、ダウンロードして転送する必要のあるデータの量が減ります。oc-mirror プラグインは、任意の Helm チャートと追加のコンテナーイメージをミラーリングして、ユーザーがワークロードをミラーレジストリーにシームレスに同期できるようにすることもできます。

oc-mirror プラグインを初めて実行すると、非接続クラスターのインストールまたは更新を実行するために必要なコンテンツがミラーレジストリーに入力されます。非接続クラスターが更新を受信し続けるには、ミラーレジストリーを更新しておく必要があります。ミラーレジストリーを更新するには、最初に実行したときと同じ設定を使用して oc-mirror プラグインを実行します。oc-mirror プラグインは、ストレージバックエンドからメタデータを参照し、ツールを最後に実行してからリリースされたもののみをダウンロードします。これにより、OpenShift Container Platform および Operator の更新パスが提供され、必要に応じて依存関係の解決が実行されます。

4.1.1. ワークフローの概要

次の手順は、oc-mirror プラグインを使用してイメージをミラーレジストリーにミラーリングする方法の概要を示しています。

  1. イメージセット設定ファイルを作成します。
  2. 次のいずれかの方法を使用して、イメージセットをターゲットミラーレジストリーにミラーリングします。

    • イメージセットをターゲットミラーレジストリーに直接ミラーリングします。
    • イメージセットをディスクにミラーリングし、イメージセットをターゲット環境に転送してから、イメージセットをターゲットミラーレジストリーにアップロードします。
  3. oc-mirror プラグインが生成したリソースを使用するようにクラスターを設定します。
  4. 必要に応じてこれらの手順を繰り返して、ターゲットミラーレジストリーを更新します。
重要

oc-mirror CLI プラグインを使用してミラーレジストリーに入力した場合、ターゲットミラーレジストリーへのそれ以降の更新は、oc-mirror プラグインを使用して行う必要があります。

4.2. oc-mirror プラグインの互換性とサポート

oc-mirror プラグインは、OpenShift Container Platform バージョン 4.12 以降の OpenShift Container Platform ペイロードイメージと Operator カタログのミラーリングをサポートします。

注記

aarch64ppc64le、および s390x アーキテクチャーでは、oc-mirror プラグインは OpenShift Container Platform バージョン 4.14 以降でのみサポートされます。

ミラーリングする必要がある OpenShift Container Platform のバージョンに関係なく、使用可能な最新バージョンの oc-mirror プラグインを使用してください。

4.3. ミラーレジストリーについて

OpenShift Container Platform のインストールとその後の製品更新に必要なイメージを、Red Hat Quay などの Docker v2-2 をサポートするコンテナーミラーレジストリーにミラーリングできます。大規模なコンテナーレジストリーにアクセスできない場合は、OpenShift Container Platform サブスクリプションに含まれる小規模なコンテナーレジストリーである Red Hat Openshift 導入用のミラー レジストリー を使用できます。

選択したレジストリーに関係なく、インターネット上の Red Hat がホストするサイトから分離されたイメージレジストリーにコンテンツをミラーリングする手順は同じです。コンテンツをミラーリングした後に、各クラスターをミラーレジストリーからこのコンテンツを取得するように設定します。

重要

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

Red Hat Openshift 導入用のミラーレジストリー以外のコンテナーレジストリー を選択する場合は、プロビジョニングするクラスター内のすべてのマシンから到達可能である必要があります。レジストリーに到達できない場合、インストール、更新、またはワークロードの再配置などの通常の操作が失敗する可能性があります。そのため、ミラーレジストリーは可用性の高い方法で実行し、ミラーレジストリーは少なくとも OpenShift Container Platform クラスターの実稼働環境の可用性の条件に一致している必要があります。

ミラーレジストリーを OpenShift Container Platform イメージで設定する場合、2 つのシナリオを実行することができます。インターネットとミラーレジストリーの両方にアクセスできるホストがあり、クラスターノードにアクセスできない場合は、そのマシンからコンテンツを直接ミラーリングできます。このプロセスは、connected mirroring (接続ミラーリング) と呼ばれます。このようなホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを制限された環境に配置する必要があります。このプロセスは、disconnected mirroring (非接続ミラーリング) と呼ばれます。

ミラーリングされたレジストリーの場合は、プルされたイメージのソースを表示するには、CRI-O ログで Trying to access のログエントリーを確認する必要があります。ノードで crictl images コマンドを使用するなど、イメージのプルソースを表示する他の方法では、イメージがミラーリングされた場所からプルされている場合でも、ミラーリングされていないイメージ名を表示します。

注記

Red Hat は、OpenShift Container Platform を使用してサードパーティーのレジストリーをテストしません。

4.4. 前提条件

  • Red Hat Quay など、OpenShift Container Platform クラスターをホストする場所に Docker v2-2 をサポートするコンテナーイメージレジストリーがある。

    注記

    Red Hat Quay を使用する場合は、oc-mirror プラグインでバージョン 3.6 以降を使用する必要があります。Red Hat Quay のエンタイトルメントをお持ちの場合は、Red Hat Quay のデプロイに関するドキュメント 概念実証(実稼働以外)向けの Red Hat Quay のデプロイ または Red Hat Quay Operator の 使用による OpenShift への Red Hat Quay のデプロイ を参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。

    コンテナーイメージレジストリーの既存のソリューションがまだない場合には、OpenShift Container Platform のサブスクライバーに Red Hat OpenShift 導入用のミラーレジストリー が提供されます。Red Hat Openshift 導入用のミラーレジストリー はサブスクリプションに含まれており、切断されたインストールで OpenShift Container Platform の必要なコンテナーイメージをミラーリングするために使用できる小規模なコンテナーレジストリーです。

4.5. ミラーホストの準備

oc-mirror プラグインを使用してイメージをミラーリングする前に、プラグインをインストールし、コンテナーイメージレジストリーの認証情報ファイルを作成して、Red Hat からお使いのミラーへのミラーリングを許可する必要があります。

4.5.1. oc-mirror OpenShift CLI プラグインのインストール

非接続環境でイメージセットを管理するには、oc-mirror OpenShift CLI プラグインをインストールします。

前提条件

  • OpenShift CLI (oc) がインストールされている。完全な非接続環境でイメージセットをミラーリングする場合は、次の点を確認してください。

    • インターネットにアクセスできるホストに oc-mirror プラグインをインストールした。
    • 非接続環境のホストが、ターゲットミラーレジストリーにアクセスできる。
  • oc-mirror を使用するオペレーティングシステムで、umask パラメーターを 0022 に設定した。
  • 使用している RHEL バージョンに適したバイナリーをインストールした。

手順

  1. oc-mirror CLI プラグインをダウンロードします。

    1. OpenShift Cluster Managerダウンロード ページに移動します。
    2. OpenShift 切断インストールツール セクションで、OpenShift Client (oc) ミラープラグインダウンロード をクリックしてファイルを保存します。
  2. アーカイブを抽出します。

    $ tar xvzf oc-mirror.tar.gz
    Copy to Clipboard Toggle word wrap
  3. 必要に応じて、プラグインファイルを更新して実行可能にします。

    $ chmod +x oc-mirror
    Copy to Clipboard Toggle word wrap
    注記

    oc-mirror ファイルの名前を変更しないでください。

  4. ファイルを PATH に配置して、oc-mirror CLI プラグインをインストールします (例: /usr/local/bin):。

    $ sudo mv oc-mirror /usr/local/bin/.
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行して、oc-mirror v1 のプラグインが正常にインストールされたことを確認します。

    $ oc mirror help
    Copy to Clipboard Toggle word wrap

4.5.2. イメージのミラーリングを可能にする認証情報の設定

Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。

警告

クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。

警告

このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。

前提条件

  • 非接続環境で使用するミラーレジストリーを設定した。
  • イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
  • イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。

手順

インストールホストで以下の手順を実行します。

  1. registry.redhat.io プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。
  2. JSON 形式でプルシークレットのコピーを作成します。

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 
    1
    Copy to Clipboard Toggle word wrap
    1
    プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。

    ファイルの内容は以下の例のようになります。

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap
  3. ファイルを、~/.docker/config.json または $XDG_RUNTIME_DIR/containers/auth.json として保存します。

    1. .docker または $XDG_RUNTIME_DIR/containers ディレクトリーが存在しない場合は、次のコマンドを入力して作成します。

      $ mkdir -p <directory_name>
      Copy to Clipboard Toggle word wrap

      この場合の <directory_name> は、~/.docker または $XDG_RUNTIME_DIR/containers のいずれかです。

    2. 次のコマンドを入力して、プルシークレットを適切なディレクトリーにコピーします。

      $ cp <path>/<pull_secret_file_in_json> <directory_name>/<auth_file>
      Copy to Clipboard Toggle word wrap

      この場合の <directory_name>~/.docker または $XDG_RUNTIME_DIR/containers<auth_file>config.json または auth.json のいずれかです。

  4. ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。

    $ echo -n '<user_name>:<password>' | base64 -w0 
    1
    
    BGVtbYk3ZHAtqXs=
    Copy to Clipboard Toggle word wrap
    1
    <user_name> および <password> には、レジストリーに設定したユーザー名およびパスワードを指定します。
  5. JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。

      "auths": {
        "<mirror_registry>": { 
    1
    
          "auth": "<credentials>", 
    2
    
          "email": "you@example.com"
        }
      },
    Copy to Clipboard Toggle word wrap
    1
    ミラーレジストリーがコンテンツを提供するために使用するレジストリーのドメイン名およびポート (オプション) を指定します。例: registry.example.com または registry.example.com:8443
    2
    ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードを指定します。

    ファイルは以下の例のようになります。

    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "you@example.com"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

4.6. イメージセット設定の作成

oc-mirror プラグインを使用してイメージセットをミラーリングする前に、イメージセット設定ファイルを作成する必要があります。このイメージセット設定ファイルは、ミラーリングする OpenShift Container Platform リリース、Operator、およびその他のイメージと、oc-mirror プラグインの他の設定を定義します。

イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、Docker v2-2 をサポートするローカルディレクトリーまたはレジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。

重要

oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。

前提条件

  • コンテナーイメージレジストリーの認証情報ファイルを作成している。手順は、「イメージのミラーリングを可能にする認証情報の設定」を参照してください。

手順

  1. oc mirror init コマンドを使用して、イメージセット設定のテンプレートを作成し、それを imageset-config.yaml というファイルに保存します。

    $ oc mirror init --registry <storage_backend> > imageset-config.yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    ストレージバックエンドのロケーションを指定します (例: example.com/mirror/oc-mirror-metadata)。
  2. ファイルを編集し、必要に応じて設定を調整します。

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v1alpha2
    archiveSize: 4                                                      
    1
    
    storageConfig:                                                      
    2
    
      registry:
        imageURL: example.com/mirror/oc-mirror-metadata                 
    3
    
        skipTLS: false
    mirror:
      platform:
        channels:
        - name: stable-4.16                                             
    4
    
          type: ocp
        graph: true                                                     
    5
    
      operators:
      - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16  
    6
    
        packages:
        - name: serverless-operator                                     
    7
    
          channels:
          - name: stable                                                
    8
    
      additionalImages:
      - name: registry.redhat.io/ubi9/ubi:latest                        
    9
    
      helm: {}
    Copy to Clipboard Toggle word wrap
    1
    archiveSize を追加して、イメージセット内の各ファイルの最大サイズを GiB 単位で設定します。
    2
    イメージセットのメタデータを保存するバックエンドの場所を設定します。この場所は、レジストリーまたはローカルディレクトリーにすることができます。storageConfig 値を指定する必要があります。
    3
    ストレージバックエンドのレジストリー URL を設定します。
    4
    OpenShift Container Platform イメージを取得するためのチャネルを設定します。
    5
    graph: true を追加して、グラフデータイメージをビルドし、ミラーレジストリーにプッシュします。OpenShift Update Service (OSUS) を作成するには、graph-data イメージが必要です。graph: true フィールドは UpdateService カスタムリソースマニフェストも生成します。oc コマンドラインインターフェイス (CLI) は、UpdateService カスタムリソースマニフェストを使用して OSUS を作成できます。詳細は、OpenShift Update Service について を参照してください。
    6
    OpenShift Container Platform イメージを取得するための Operator カタログを設定します。
    7
    イメージセットに含める特定の Operator パッケージのみを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
    8
    イメージセットに含める Operator パッケージの特定のチャネルのみを指定します。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。oc mirror list operators --catalog=<catalog_name> --package=<package_name> コマンドを実行すると、デフォルトチャネルを見つけることができます。
    9
    イメージセットに含める追加のイメージを指定します。
    注記

    graph: true フィールドは、他のミラーリングされたイメージとともに ubi-micro イメージもミラーリングします。

    OpenShift Container Platform Extended Update Support (EUS) バージョンをアップグレードする場合、現行バージョンとターゲットバージョンの間に中間バージョンが必要になる場合があります。たとえば、最新バージョンが 4.14 で、ターゲットバージョンが 4.16 の場合、oc-mirror プラグイン v1 の使用時に ImageSetConfiguration4.15.8 などのバージョンを含める必要がある場合があります。

    oc-mirror プラグイン v1 は必ずしもこれを自動的に検出するとは限りません。Cincinnati graph の Web ページで 必要な中間バージョンを確認し、手動で設定に追加してください。

    パラメーターの完全なリストは、「イメージセットの設定パラメーター」を参照してください。また、さまざまなミラーリングのユースケースは、「イメージセットの設定例」を参照してください。

  3. 更新したファイルを保存します。

    このイメージセット設定ファイルは、コンテンツをミラーリングするときに oc mirror コマンドで必要になります。

4.7. イメージセットをミラーレジストリーにミラーリングする

oc-mirror CLI プラグインを使用して、部分的な非接続環境 または 完全な非接続環境 でイメージをミラーレジストリーにミラーリングできます。

これらの手順は、ミラーレジストリーがすでに設定されていることを前提としています。

4.7.1. 部分的な非接続環境でのイメージセットのミラーリング

部分的な非接続環境では、イメージセットをターゲットミラーレジストリーに直接ミラーリングできます。

4.7.1.1. ミラーからミラーへのミラーリング

oc-mirror プラグインを使用して、イメージセットの作成中にアクセス可能なターゲットミラーレジストリーにイメージセットを直接ミラーリングできます。

イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、ローカルディレクトリーまたは Dockerv2 レジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。

重要

oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。

前提条件

  • 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
  • OpenShift CLI (oc) がインストールされている。
  • oc-mirror CLI プラグインをインストールしている。
  • イメージセット設定ファイルを作成している。

手順

  • oc mirror コマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。

    $ oc mirror --config=./<imageset-config.yaml> \
    1
    
      docker://registry.example:5000             
    2
    Copy to Clipboard Toggle word wrap
    1
    作成したイメージセット設定ファイルを指定します。たとえば、imageset-config.yaml です。
    2
    イメージセットファイルをミラーリングするレジストリーを指定します。レジストリーは docker:// で始まる必要があります。ミラーレジストリーに最上位の namespace を指定する場合は、これ以降の実行でもこれと同じ namespace を使用する必要があります。

検証

  1. 生成された oc-mirror-workspace/ ディレクトリーに移動します。
  2. results ディレクトリーに移動します (例: results-1639608409/
  3. ImageContentSourcePolicy および CatalogSource リソースに YAML ファイルが存在することを確認します。
注記

ImageContentSourcePolicy YAML ファイルの repositoryDigestMirrors セクションは、インストール中に install-config.yaml ファイルとして使用されます。

次のステップ

  • oc-mirror が生成したリソースを使用するようにクラスターを設定します。

トラブルシューティング

4.7.2. 完全な非接続環境でのイメージセットのミラーリング

完全な非接続環境でイメージセットをミラーリングするには、最初に イメージセットをディスクにミラーリング してから、ディスク上のイメージセットファイルをミラーにミラーリング する必要があります。

4.7.2.1. ミラーからディスクへのミラーリング

oc-mirror プラグインを使用して、イメージセットを生成し、コンテンツをディスクに保存できます。生成されたイメージセットは、非接続環境に転送され、ターゲットレジストリーにミラーリングされます。

重要

イメージセット設定ファイルで指定されている設定によっては、oc-mirror を使用してイメージをミラーリングすると、数百ギガバイトのデータがディスクにダウンロードされる場合があります。

多くの場合、ミラーレジストリーにデータを入力するときの最初のイメージセットのダウンロードが、最も大きなものとなります。最後にコマンドを実行した後に変更されたイメージのみをダウンロードするため、oc-mirror プラグインを再度実行すると、生成されるイメージセットは小さいことが多いです。

イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、ローカルディレクトリーまたは docker v2 レジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。

重要

oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。

前提条件

  • 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
  • OpenShift CLI (oc) がインストールされている。
  • oc-mirror CLI プラグインをインストールしている。
  • イメージセット設定ファイルを作成している。

手順

  • oc mirror コマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。

    $ oc mirror --config=./imageset-config.yaml \
    1
    
      file://<path_to_output_directory>          
    2
    Copy to Clipboard Toggle word wrap
    1
    作成されたイメージセット設定ファイルを渡します。この手順では、imageset-config.yaml という名前であることを前提としています。
    2
    イメージセットファイルを出力するターゲットディレクトリーを指定します。ターゲットディレクトリーのパスは、file:// で始まる必要があります。

検証

  1. 出力ディレクトリーに移動します。

    $ cd <path_to_output_directory>
    Copy to Clipboard Toggle word wrap
  2. イメージセットの .tar ファイルが作成されたことを確認します。

    $ ls
    Copy to Clipboard Toggle word wrap

    出力例

    mirror_seq1_000000.tar
    Copy to Clipboard Toggle word wrap

次のステップ

  • イメージセットの.tar ファイルを非接続環境に転送します。

トラブルシューティング

4.7.2.2. ディスクからミラーへのミラーリング

oc-mirror プラグインを使用して、生成されたイメージセットの内容をターゲットミラーレジストリーにミラーリングできます。

前提条件

  • 非接続環境に OpenShift CLI (oc) をインストールしている。
  • 非接続環境に oc-mirror CLI プラグインをインストールしている。
  • oc mirror コマンドを使用してイメージセットファイルを生成している。
  • イメージセットファイルを非接続環境に転送した。

手順

  • oc mirror コマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。

    $ oc mirror --from=./mirror_seq1_000000.tar \
    1
    
      docker://registry.example:5000             
    2
    Copy to Clipboard Toggle word wrap
    1
    この例では、mirror_seq1_000000.tar という名前のイメージセット.tar ファイルをミラーに渡します。イメージセット設定ファイルで archiveSize 値が指定されている場合、イメージセットは複数の.tar ファイルに分割される可能性があります。この状況では、イメージセットの.tar ファイルを含むディレクトリーを渡すことができます。
    2
    イメージセットファイルをミラーリングするレジストリーを指定します。レジストリーは docker:// で始まる必要があります。ミラーレジストリーに最上位の namespace を指定する場合は、これ以降の実行でもこれと同じ namespace を使用する必要があります。

    このコマンドは、ミラーレジストリーをイメージセットで更新し、ImageContentSourcePolicy および CatalogSource リソースを生成します。

検証

  1. 生成された oc-mirror-workspace/ ディレクトリーに移動します。
  2. results ディレクトリーに移動します (例: results-1639608409/
  3. ImageContentSourcePolicy および CatalogSource リソースに YAML ファイルが存在することを確認します。

次のステップ

  • oc-mirror が生成したリソースを使用するようにクラスターを設定します。

トラブルシューティング

4.8. oc-mirror が生成したリソースを使用するためのクラスター設定

イメージセットをミラーレジストリーにミラーリングした後に、生成された ImageContentSourcePolicyCatalogSource、およびリリースイメージの署名リソースをクラスターに適用する必要があります。

ImageContentSourcePolicy リソースは、ミラーレジストリーをソースレジストリーに関連付け、イメージプル要求をオンラインレジストリーからミラーレジストリーにリダイレクトします。CatalogSource リソースは、Operator Lifecycle Manager (OLM) によって使用され、ミラーレジストリーで使用可能な Operator に関する情報を取得します。リリースイメージの署名は、ミラーリングされたリリースイメージの検証に使用されます。

前提条件

  • 非接続環境で、イメージセットをレジストリーミラーにミラーリングしました。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift CLI にログインします。
  2. 以下のコマンドを実行して、results ディレクトリーからクラスターに YAML ファイルを適用します。

    $ oc apply -f ./oc-mirror-workspace/results-1639608409/
    Copy to Clipboard Toggle word wrap
  3. リリースイメージをミラーリングした場合は、次のコマンドを実行して、リリースイメージの署名をクラスターに適用します。

    $ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
    Copy to Clipboard Toggle word wrap
    注記

    クラスターではなく Operator をミラーリングしている場合、$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/ を実行する必要はありません。適用するリリースイメージ署名がないため、このコマンドを実行するとエラーが返されます。

検証

  1. 以下のコマンドを実行して、ImageContentSourcePolicy リソースが正常にインストールされたことを確認します。

    $ oc get imagecontentsourcepolicy
    Copy to Clipboard Toggle word wrap
  2. 以下のコマンドを実行して、CatalogSource リソースが正常にインストールされたことを確認します。

    $ oc get catalogsource -n openshift-marketplace
    Copy to Clipboard Toggle word wrap

4.9. ミラーレジストリーコンテンツの更新

イメージセット設定ファイルを更新し、イメージセットをミラーレジストリーにミラーリングすることで、ミラーレジストリーの内容を更新できます。oc-mirror プラグインを次回実行したときに、前回の実行以降の新規イメージと更新されたイメージのみを含むイメージセットが生成されます。

ミラーレジストリーを更新する際には、次の点を考慮する必要があります。

  • 生成およびミラーリングされた最新のイメージセットにイメージが含まれていない場合、そのイメージはターゲットミラーレジストリーからプルーニングされます。したがって、差分イメージセットのみが作成およびミラーリングされるように、以下と同じ組み合わせの主要コンポーネントのイメージを更新してください。

    • イメージセットの設定
    • 宛先レジストリー
    • ストレージの設定
  • ディスクからミラー、またはミラーからミラーへのワークフローの場合、イメージがプルーニングされる可能性があります。
  • 生成されたイメージセットは、ターゲットミラーレジストリーに順番にプッシュする必要があります。シーケンス番号は、生成されたイメージセットアーカイブファイルのファイル名から取得できます。
  • oc-mirror プラグインによって生成されたメタデータイメージを削除または変更しないでください。
  • イメージセットの最初の作成時にミラーレジストリーにトップレベルの namespace を指定した場合は、同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、この同じ namespace を使用する必要があります。

ミラーレジストリーコンテンツを更新するワークフローの詳細は、「ワークフローの概要」セクションを参照してください。

4.9.1. ミラーレジストリーの更新例

このセクションでは、ミラーレジストリーをディスクからミラーに更新するユースケースを説明します。

以前ミラーリングに使用した ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  platform:
    channels:
      - name: stable-4.12
        minVersion: 4.12.1
        maxVersion: 4.12.1
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
      packages:
        - name: rhacs-operator
          channels:
          - name: stable
Copy to Clipboard Toggle word wrap

更新された ImageSetConfiguration ファイル

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  platform:
    channels:
      - name: stable-4.13 
1

  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
      packages:
        - name: rhacs-operator
          channels:
          - name: stable
Copy to Clipboard Toggle word wrap

1
stable-4.13 に置き換えると、stable-4.12 のすべてのイメージがプルーニングされます。
4.9.1.2. 既存のイメージをプルーニングして Operator の最新バージョンに更新する

更新された ImageSetConfiguration ファイル

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  platform:
    channels:
      - name: stable-4.12
        minVersion: 4.12.1
        maxVersion: 4.12.1
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
      packages:
        - name: rhacs-operator
          channels:
          - name: stable 
1
Copy to Clipboard Toggle word wrap

1
バージョンを指定せずに同じチャネルを使用すると、既存のイメージがプルーニングされ、最新バージョンのイメージに更新されます。
4.9.1.3. 既存の Operator をプルーニングして新しい Operator をミラーリングする

更新された ImageSetConfiguration ファイル

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  platform:
    channels:
      - name: stable-4.12
        minVersion: 4.12.1
        maxVersion: 4.12.1
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
      packages:
        - name: <new_operator_name> 
1

          channels:
          - name: stable
Copy to Clipboard Toggle word wrap

1
rhacs-operatornew_operator_name に置き換えると、Red Hat Advanced Cluster Security for Kubernetes Operator がプルーニングされます。
4.9.1.4. すべての OpenShift Container Platform イメージをプルーニングする

更新された ImageSetConfiguration ファイル

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  platform:
    channels:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
      packages:
Copy to Clipboard Toggle word wrap

4.10. ドライランの実行

実際にイメージをミラーリングせずに、oc-mirror を使用してドライランを実行できます。これにより、ミラーリングされるイメージのリストと、ミラーレジストリーからプルーニングされるイメージを確認できます。ドライランを使用すると、イメージセット設定のエラーを早期に検出したり、生成されたイメージリストを他のツールで使用してミラーリング操作を実行したりすることもできます。

前提条件

  • 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
  • OpenShift CLI (oc) がインストールされている。
  • oc-mirror CLI プラグインをインストールしている。
  • イメージセット設定ファイルを作成している。

手順

  1. --dry-run フラグを指定して oc mirror コマンドを実行し、ドライランを実行します。

    $ oc mirror --config=./imageset-config.yaml \
    1
    
      docker://registry.example:5000            \
    2
    
      --dry-run                                  
    3
    Copy to Clipboard Toggle word wrap
    1
    作成されたイメージセット設定ファイルを渡します。この手順では、imageset-config.yaml という名前であることを前提としています。
    2
    ミラーレジストリーを指定します。--dry-run フラグを使用している限り、このレジストリーには何もミラーリングされません。
    3
    --dry-run フラグを使用して、実際のイメージセットファイルではなく、ドライランアーティファクトを生成します。

    出力例

    Checking push permissions for registry.example:5000
    Creating directory: oc-mirror-workspace/src/publish
    Creating directory: oc-mirror-workspace/src/v2
    Creating directory: oc-mirror-workspace/src/charts
    Creating directory: oc-mirror-workspace/src/release-signatures
    No metadata detected, creating new workspace
    wrote mirroring manifests to oc-mirror-workspace/operators.1658342351/manifests-redhat-operator-index
    
    ...
    
    info: Planning completed in 31.48s
    info: Dry run complete
    Writing image mapping to oc-mirror-workspace/mapping.txt
    Copy to Clipboard Toggle word wrap

  2. 生成されたワークスペースディレクトリーに移動します。

    $ cd oc-mirror-workspace/
    Copy to Clipboard Toggle word wrap
  3. 生成された mapping.txt ファイルを確認します。

    このファイルには、ミラーリングされるすべてのイメージのリストが含まれています。

  4. 生成された pruning-plan.json ファイルを確認します。

    このファイルには、イメージセットの公開時にミラーレジストリーからプルーニングされるすべてのイメージのリストが含まれています。

    注記

    pruning-plan.json ファイルは、oc-mirror コマンドがミラーレジストリーを指し、プルーニングするイメージがある場合にのみ生成されます。

4.11. ローカルの OCI Operator カタログを含む

OpenShift Container Platform リリース、Operator カタログ、および追加イメージをレジストリーから部分的に切断されたクラスターにミラーリングするときに、ディスク上のローカルのファイルベースのカタログから Operator カタログイメージを含めることができます。ローカルカタログは Open Container Initiative (OCI) 形式である必要があります。

ローカルカタログとそのコンテンツは、イメージセット設定ファイル内のフィルタリング情報に基づいて、ターゲットミラーレジストリーにミラーリングされます。

重要

ローカル OCI カタログをミラーリングする場合、ローカル OCI 形式のカタログとともにミラーリングする OpenShift Container Platform リリースまたは追加のイメージをレジストリーからプルする必要があります。

OCI カタログを oc-mirror イメージセットファイルと一緒にディスク上でミラーリングすることはできません。

OCI 機能を使用するユースケースの 1 つの例は、ディスク上の場所に OCI カタログを構築している CI/CD システムがあり、その OCI カタログを OpenShift Container Platform リリースとともにミラーレジストリーにミラーリングしたい場合です。

注記

OpenShift Container Platform 4.12 の oc-mirror プラグインの Technology Preview OCI ローカルカタログ機能を使用した場合、完全に切断されたクラスターへのミラーリングの最初のステップとして、ローカルにカタログをコピーして OCI 形式に変換するために oc-mirror プラグインの OCI ローカルカタログ機能を使用できないようになりました。

前提条件

  • 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
  • OpenShift CLI (oc) がインストールされている。
  • oc-mirror CLI プラグインをインストールしている。

手順

  1. イメージセット設定ファイルを作成し、必要に応じて設定を調整します。

    次のイメージセット設定例では、OpenShift Container Platform リリースおよび registry.redhat.io の UBI イメージとともに、ディスク上の OCI カタログをミラーリングします。

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v1alpha2
    storageConfig:
      local:
        path: /home/user/metadata                                                
    1
    
    mirror:
      platform:
        channels:
        - name: stable-4.16                                                      
    2
    
          type: ocp
        graph: false
      operators:
      - catalog: oci:///home/user/oc-mirror/my-oci-catalog                       
    3
    
        targetCatalog: my-namespace/redhat-operator-index                        
    4
    
        packages:
        - name: aws-load-balancer-operator
      - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16           
    5
    
        packages:
        - name: rhacs-operator
      additionalImages:
      - name: registry.redhat.io/ubi9/ubi:latest                                 
    6
    Copy to Clipboard Toggle word wrap
    1
    イメージセットのメタデータを保存するバックエンドの場所を設定します。この場所は、レジストリーまたはローカルディレクトリーにすることができます。storageConfig 値を指定する必要があります。
    2
    オプションで、registry.redhat.io からミラーリングする OpenShift Container Platform リリースを含めます。
    3
    ディスク上の OCI カタログの場所への絶対パスを指定します。OCI 機能を使用する場合、パスは oci:// で始まる必要があります。
    4
    必要に応じて、カタログをミラーリングする代替の namespace と名前を指定します。
    5
    必要に応じて、レジストリーから取得する追加の Operator カタログを指定します。
    6
    必要に応じて、レジストリーからプルする追加のイメージを指定します。
  2. oc mirror コマンドを実行して、OCI カタログをターゲットミラーレジストリーにミラーリングします。

    $ oc mirror --config=./imageset-config.yaml \ 
    1
    
      docker://registry.example:5000              
    2
    Copy to Clipboard Toggle word wrap
    1
    イメージセット設定ファイルを渡します。この手順では、imageset-config.yaml という名前であることを前提としています。
    2
    コンテンツをミラーリングするレジストリーを指定します。レジストリーは docker:// で始まる必要があります。ミラーレジストリーに最上位の namespace を指定する場合は、これ以降の実行でもこれと同じ namespace を使用する必要があります。

    オプションで、他のフラグを指定して OCI 機能の動作を調整できます。

    --oci-insecure-signature-policy
    署名をターゲットミラーレジストリーにプッシュしないでください。
    --oci-registries-config

    TOML 形式の registries.conf ファイルへのパスを指定します。これを使用して、イメージセット設定ファイルを変更することなく、テスト用の運用前の場所など、別のレジストリーからミラーリングできます。このフラグはローカル OCI カタログにのみ影響し、他のミラーリングされたコンテンツには影響しません。

    registries.conf ファイルの例

    [[registry]]
     location = "registry.redhat.io:5000"
     insecure = false
     blocked = false
     mirror-by-digest-only = true
     prefix = ""
     [[registry.mirror]]
        location = "preprod-registry.example.com"
        insecure = false
    Copy to Clipboard Toggle word wrap

次のステップ

  • oc-mirror が生成したリソースを使用するようにクラスターを設定します。

4.12. Image set configuration parameters

oc-mirror プラグインには、ミラーリングするイメージを定義するイメージセット設定ファイルが必要です。次の表に、ImageSetConfiguration リソースで使用可能なパラメーターを示します。

Expand
表4.1 ImageSetConfiguration パラメーター
パラメーター説明

apiVersion

ImageSetConfiguration コンテンツの API バージョン。

文字列。例: mirror.openshift.io/v1alpha2

archiveSize

イメージセット内の各アーカイブファイルの最大サイズ (GiB 単位)。

整数。例: 4

mirror

イメージセットの設定。

オブジェクト

mirror.additionalImages

イメージセットの追加のイメージ設定。

オブジェクトの配列。以下に例を示します。

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest
Copy to Clipboard Toggle word wrap

mirror.additionalImages.name

ミラーリングするイメージのタグまたはダイジェスト。

文字列。例: registry.redhat.io/ubi8/ubi:latest

mirror.blockedImages

ミラーリングからブロックするイメージの完全なタグ、ダイジェスト、またはパターン。

文字列の配列例: docker.io/library/alpine

mirror.helm

イメージセットの Helm 設定。oc-mirror プラグインは、レンダリング時にユーザー入力を必要としない Helm チャートのみをサポートすることに注意してください。

オブジェクト

mirror.helm.local

ミラーリングするローカル Helm チャート。

オブジェクトの配列。以下に例を示します。

local:
  - name: podinfo
    path: /test/podinfo-5.0.0.tar.gz
Copy to Clipboard Toggle word wrap

mirror.helm.local.name

ミラーリングするローカル Helm チャートの名前。

String。例: podinfo

mirror.helm.local.path

ミラーリングするローカル Helm チャートのパス。

String。例: /test/podinfo-5.0.0.tar.gz

mirror.helm.repositories

ミラーリング元のリモート Helm リポジトリー。

オブジェクトの配列。以下に例を示します。

repositories:
  - name: podinfo
    url: https://example.github.io/podinfo
    charts:
      - name: podinfo
        version: 5.0.0
Copy to Clipboard Toggle word wrap

mirror.helm.repositories.name

ミラーリング元の Helm リポジトリーの名前。

String。例: podinfo

mirror.helm.repositories.url

ミラーリング元の helm リポジトリーの URL。

String。例: https://example.github.io/podinfo

mirror.helm.repositories.charts

ミラーリングするリモート Helm チャート。

オブジェクトの配列。

mirror.helm.repositories.charts.name

ミラーリングする Helm チャートの名前。

文字列。例: podinfo

mirror.helm.repositories.charts.version

ミラーリングする名前付き Helm チャートのバージョン。

String。例: 5.0.0

mirror.operators

イメージセットの Operators 設定。

オブジェクトの配列。以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
    packages:
      - name: elasticsearch-operator
        minVersion: '2.4.0'
Copy to Clipboard Toggle word wrap

mirror.operators.catalog

イメージセットに含める Operator カタログ。

String。たとえば、registry.redhat.io/redhat/redhat-operator-index:v4.16 です。

mirror.operators.full

true の場合、完全なカタログ、Operator パッケージ、または Operator チャネルをダウンロードします。

ブール値。デフォルト値は false です。

mirror.operators.packages

Operator パッケージ設定

オブジェクトの配列。以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
    packages:
      - name: elasticsearch-operator
        minVersion: '5.2.3-31'
Copy to Clipboard Toggle word wrap

mirror.operators.packages.name

イメージセットに含める Operator パッケージ名

String。例: elasticsearch-operator

mirror.operators.packages.channels

Operator パッケージのチャネル設定。

オブジェクト

mirror.operators.packages.channels.name

イメージセットに含める、パッケージ内で一意の Operator チャネル名。

文字列。たとえば、fast または stable-v4.16 です。

mirror.operators.packages.channels.maxVersion

Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。詳細は、以下の注記を参照してください。

文字列。例: 5.2.3-31

mirror.operators.packages.channels.minBundle

含める最小バンドルの名前と、チャネルヘッドへの更新グラフ内のすべてのバンドル。名前付きバンドルにセマンティックバージョンメタデータがない場合にのみ、このフィールドを設定します。

文字列。例: bundleName

mirror.operators.packages.channels.minVersion

存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。詳細は、以下の注記を参照してください。

文字列。例: 5.2.3-31

mirror.operators.packages.maxVersion

Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。詳細は、以下の注記を参照してください。

文字列。例: 5.2.3-31

mirror.operators.packages.minVersion

存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。詳細は、以下の注記を参照してください。

文字列。例: 5.2.3-31

mirror.operators.skipDependencies

true の場合、バンドルの依存関係は含まれません。

ブール値。デフォルト値は false です。

mirror.operators.targetCatalog

参照されるカタログをミラーリングするための代替名とオプションの namespace 階層。

文字列。例: my-namespace/my-operator-catalog

mirror.operators.targetName

参照されたカタログをミラーリングするための代替名。

targetName パラメーターは非推奨になりました。代わりに targetCatalog パラメーターを使用してください。

文字列。例: my-operator-catalog

mirror.operators.targetTag

targetName または targetCatalog に追加する代替タグ。

文字列。例: v1

mirror.platform

イメージセットのプラットフォーム設定。

オブジェクト

mirror.platform.architectures

ミラーリングするプラットフォームリリースペイロードのアーキテクチャー。

文字列の配列以下に例を示します。

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x
Copy to Clipboard Toggle word wrap

デフォルト値は amd64 です。値 multi を指定すると、使用可能なすべてのアーキテクチャーでミラーリングがサポートされ、個別のアーキテクチャーを指定する必要がなくなります。

mirror.platform.channels

イメージセットのプラットフォームチャネル設定。

オブジェクトの配列。以下に例を示します。

channels:
  - name: stable-4.10
  - name: stable-4.16
Copy to Clipboard Toggle word wrap

mirror.platform.channels.full

true の場合、minVersion をチャネルの最初のリリースに設定し、maxVersion をチャネルの最後のリリースに設定します。

ブール値。デフォルト値は false です。

mirror.platform.channels.name

リリースチャネルの名前。

文字列。例: stable-4.16

mirror.platform.channels.minVersion

ミラーリングされる参照プラットフォームの最小バージョン。

String。例: 4.12.6

mirror.platform.channels.maxVersion

ミラーリングされる参照プラットフォームの最上位バージョン。

文字列。例: 4.16.1

mirror.platform.channels.shortestPath

最短パスミラーリングまたはフルレンジミラーリングを切り替えます。

ブール値。デフォルト値は false です。

mirror.platform.channels.type

ミラーリングするプラットフォームのタイプ。

文字列。例: ocp または okd。デフォルトは ocp です。

mirror.platform.graph

OSUS グラフがイメージセットに追加され、その後ミラーに公開されるかどうかを示します。

ブール値。デフォルト値は false です。

storageConfig

イメージセットのバックエンド設定。

オブジェクト

storageConfig.local

イメージセットのローカルバックエンド設定。

オブジェクト

storageConfig.local.path

イメージセットのメタデータを含むディレクトリーのパス。

文字列。例: ./path/to/dir/

storageConfig.registry

イメージセットのレジストリーバックエンド設定。

オブジェクト

storageConfig.registry.imageURL

バックエンドレジストリー URI。オプションで、URI に namespace 参照を含めることができます。

文字列。例: quay.io/myuser/imageset:metadata

storageConfig.registry.skipTLS

オプションで、参照されるバックエンドレジストリーの TLS 検証をスキップします。

ブール値。デフォルト値は false です。

注記

minVersion および maxVersion プロパティーを使用して特定の Operator バージョン範囲をフィルターすると、複数のチャネルヘッドエラーが発生する可能性があります。エラーメッセージには、multiple channel heads があることが示されます。これは、フィルターを適用すると、Operator の更新グラフが切り捨てられるためです。

すべての Operator チャネルに、1 つのエンドポイント (つまり最新バージョンの Operator) を持つ更新グラフを構成するバージョンが含まれている必要があります。これは Operator Lifecycle Manager の要件です。フィルター範囲を適用すると、更新グラフが 2 つ以上の個別のグラフ、または複数のエンドポイントを持つグラフに変換されることがあります。

このエラーを回避するには、最新バージョンの Operator を除外しないでください。それでもエラーが発生する場合は、Operator に応じて、maxVersion プロパティーを増やすか、minVersion プロパティーを減らす必要があります。Operator グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。

4.13. Image set configuration examples

次の ImageSetConfiguration ファイルの例は、さまざまなミラーリングのユースケースの設定を示しています。

4.13.1. ユースケース: 最短の OpenShift Container Platform 更新パスを含める

以下の ImageSetConfiguration ファイルは、ローカルストレージバックエンドを使用し、最小バージョン 4.11.37 から最大バージョン 4.12.15 への最短更新パスに沿ってすべての OpenShift Container Platform バージョンを含めます。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  platform:
    channels:
      - name: stable-4.12
        minVersion: 4.11.37
        maxVersion: 4.12.15
        shortestPath: true
Copy to Clipboard Toggle word wrap

以下の ImageSetConfiguration ファイルは、レジストリーストレージバックエンドを使用し、最小バージョン 4.13.4 からチャネルの最新バージョンまでのすべての OpenShift Container Platform バージョンを含みます。このイメージセット設定で oc-mirror を呼び出すたびに、stable-4.13 チャネルの最新リリースが評価されるため、定期的に oc-mirror を実行すると、OpenShift Container Platform イメージの最新リリースを自動的に受け取ることができます。

platform.architectures の値を multi に設定すると、マルチアーキテクチャーリリースでミラーリングがサポートされるようになります。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  registry:
    imageURL: example.com/mirror/oc-mirror-metadata
    skipTLS: false
mirror:
  platform:
    architectures:
      - "multi"
    channels:
      - name: stable-4.13
        minVersion: 4.13.4
        maxVersion: 4.13.6
Copy to Clipboard Toggle word wrap

4.13.3. ユースケース: 最小から最新までの Operator バージョンを含める

次の ImageSetConfiguration ファイルは、ローカルストレージバックエンドを使用し、これには、stable チャネルの Kubernetes Operator 用の Red Hat Advanced Cluster Security (4.0.1 以降のバージョン) のみが含まれています。

注記

最小または最大のバージョン範囲を指定した場合、その範囲内のすべての Operator バージョンを受信できない可能性があります。

デフォルトで、oc-mirror は、Operator Lifecycle Manager (OLM) 仕様でスキップされたバージョン、または新しいバージョンに置き換えられたバージョンを除外します。スキップされた Operator のバージョンは、CVE の影響を受けるか、バグが含まれている可能性があります。代わりに新しいバージョンを使用してください。スキップおよび置き換えられたバージョンの詳細は、OLM を使用した更新グラフの作成 を参照してください。

指定した範囲内のすべての Operator バージョンを受信するには、mirror.operators.full フィールドを true に設定します。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  local:
    path: /home/user/metadata
mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
      packages:
        - name: rhacs-operator
          channels:
          - name: stable
            minVersion: 4.0.1
Copy to Clipboard Toggle word wrap

注記

最新バージョンではなく最大バージョンを指定するには、mirror.operators.packages.channels.maxVersion フィールドを設定します。

4.13.4. ユースケース: Nutanix CSI Operator を含める

次の ImageSetConfiguration ファイルは、ローカルストレージバックエンドを使用します。このファイルには、Nutanix CSI Operator、OpenShift Update Service (OSUS) グラフイメージ、および追加の Red Hat Universal Base Image (UBI) が含まれます。

ImageSetConfiguration ファイルの例

kind: ImageSetConfiguration
apiVersion: mirror.openshift.io/v1alpha2
storageConfig:
  registry:
    imageURL: mylocalregistry/ocp-mirror/openshift4
    skipTLS: false
mirror:
  platform:
    channels:
    - name: stable-4.11
      type: ocp
    graph: true
  operators:
  - catalog: registry.redhat.io/redhat/certified-operator-index:v4.16
    packages:
    - name: nutanixcsioperator
      channels:
      - name: stable
  additionalImages:
  - name: registry.redhat.io/ubi9/ubi:latest
Copy to Clipboard Toggle word wrap

4.13.5. ユースケース: デフォルトの Operator チャネルを含める

次の ImageSetConfiguration ファイルには、OpenShift Elasticsearch Operator の stable-5.7 および stable チャネルが含まれています。安定版 5.7 チャネルのパッケージのみが必要な場合でも、stable チャネルは Operator のデフォルトチャネルであるため、ImageSetConfiguration ファイルにも含める必要があります。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。

ヒント

oc mirror list operators --catalog=<catalog_name> --package=<package_name> コマンドを実行すると、デフォルトチャネルを見つけることができます。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  registry:
    imageURL: example.com/mirror/oc-mirror-metadata
    skipTLS: false
mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
    packages:
    - name: elasticsearch-operator
      channels:
      - name: stable-5.7
      - name: stable
Copy to Clipboard Toggle word wrap

4.13.6. ユースケース: カタログ全体を含める (すべてのバージョン)

次の ImageSetConfiguration ファイルは、mirror.operators.full フィールドを true に設定して、Operator カタログ全体のすべてのバージョンを含めます。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  registry:
    imageURL: example.com/mirror/oc-mirror-metadata
    skipTLS: false
mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
      full: true
Copy to Clipboard Toggle word wrap

4.13.7. ユースケース: カタログ全体を含める (チャネルヘッドのみ)

次の ImageSetConfiguration ファイルには、Operator カタログ全体のチャネルヘッドが含まれています。

デフォルトでは、カタログ内の各 Operator において、oc-mirror にはデフォルトチャネルから Operator の最新バージョン (チャネルヘッド) が含まれています。チャネルヘッドだけでなく、すべての Operator バージョンをミラーリングする場合は、mirror.operators.full フィールドを true に設定する必要があります。

この例では、targetCatalog フィールドを使用して、カタログをミラーリングする代替 namespace と名前も指定します。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  registry:
    imageURL: example.com/mirror/oc-mirror-metadata
    skipTLS: false
mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
    targetCatalog: my-namespace/my-operator-catalog
Copy to Clipboard Toggle word wrap

4.13.8. ユースケース: 任意のイメージと Helm チャートを含む

次の ImageSetConfiguration ファイルは、レジストリーストレージバックエンドを使用し、これには Helm チャートと追加の Red Hat Universal Base Image (UBI) が含まれています。

ImageSetConfiguration ファイルの例

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
archiveSize: 4
storageConfig:
  registry:
    imageURL: example.com/mirror/oc-mirror-metadata
    skipTLS: false
mirror:
 platform:
   architectures:
     - "s390x"
   channels:
     - name: stable-4.16
 operators:
   - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.16
 helm:
   repositories:
     - name: redhat-helm-charts
       url: https://raw.githubusercontent.com/redhat-developer/redhat-helm-charts/master
       charts:
         - name: ibm-mongodb-enterprise-helm
           version: 0.2.0
 additionalImages:
   - name: registry.redhat.io/ubi9/ubi:latest
Copy to Clipboard Toggle word wrap

4.13.9. 使用例: EUS リリースのアップグレードパスを含める

次の ImageSetConfiguration ファイルには eus-<version> チャネルが含まれており、maxVersion の値は minVersion の値より 2 マイナーバージョン以上大きい値になっています。

たとえばこの ImageSetConfiguration ファイルでは、minVersion4.12.28 に設定されており、eus-4.14 チャネルの maxVersion4.14.16 です。

ImageSetConfiguration ファイルの例

kind: ImageSetConfiguration
apiVersion: mirror.openshift.io/v2alpha1
mirror:
  platform:
    graph: true # Required for the OSUS Operator
    architectures:
    - amd64
    channels:
    - name: stable-4.12
      minVersion: '4.12.28'
      maxVersion: '4.12.28'
      shortestPath: true
      type: ocp
    - name: eus-4.14
      minVersion: '4.12.28'
      maxVersion: '4.14.16'
      shortestPath: true
      type: ocp
Copy to Clipboard Toggle word wrap

4.14. oc-mirror のコマンドリファレンス

以下の表は、oc mirror サブコマンドとフラグを説明しています。

Expand
表4.2 oc mirror サブコマンド
サブコマンド説明

completion

指定されたシェルのオートコンプリートスクリプトを生成します。

describe

イメージセットの内容を出力します。

help

サブコマンドに関するヘルプを表示します。

init

初期イメージセット設定テンプレートを出力します。

list

利用可能なプラットフォームと Operator のコンテンツとそのバージョンを一覧表示します。

version

oc-mirror バージョンを出力します。

Expand
表4.3 oc mirror フラグ
フラグ説明

-c--config <string>

イメージセット設定ファイルへのパスを指定します。

--continue-on-error

イメージのプルに関連しないエラーが発生した場合は、続行して、可能な限りミラーリングを試みます。

--dest-skip-tls

ターゲットレジストリーの TLS 検証を無効にします。

--dest-use-http

ターゲットレジストリーにはプレーン HTTP を使用します。

--dry-run

イメージをミラーリングせずにアクションを出力します。mapping.txt ファイルおよび pruning-plan.json ファイルを生成します。

--from <string>

oc-mirror の実行によって生成されたイメージセットアーカイブへのパスを指定して、ターゲットレジストリーにロードします。

-h--help

ヘルプを表示します。

--ignore-history

イメージをダウンロードしてレイヤーをパックするときに、過去のミラーリングを無視します。増分ミラーリングを無効にし、より多くのデータをダウンロードする可能性があります。

--manifests-only

ImageContentSourcePolicy オブジェクトのマニフェストを生成して、ミラーレジストリーを使用するようにクラスターを設定しますが、実際にはイメージをミラーリングしません。このフラグを使用するには、--from フラグでイメージセットアーカイブを渡す必要があります。

--max-nested-paths <int>

ネストされたパスを制限する宛先レジストリーのネストされたパスの最大数を指定します。デフォルトは 0 です。

--max-per-registry <int>

レジストリーごとに許可される同時要求の数を指定します。デフォルト値は 6 です。

--oci-insecure-signature-policy

(--include-local-oci-catalogs を使用して) ローカル OCI カタログをミラーリングする場合は、署名をプッシュしないでください。

--oci-registries-config

(--include-local-oci-catalogs を使用して) ローカル OCI カタログをミラーリングするときに、コピー元の代替レジストリーの場所を指定するためのレジストリー設定ファイルを提供します。

--skip-cleanup

アーティファクトディレクトリーの削除を省略します。

--skip-image-pin

Operator カタログのイメージタグをダイジェストピンに置き換えないでください。

--skip-metadata-check

イメージセットの公開時にメタデータをスキップします。

注記

これは、イメージセットが --ignore-history フラグを使用して作成された場合にのみ推奨されます。

--skip-missing

イメージが見つからない場合は、エラーを報告して実行を中止する代わりにスキップします。イメージセット設定で明示的に指定されたカスタムイメージには適用されません。

--skip-pruning

ターゲットミラーレジストリーからのイメージの自動プルーニングを無効にします。

--skip-verification

ダイジェストの検証を省略します。

--source-skip-tls

ソースレジストリーの TLS 検証を無効にします。

--source-use-http

ソースレジストリーにはプレーン HTTP を使用します。

-v--verbose <int>

ログレベルの詳細度の数値を指定します。有効な値は 0 - 9 です。デフォルトは 0 です。

第5章 oc-mirror プラグイン v2 を使用した非接続インストールのイメージのミラーリング

プライベートレジストリー内のミラー化された OpenShift Container Platform コンテナーイメージセットからクラスターをインストールすると、直接インターネットに接続せずに制限されたネットワーク内でクラスターを実行できます。このレジストリーは、クラスターが実行中の場合は常に実行されている必要があります。

完全または部分的な非接続環境のミラーレジストリーにイメージをミラーリングするために、oc-mirror OpenShift CLI (oc) プラグインを使用できルノと同様に、oc-mirror プラグイン v2 を使用できます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror プラグイン v2 を実行する必要があります。

重要

oc-mirror プラグイン v2 はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

5.1. 前提条件

  • コンテナーイメージレジストリー用の既存ソリューションがない場合、OpenShift Container Platform サブスクライバーには Red Hat OpenShift のミラーレジストリーが提供されます。このミラーレジストリーはサブスクリプションに含まれており、小規模なコンテナーレジストリーとして機能します。このレジストリーを使用して、非接続インストールに必要な OpenShift Container Platform のコンテナーイメージをミラーリングできます。
  • プロビジョニングされたクラスター内のすべてのマシンは、ミラーレジストリーにアクセスできる必要があります。レジストリーにアクセスできない場合、インストールや更新などのタスクや、ワークロードの再配置などの日常的な操作が失敗する可能性があります。ミラーレジストリーは、その可用性が OpenShift Container Platform クラスターの実稼働環境の可用性と一致するように、可用性の高い方法で運用する必要があます。

ワークフローの概要

次の手順は、oc-mirror プラグイン v2 を使用してイメージをミラーレジストリーにミラーリングする方法の概要を示しています。

  1. イメージセット設定ファイルを作成します。
  2. 次のいずれかのワークフローを使用して、イメージセットをターゲットミラーレジストリーにミラーリングします。

    • イメージセットをターゲットミラーレジストリーに直接 (ミラーからミラーに) ミラーリングします。

      • イメージセットをディスクにミラーリングし (Mirror-to-Disk)、tar ファイルをターゲット環境に転送してから、イメージセットをターゲットミラーレジストリーにミラーリングします (Disk-to-Mirror)。
  3. oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
  4. 必要に応じてこれらの手順を繰り返して、ターゲットミラーレジストリーを更新します。

5.2. oc-mirror プラグイン v2 について

oc-mirror OpenShift CLI (oc) プラグインは、必要なすべての OpenShift Container Platform コンテンツとその他のイメージをミラーレジストリーにミラーリングする単一のツールです。

oc-mirror の新しいテクノロジープレビューバージョンを使用するには、oc-mirror プラグイン v2 コマンドラインに --v2 フラグを追加します。

oc-mirror プラグイン v2 には次の機能があります。

  • イメージが以前にミラーリングされたかどうかに関係なく、イメージセット設定で指定された完全なイメージセットが、ミラーされたレジストリーにミラーリングされていることを確認します。
  • メタデータの代わりにキャッシュシステムを使用します。
  • 新しいイメージのみをアーカイブに組み込むことで、アーカイブのサイズを最小限に抑えます。
  • ミラーリングの日付で選択したコンテンツを含むミラーリングアーカイブを生成します。
  • 増分を変更するだけでなく、完全なイメージセットに対して、ImageContentSourcePolicy (ICSP) の代わりに ImageDigestMirrorSet (IDMS)、ImageTagMirrorSet (ITMS) を生成できます。
  • バンドル名に基づきフィルター Operator のバージョンを保存します。
  • 自動プルーニングは実行されません。V2 には Delete 機能が追加され、ユーザーはイメージの削除をより細かく制御できるようになりました。
  • registries.conf のサポートを導入します。この変更により、同じキャッシュを使用しつつ複数のエンクレーブに容易にミラーリングできます。

5.2.1. oc-mirror プラグイン v2 の互換性とサポート

oc-mirror プラグイン v2 は、OpenShift Container Platform でサポートされています。

注記

aarch64ppc64le、および s390x アーキテクチャーでは、oc-mirror プラグイン v2 は OpenShift Container Platform バージョン 4.14 以降でのみサポートされます。

ミラーリングする必要がある OpenShift Container Platform のバージョンに関係なく、使用可能な最新バージョンの oc-mirror プラグイン v2 を使用してください。

5.3. ミラーホストの準備

イメージミラーリングに oc-mirror プラグイン v2 を使用するには、プラグインをインストールし、コンテナーイメージの認証情報を含むファイルを作成して、Red Hat からミラーにミラーリングできるようにする必要があります。

5.3.1. oc-mirror OpenShift CLI プラグインのインストール

非接続環境でイメージセットを管理するには、oc-mirror OpenShift CLI プラグインをインストールします。

前提条件

  • OpenShift CLI (oc) がインストールされている。完全な非接続環境でイメージセットをミラーリングする場合は、次の点を確認してください。

    • インターネットにアクセスできるホストに oc-mirror プラグインをインストールした。
    • 非接続環境のホストが、ターゲットミラーレジストリーにアクセスできる。
  • oc-mirror を使用するオペレーティングシステムで、umask パラメーターを 0022 に設定した。
  • 使用している RHEL バージョンに適したバイナリーをインストールした。

手順

  1. oc-mirror CLI プラグインをダウンロードします。

    1. OpenShift Cluster Managerダウンロード ページに移動します。
    2. OpenShift 切断インストールツール セクションで、OpenShift Client (oc) ミラープラグインダウンロード をクリックしてファイルを保存します。
  2. アーカイブを抽出します。

    $ tar xvzf oc-mirror.tar.gz
    Copy to Clipboard Toggle word wrap
  3. 必要に応じて、プラグインファイルを更新して実行可能にします。

    $ chmod +x oc-mirror
    Copy to Clipboard Toggle word wrap
    注記

    oc-mirror ファイルの名前を変更しないでください。

  4. ファイルを PATH に配置して、oc-mirror CLI プラグインをインストールします (例: /usr/local/bin):。

    $ sudo mv oc-mirror /usr/local/bin/.
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行して、oc-mirror v2 のプラグインが正常にインストールされていることを確認します。

    $ oc mirror --v2 --help
    Copy to Clipboard Toggle word wrap

5.3.2. イメージのミラーリングを可能にする認証情報の設定

Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。

警告

クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。

警告

このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。

前提条件

  • 非接続環境で使用するミラーレジストリーを設定した。
  • イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
  • イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。

手順

インストールホストで以下の手順を実行します。

  1. registry.redhat.io プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。
  2. JSON 形式でプルシークレットのコピーを作成します。

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 
    1
    Copy to Clipboard Toggle word wrap
    1
    プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。

    ファイルの内容は以下の例のようになります。

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap
  3. ファイルを $XDG_RUNTIME_DIR/containers/auth.json として保存します。
  4. ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。

    $ echo -n '<user_name>:<password>' | base64 -w0 
    1
    
    BGVtbYk3ZHAtqXs=
    Copy to Clipboard Toggle word wrap
    1
    <user_name> および <password> には、レジストリーに設定したユーザー名およびパスワードを指定します。
  5. JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。

      "auths": {
        "<mirror_registry>": { 
    1
    
          "auth": "<credentials>", 
    2
    
          "email": "you@example.com"
        }
      },
    Copy to Clipboard Toggle word wrap
    1
    ミラーレジストリーがコンテンツを提供するために使用するレジストリーのドメイン名およびポート (オプション) を指定します。例: registry.example.com または registry.example.com:8443
    2
    ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードを指定します。

    ファイルは以下の例のようになります。

    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "you@example.com"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

5.4. イメージセットをミラーレジストリーにミラーリングする

イメージセットをミラーレジストリーにミラーリングすると、必要なイメージがセキュアで制御された環境で利用できるようになるため、デプロイメント、更新、メンテナンスのタスクがスムーズになります。

5.4.1. イメージセット設定のビルド

oc-mirror プラグイン v2 は、イメージセット設定を入力ファイルとして使用して、ミラーリングに必要なイメージを決定します。

ImageSetConfiguration 入力ファイルの例

kind: ImageSetConfiguration
apiVersion: mirror.openshift.io/v2alpha1
mirror:
  platform:
    channels:
    - name: stable-4.13
      minVersion: 4.13.10
      maxVersion: 4.13.10
    graph: true
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
      packages:
       - name: aws-load-balancer-operator
       - name: 3scale-operator
       - name: node-observability-operator
  additionalImages:
   - name: registry.redhat.io/ubi8/ubi:latest
   - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
Copy to Clipboard Toggle word wrap

5.4.2. 部分的な非接続環境でのイメージセットのミラーリング

インターネットアクセスが制限されている環境では、oc-mirror プラグイン v2 を使用してイメージセットをレジストリーにミラーリングできます。

前提条件

  • インターネット接続があり、oc-mirror プラグイン v2 を実行している環境内のミラーレジストリーにアクセスできる。

手順

  • 次のコマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。

    $ oc mirror -c isc.yaml --workspace file://<file_path> docker://<mirror_registry_url> --v2 
    1
    Copy to Clipboard Toggle word wrap
    1
    イメージの保存先であり、そこからイメージを削除する必要があるミラーレジストリーの URL またはアドレスを指定します。

検証

  1. <file_path> ディレクトリーに生成された working-dir ディレクトリー内の cluster-resources ディレクトリーに移動します。
  2. ImageDigestMirrorSetImageTagMirrorSetCatalogSource リソースの YAML ファイルが存在することを確認します。

次のステップ

  • oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。

5.4.3. 完全な非接続環境でのイメージセットのミラーリング

OpenShift Container Platform クラスターがパブリックインターネットにアクセスできない完全な非接続環境で、イメージセットをミラーリングできます。

  1. ディスクにミラーリングする: ミラーリングするイメージセットを含むアーカイブを準備します。インターネットアクセスは必要ありません。
  2. 手動手順: 非接続ミラーレジストリーのネットワークにアーカイブを転送します。
  3. ミラーリングするディスク: アーカイブからターゲットの非接続レジストリーにイメージセットをミラーリングするには、ミラーレジストリーにアクセスできる環境から oc-mirror プラグイン v2 を実行します。
5.4.3.1. ミラーからディスクへのミラーリング

oc-mirror プラグイン v2 を使用して、イメージセットを生成し、コンテンツをディスクに保存できます。その後、生成されたイメージセットを非接続環境に転送し、ターゲットレジストリーにミラーリングできます。

oc-mirror プラグイン v2 は、イメージセット設定で指定されたソースからコンテナーイメージを取得し、ローカルディレクトリーの tar アーカイブにパックします。

手順

  • 次のコマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。

    $ oc mirror -c isc.yaml file://<file_path> --v2 
    1
    Copy to Clipboard Toggle word wrap
    1
    必要なファイルパスを追加します。

検証

  1. 生成された <file_path> ディレクトリーに移動します。
  2. アーカイブファイルが生成されたことを確認します。

次のステップ

  • oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
5.4.3.2. ディスクからミラーへのミラーリング

oc-mirror プラグイン v2 を使用して、ディスクからターゲットミラーレジストリーにイメージセットをミラーリングできます。

oc-mirror プラグイン v2 は、ローカルディスクからコンテナーイメージを取得し、指定されたミラーレジストリーに転送します。

手順

  • 次のコマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。

    $ oc mirror -c isc.yaml --from file://<file_path> docker://<mirror_registry_url> --v2 
    1
    Copy to Clipboard Toggle word wrap
    1
    イメージの保存先であり、そこからイメージを削除する必要があるミラーレジストリーの URL またはアドレスを指定します。

検証

  1. <file_path> ディレクトリーに生成された working-dir ディレクトリー内の cluster-resources ディレクトリーに移動します。
  2. ImageDigestMirrorSetImageTagMirrorSetCatalogSource リソースの YAML ファイルが存在することを確認します。

次のステップ

  • oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。

5.5. 関連情報

5.6. v2 が生成するカスタムリソース

oc-mirror プラグイン v2 では、タグが参照するイメージが 1 つ以上あれば、ImageDigestMirrorSet (IDMS) と ImageTagMirrorSet (ITMS) がデフォルトで生成されます。これらのセットには、リリース、Operator カタログ、および追加イメージのダイジェストまたはタグにより参照されるイメージのミラーが含まれています。

ImageDigestMirrorSet (IDMS) は、ミラーレジストリーをソースレジストリーにリンクし、ダイジェスト仕様を使用してイメージプルリクエストを転送します。ただし、ImagetagMirrorSet (ITMS) リソースは、イメージタグを使用してイメージプルリクエストをリダイレクトします。

Operator Lifecycle Manager (OLM) は、CatalogSource リソースを使用して、ミラーレジストリー内の利用可能な Operator に関する情報を取得します。

OSUS サービスは、UpdateService リソースを使用して非接続環境に Cincinnati グラフを提供します。

5.6.1. oc-mirror プラグイン v2 が生成したリソースを使用するためのクラスター設定

イメージセットをミラーレジストリーにミラーリングした後、生成された ImageDigestMirrorSet (IDMS)、ImageTagMirrorSet (ITMS)、CatalogSource、および UpdateService をクラスターに適用する必要があります。

重要

oc-mirror プラグイン v2 では、oc-mirror プラグイン v1 の ICSP ファイルとは異なり、IDMS ファイルと ITMS ファイルがイメージセット全体をカバーします。したがって、増分ミラーリング中に新しいイメージのみを追加した場合でも、IDMS ファイルと ITMS ファイルにはセットのすべてのイメージが含まれます。

前提条件

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

手順

  • 以下のコマンドを実行して、results ディレクトリーからクラスターに YAML ファイルを適用します。

    $ oc apply -f <path_to_oc-mirror_workspace>/working-dir/cluster-resources
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、ImageDigestMirrorSet リソースが正常にインストールされたことを確認します。

    $ oc get imagedigestmirrorset
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、ImageTagMirrorSet リソースが正常にインストールされたことを確認します。

    $ oc get imagetagmirrorset
    Copy to Clipboard Toggle word wrap
  3. 以下のコマンドを実行して、CatalogSource リソースが正常にインストールされたことを確認します。

    $ oc get catalogsource -n openshift-marketplace
    Copy to Clipboard Toggle word wrap

5.7. 非接続環境からのイメージ削除

oc-mirror プラグイン v2 を使用する前に、以前にデプロイしたイメージを削除する必要があります。oc-mirror プラグイン v2 では、自動プルーニングは実行されなくなりました。

oc-mirror プラグイン v2 を使用する場合は、イメージ設定を削除するために DeleteImageSetConfiguration ファイルを作成する必要があります。これにより、ImageSetConfig.yaml で変更を加えたときに、必要なイメージやデプロイされたイメージの誤削除がなくなります。

次の例では、DeleteImageSetConfiguration で以下が削除されます。

  • OpenShift Container Platform リリース 4.13.3 のすべてのイメージ。
  • カタログイメージ redhat-operator-index v4.12
  • aws-load-balancer-Operator v0.0.1 バンドルと関連するすべてのイメージ。
  • 対応するダイジェストが参照する追加イメージ ubi および ubi-minimal

例: DeleteImageSetConfig

apiVersion: mirror.openshift.io/v2alpha1
kind: DeleteImageSetConfiguration
delete:
  platform:
    channels:
      - name: stable-4.13
        minVersion: 4.13.3
        maxVersion: 4.13.3
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12
      packages:
      - name: aws-load-balancer-operator
         minVersion: 0.0.1
         maxVersion: 0.0.1
  additionalImages:
    - name: registry.redhat.io/ubi8/ubi@sha256:bce7e9f69fb7d4533447232478fd825811c760288f87a35699f9c8f030f2c1a6
    - name: registry.redhat.io/ubi8/ubi-minimal@sha256:8bedbe742f140108897fb3532068e8316900d9814f399d676ac78b46e740e34e
Copy to Clipboard Toggle word wrap

重要

ミラーリングの問題を軽減するために、mirror-to-disk と disk-to-mirror のワークフローの使用を検討してください。

イメージ削除ワークフローでは、oc-mirror プラグイン v2 はイメージのマニフェストのみを削除するため、レジストリーで占有されるストレージは削減されません。

マニフェストが削除されたイメージなど、不要なイメージが使用するストレージ領域を解放するには、コンテナーレジストリーでガベージコレクターを有効にする必要があります。ガベージコレクターを有効にすると、レジストリーはマニフェストへの参照がなくなったイメージ Blob を削除します。そのため、削除された Blob が使用していたストレージが削減されます。ガベージコレクターを有効にする方法は、コンテナーレジストリーにより異なります。

重要

イメージの削除時に Operator カタログイメージの削除をスキップするには、DeleteImageSetConfiguration ファイル内の Operator カタログイメージの下に特定の Operator をリストする必要があります。そうすることで、カタログイメージではなく、指定された Operator のみが削除されます。

Operator カタログイメージのみを指定した場合、そのカタログ内のすべての Operator とカタログイメージ自体が削除されます。

5.7.1. 非接続環境からイメージを削除する

oc-mirror プラグイン v2 を使用して非接続環境からイメージを削除するには、次の手順に従います。

手順

  1. 以前のイメージを削除する YAML ファイルを作成します。

    $ oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>
    Copy to Clipboard Toggle word wrap

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

    • <previously_mirrored_work_folder>: ミラーリングプロセス中に、イメージが以前にミラーリングまたは保存されたディレクトリーを使用します。
    • <remote_registry>: 削除するイメージがあるリモートコンテナーレジストリーの URL またはアドレスを挿入します。
  2. 作成された <previously_mirrored_work_folder>/delete directory に移動します。
  3. delete-images.yaml ファイルが生成されたことを確認します。
  4. ファイルにリストされている各イメージがクラスターで不要になり、レジストリーから安全に削除できることを手動で確認します。
  5. delete YAML ファイルを生成した後に、リモートレジストリーからイメージを削除します。

    $ oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/delete/delete-images.yaml docker:/ <remote_registry>
    Copy to Clipboard Toggle word wrap

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

    • <previously_mirrored_work_folder>: 以前にミラーリングした作業フォルダーを指定します。

      重要

      mirror-to-mirror 手順を使用する場合、イメージはローカルにキャッシュされないため、ローカルキャッシュからイメージを削除することはできません。

5.8. ミラーリング用に選択したイメージを確認する

oc-mirror プラグイン v2 を使用して、実際にはイメージをミラーリングしないテストラン (ドライラン) を実行できます。これにより、ミラーリングされるイメージのリストを確認できます。ドライランは、イメージセット設定のエラーを早期に検出するためにも使用できます。mirror-to-disk のワークフローでドライランを実行する場合、oc-mirror プラグイン v2 は、イメージセット内のすべてのイメージがキャッシュ内で使用可能か確認します。不足しているイメージは missing.txt ファイルにリストされます。ミラーリングの前にドライランを実行すると、missing.txt ファイルと mapping.txt ファイルには同じイメージリストが含まれています。

5.8.1. oc-mirror プラグイン v2 のドライランを実行する

イメージをミラーリングせずにドライランを実行して、イメージセットの設定を確認します。これにより、セットアップが正しいことを確認でき、意図しない変更を防止できます。

手順

  • テストランを実行するには、oc mirror コマンドを実行し、コマンドに --dry-run 引数を追加します。

    $ oc mirror -c <image_set_config_yaml> --from file://<oc_mirror_workspace_path> docker://<mirror_registry_url> --dry-run --v2
    Copy to Clipboard Toggle word wrap

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

    • <image_set_config_yaml>: 先ほど作成したイメージセット設定ファイルを使用します。
    • <oc_mirror_workspace_path>: ワークスペースパスのアドレスを挿入します。
    • <mirror_registry_url>: イメージを削除するリモートコンテナーレジストリーの URL またはアドレスを挿入します。

      出力例

      $ oc mirror --config /tmp/isc_dryrun.yaml file://<oc_mirror_workspace_path> --dry-run --v2
      
      [INFO]   : :warning:  --v2 flag identified, flow redirected to the oc-mirror v2 version. This is Tech Preview, it is still under development and it is not production ready.
      [INFO]   : :wave: Hello, welcome to oc-mirror
      [INFO]   : :gear:  setting up the environment for you...
      [INFO]   : :twisted_rightwards_arrows: workflow mode: mirrorToDisk
      [INFO]   : :sleuth_or_spy:  going to discover the necessary images...
      [INFO]   : :mag: collecting release images...
      [INFO]   : :mag: collecting operator images...
      [INFO]   : :mag: collecting additional images...
      [WARN]   : :warning:  54/54 images necessary for mirroring are not available in the cache.
      [WARN]   : List of missing images in : CLID-19/working-dir/dry-run/missing.txt.
      please re-run the mirror to disk process
      [INFO]   : :page_facing_up: list of all images for mirroring in : CLID-19/working-dir/dry-run/mapping.txt
      [INFO]   : mirror time     : 9.641091076s
      [INFO]   : :wave: Goodbye, thank you for using oc-mirror
      Copy to Clipboard Toggle word wrap

検証

  1. 生成されたワークスペースディレクトリーに移動します。

    $ cd <oc_mirror_workspace_path>
    Copy to Clipboard Toggle word wrap
  2. 生成された mapping.txt ファイルと missing.txt ファイルを確認します。これらのファイルには、ミラーリングされるすべてのイメージのリストが含まれています。

5.8.2. oc-mirror プラグイン v2 エラーのトラブルシューティング

oc-mirror プラグイン v2 では、すべてのイメージミラーリングエラーが別のファイルに記録されるようになり、障害の追跡と診断が容易になりました。

重要

リリースイメージまたはリリースコンポーネントイメージのミラーリング中にエラーが発生した場合、それは重大なエラーです。これにより、ミラーリングプロセスが直ちに停止します。

Operator、Operator 関連イメージ、または追加イメージのミラーリングに関するエラーが発生しても、ミラーリングプロセスは停止しません。ミラーリングは継続され、oc-mirror プラグイン v2 は 8 イメージごとに更新を記録します。

イメージのミラーリングに失敗し、そのイメージが 1 つ以上の Operator バンドルの一部としてミラーリングされている場合、oc-mirror プラグイン v2 は、どの Operator が不完全であるかをユーザーに通知し、エラーの影響を受ける Operator バンドルを明確に示します。

手順

  1. サーバー関連の問題を確認します。

    エラーの例

    [ERROR]  : [Worker] error mirroring image localhost:55000/openshift/graph-image:latest error: copying image 1/4 from manifest list: trying to reuse blob sha256:edab65b863aead24e3ed77cea194b6562143049a9307cd48f86b542db9eecb6e at destination: pinging container registry localhost:5000: Get "https://localhost:5000/v2/": http: server gave HTTP response to HTTPS client
    Copy to Clipboard Toggle word wrap

    1. oc-mirror プラグイン v2 出力ディレクトリーにある working-dir/logs フォルダー内の mirroring_error_date_time.log ファイルを開きます。
    2. HTTP 500 エラー、期限切れのトークン、タイムアウトなどの、通常はサーバー側の問題を示すエラーメッセージを探します。
    3. 問題が解決しない場合は、ミラーリングプロセスを再試行するか、サポートにお問い合わせください。
  2. Operator の不完全なミラーリングを確認します。

    エラーの例

    error mirroring image docker://registry.redhat.io/3scale-amp2/zync-rhel9@sha256:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/zync-rhel9:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d: reading manifest 8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d in localhost:55000/3scale-amp2/zync-rhel9: manifest unknown
    error mirroring image docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d error: skipping operator bundle docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d because one of its related images failed to mirror
    error mirroring image docker://registry.redhat.io/3scale-amp2/system-rhel7@sha256:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
    Copy to Clipboard Toggle word wrap

    1. コンソールまたはログファイルで、どの Operator が不完全であるかを示す警告を確認します。

      Operator が不完全としてフラグ付けされている場合、その Operator に関連するイメージのミラーリングに失敗した可能性があります。

    2. 不足しているイメージを手動でミラーリングするか、ミラーリングプロセスを再試行します。
  3. 生成されたクラスターリソースに関連するエラーを確認します。一部のイメージのミラーリングに失敗した場合でも、oc-mirror v2 は、正常にミラーリングされたイメージに対して IDMS.yaml ファイルや ITMS.yaml ファイルなどのクラスターリソースを生成します。

    1. 生成されたファイルの出力ディレクトリーを確認します。
    2. 特定のイメージでこれらのファイルが見つからない場合、ミラーリングプロセス中にそれらのイメージに重大なエラーが発生していないことを確認します。

これらの手順に従うことで、問題をより適切に診断し、よりスムーズにミラーリングを実行できます。

5.9. エンクレーブサポートの利点

エンクレーブサポートは、ネットワークの特定部分への内部アクセスを制限します。ファイアウォール境界を通過する受信トラフィックおよび送信トラフィックのアクセスを許可する非武装地帯 (DMZ) ネットワークとは異なり、エンクレーブはファイアウォール境界を越えません。

重要

エンクレーブサポートはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

新しいエンクレーブサポート機能は、少なくとも 1 つの中間非接続ネットワークの背後で保護された複数のエンクレーブのミラーリングが必要な場合に使用します。

エンクレーブサポートには次の利点があります。

  • 複数のエンクレーブのコンテンツをミラーリングし、単一の内部レジストリーに集約できます。ミラーリングされたコンテンツに対してセキュリティーチェックを実行する必要がある場合もありますが、そのようなチェックもこのセットアップですべて一度に実行できます。その後、コンテンツはダウンストリームのエンクレーブにミラーリングされる前に検査されます。
  • 各エンクレーブに対してインターネットからミラーリングプロセスを再開することなく、集約された内部レジストリーからエンクレーブにコンテンツを直接ミラーリングできます。
  • ネットワークステージ間のデータ転送を最小限に抑え、ステージ間で Blob またはイメージが 1 回だけ転送されるようにできます。

5.9.1. エンクレーブへのミラーリングのワークフロー

上の画像は、インターネット接続のある環境とない環境を含むさまざまな環境で oc-mirror プラグインを使用するフローの概要を示しています。

インターネット接続環境:

  1. ユーザーが oc-mirror プラグイン v2 を実行して、オンラインレジストリーのコンテンツをローカルディスクディレクトリーにミラーリングします。
  2. ミラーリングしたコンテンツを、オフライン環境への転送用のディスクに保存します。

非接続の企業環境 (インターネットなし):

  • フロー 1:

    • ユーザーが oc-mirror プラグイン v2 を実行して、オンライン環境から転送されたディスクディレクトリーのミラーリングされたコンテンツを enterprise-registry.in レジストリーにロードします。
  • フロー 2:

    1. registries.conf ファイルを更新した後、ユーザーは oc-mirror プラグイン v2 を実行して、enterprise-registry.in レジストリーのコンテンツをエンクレーブ環境にミラーリングします。
    2. コンテンツを、エンクレーブへの転送用のディスクディレクトリーに保存します。

エンクレーブ環境 (インターネットなし):

  • ユーザーが oc-mirror プラグイン v2 を実行して、ディスクディレクトリーのコンテンツを enclave-registry.in レジストリーにロードします。

この画像は、これらの環境全体のデータフローを視覚的に表しており、インターネット接続のない非接続環境やエンクレーブ環境に対応するために oc-mirror を使用することを強調しています。

5.9.2. エンクレーブへのミラーリング

エンクレーブにミラーリングする場合は、まず 1 つ以上のエンクレーブから必要なイメージをエンタープライズ集約レジストリーに転送する必要があります。

中央レジストリーは、セキュアなネットワーク内 (具体的には非接続環境内) に配置されており、パブリックインターネットに直接リンクされていません。ただしユーザーは、パブリックインターネットにアクセスできる環境で oc mirror を実行する必要があります。

手順

  1. 非接続環境で oc-mirror プラグイン v2 を実行する前に、registries.conf ファイルを作成します。ファイルの TOML 形式は、この仕様で説明されています。

    注記

    ファイルは、$HOME/.config/containers/registries.conf または /etc/containers/registries.conf に保存することが推奨されます。

    registries.conf の例

    [[registry]]
    location="registry.redhat.io"
    [[registry.mirror]]
    location="<enterprise-registry.in>"
    
    [[registry]]
    location="quay.io"
    [[registry.mirror]]
    location="<enterprise-registry.in>"
    Copy to Clipboard Toggle word wrap

  2. ミラーアーカイブを生成します。

    1. すべての OpenShift Container Platform コンテンツを <file_path>/enterprise-content 配下のディスクのアーカイブに収集するには、次のコマンドを実行します。

      $ oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
      Copy to Clipboard Toggle word wrap

      isc.yaml の例

      apiVersion: mirror.openshift.io/v2alpha1
      kind: ImageSetConfiguration
      mirror:
        platform:
          architectures:
            - "amd64"
          channels:
            - name: stable-4.15
              minVersion: 4.15.0
              maxVersion: 4.15.3
      Copy to Clipboard Toggle word wrap

      生成されたアーカイブは、非接続環境に転送されます。トランスポートメカニズムは、oc-mirror プラグイン v2 に含まれていません。転送ストラテジーは、エンタープライズネットワーク管理者が決定します。

      場合によっては、ディスクをある場所から物理的に取り外し、非接続環境内の別のコンピューターに接続することで、手動で転送します。その他の場合、セキュアファイル転送プロトコル (SFTP) またはその他のプロトコルを使用します。

  3. アーカイブの転送が完了したら、次の例のとおり、oc-mirror プラグイン v2 を再度実行して関連するアーカイブの内容をレジストリー (例では entrerpise_registry.in) にミラーリングできます。

    $ oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/
    Copy to Clipboard Toggle word wrap

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

    • --from は、アーカイブを含むフォルダーを指します。file:// で始まります。
    • docker:// はミラーリングの宛先であり、最後の引数です。Docker レジストリーであるため、そのようになります。
    • -c (--config) は必須の引数です。これにより、oc-mirror プラグイン v2 は最終的にアーカイブのサブ部分のみをレジストリーにミラーリングできます。1 つのアーカイブに複数の OpenShift Container Platform リリースが含まれる場合がありますが、非接続環境またはエンクレーブではそのうちのいくつかのみミラーリングされる可能性があります。
  4. エンクレーブにミラーリングするコンテンツを記述する imageSetConfig YAML ファイルを準備します。

    isc-enclave.yaml の例

    apiVersion: mirror.openshift.io/v2alpha1
    kind: ImageSetConfiguration
    mirror:
      platform:
        architectures:
          - "amd64"
        channels:
          - name: stable-4.15
            minVersion: 4.15.2
            maxVersion: 4.15.2
    Copy to Clipboard Toggle word wrap

    非接続レジストリーにアクセスできるマシン上で、oc-mirror プラグイン v2 を実行する必要があります。上記の例では、非接続環境 enterprise-registry.in にアクセスできます。

  5. グラフの URL を更新する

    graph:true を使用している場合、oc-mirror プラグイン v2 は cincinnati API エンドポイントに到達しようとします。この環境は接続されていないため、OpenShift Update Service (OSUS) の URL を参照するためには環境変数 UPDATE_URL_OVERRIDE をエクスポートする必要があります。

    $ export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph
    Copy to Clipboard Toggle word wrap

    OpenShift クラスターで OSUS を設定する方法の詳細は、「OpenShift Update Service を使用した非接続環境でのクラスターの更新」を参照してください。

注記

OpenShift Container Platform Extended Update Support (EUS) バージョンをアップグレードする場合、現行バージョンとターゲットバージョンの間に中間バージョンが必要になる場合があります。たとえば、最新バージョンが 4.14 で、ターゲットバージョンが 4.16 の場合、oc-mirror プラグイン v2 の使用時に ImageSetConfiguration4.15.8 などのバージョンを含める必要がある場合があります。

oc-mirror プラグイン v2 は必ずしもこれを自動的に検出するとは限りません。Cincinnati graph の Web ページで 必要な中間バージョンを確認し、手動で設定に追加してください。

  1. エンクレーブのエンタープライズレジストリーからミラーアーカイブを生成します。

    enclave1 のアーカイブを準備するには、ユーザーはそのエンクレーブ固有の imageSetConfiguration を使用して、エンタープライズ非接続環境で oc-mirror プラグイン v2 を実行します。これにより、そのエンクレーブに必要なイメージのみがミラーリングされます。

    $ oc mirror --v2 -c isc-enclave.yaml
    file:///disk-enc1/
    Copy to Clipboard Toggle word wrap

    このアクションは、OpenShift Container Platform のすべてのコンテンツをアーカイブに収集し、ディスク上にアーカイブを生成します。

  2. 生成されたアーカイブは、enclave1 ネットワークに転送されます。トランスポートメカニズムは、oc-mirror プラグイン v2 の責任にはあたりません。
  3. エンクレーブレジストリーにコンテンツをミラーリングする

    アーカイブの転送が完了すると、ユーザーは関連するアーカイブの内容をレジストリーにミラーリングするために、oc-mirror プラグイン v2 を再度実行できます。

    $ oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in
    Copy to Clipboard Toggle word wrap

    これで、enclave1 の OpenShift Container Platform クラスターの管理者が、そのクラスターをインストールまたはアップグレードする準備が整いました。

5.10. Operator カタログでのフィルタリング

oc-mirror プラグイン v2 は、imageSetConfig の情報を処理することで、ミラーリングするバンドルのリストを選択します。

oc-mirror プラグイン v2 は、ミラーリングするバンドルを選択するときに、Group Version Kind (GVK) またはバンドルの依存関係を推測せず、それらをミラーリングセットから除外します。代わりに、ユーザーの指示に厳密に従います。必要な依存関係パッケージとそのバージョンを明示的に指定する必要があります。

通常、バンドルバージョンではセマンティックバージョニングの標準 (SemVer) が使用され、チャネル内のバンドルをバージョン別に並べ替えることができます。ImageSetConfig で特定の範囲内のバンドルを選択できます。

この選択アルゴリズムにより、oc-mirror プラグイン v1 と比較して一貫性のある結果を得ることができます。ただし、replacesskipskipRange などのアップグレードグラフの詳細は含まれません。このアプローチは OLM アルゴリズムとは異なります。minVersionmaxVersion の間のアップグレードパスが短くなる可能性があるため、クラスターのアップグレードに必要な数よりも多くのバンドルがミラーリングされる可能性があります。

Expand
表5.1 さまざまなシナリオに含まれるバンドルバージョンを確認するには、次の表を使用してください。
ImageSetConfig Operator のフィルタリング予想されるバンドルバージョン

シナリオ 1

mirror:
 operators:
   - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
Copy to Clipboard Toggle word wrap

カタログ内の各パッケージに対し、そのパッケージのデフォルトチャネルのヘッドバージョンに対応する 1 つのバンドル。

シナリオ 2

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
      full: true
Copy to Clipboard Toggle word wrap

指定されたカタログのすべてのチャネルのすべてのバンドル

シナリオ 3

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
     packages:
    - name: compliance-operator
Copy to Clipboard Toggle word wrap

そのパッケージのデフォルトチャネルのヘッドバージョンに対応する 1 つのバンドル

シナリオ 4

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
      full: true
      - packages:
          - name: elasticsearch-operator
Copy to Clipboard Toggle word wrap

指定されたパッケージのすべてのチャネルのすべてのバンドル

シナリオ 5

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
       minVersion: 5.6.0
Copy to Clipboard Toggle word wrap

minVersion からそのパッケージのチャネルヘッドまでの、アップグレードグラフの最短パスに依存しない、デフォルトチャネル内のすべてのバンドル。

シナリオ 6

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

そのパッケージの maxVersion より数字が小さい、デフォルトチャネル内のすべてのバンドル。

シナリオ 7

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        minVersion: 5.6.0
        maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

そのパッケージの minVersionmaxVersion の間の、デフォルトチャネル内のすべてのバンドル。フィルタリングに複数のチャネルが含まれる場合でも、チャネルのヘッドは含まれません。

シナリオ 8

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
Copy to Clipboard Toggle word wrap

そのパッケージの選択されたチャネルのヘッドバンドル。

シナリオ 9

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
      full: true
      - packages:
          - name: elasticsearch-operator
            channels:
               - name: 'stable-v0'
Copy to Clipboard Toggle word wrap

指定されたパッケージとチャネルのすべてのバンドル。

シナリオ 10

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
          - name: stable-5.5
Copy to Clipboard Toggle word wrap

そのパッケージの選択された各チャネルのヘッドバンドル。

シナリオ 11

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
            minVersion: 5.6.0
Copy to Clipboard Toggle word wrap

そのパッケージの選択されたチャネル内の、minVersion からチャネルヘッドまでのすべてのバージョン。このシナリオは、アップグレードグラフからの最短パスに依存しません。

シナリオ 12

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
            maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

そのパッケージの選択されたチャネル内の、maxVersion までのすべてのバージョン (アップグレードグラフからの最短パスに依存しません)。フィルタリングに複数のチャネルが含まれる場合でも、チャネルのヘッドは含まれません。

シナリオ 13

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
       channels
          - name: stable
            minVersion: 5.6.0
            maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

そのパッケージの選択されたチャネル内の、アップグレードグラフからの最短パスに依存しない、minVersionmaxVersion の間のすべてのバージョン。フィルタリングに複数のチャネルが含まれる場合でも、チャネルのヘッドは含まれません。

シナリオ 14

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
    packages:
    - name: aws-load-balancer-operator
      bundles:
      - name: aws-load-balancer-operator.v1.1.0
    - name: 3scale-operator
      bundles:
      - name: 3scale-operator.v0.10.0-mas
Copy to Clipboard Toggle word wrap

各パッケージに指定されたバンドルのみがフィルタリングに含まれます。

シナリオ 15

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
        minVersion: 5.6.0
        maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

このシナリオは使用しないでください。チャネルでのフィルタリング、およびminVersion または maxVersion を使用したパッケージでのフィルタリングは許可されません。

シナリオ 16

mirror:
  operators:
   - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
        minVersion: 5.6.0
        maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

このシナリオは使用しないでください。full:true と、minVersion または maxVersion を使用してフィルタリングすることはできません。

シナリオ 17

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
      full: true
    packages:
    - name: compliance-operator
        channels
          - name: stable
            minVersion: 5.6.0
            maxVersion: 6.0.0
Copy to Clipboard Toggle word wrap

このシナリオは使用しないでください。full:true と、minVersion または maxVersion を使用してフィルタリングすることはできません。

5.11. oc-mirror プラグイン v2 の ImageSet 設定パラメーター

oc-mirror プラグイン v2 には、ミラーリングするイメージを定義するイメージセット設定ファイルが必要です。次の表に、ImageSetConfiguration リソースで使用可能なパラメーターを示します。

注記

minVersion および maxVersion プロパティーを使用して特定の Operator バージョン範囲をフィルターすると、複数のチャネルヘッドエラーが発生する可能性があります。エラーメッセージには、multiple channel heads があることが示されます。これは、フィルターを適用すると、Operator の更新グラフが切り捨てられるためです。

OLM の要件として、すべての Operator チャネルに、1 つのエンドポイント (つまり最新バージョンの Operator) を持つ更新グラフを構成するバージョンが含まれている必要があります。フィルター範囲を適用すると、更新グラフが 2 つ以上の個別のグラフ、または複数のエンドポイントを持つグラフに変換されることがあります。

このエラーを回避するには、最新バージョンの Operator を除外しないでください。それでもエラーが発生する場合は、Operator に応じて、maxVersion プロパティーを増やすか、minVersion プロパティーを減らす必要があります。Operator グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。

Expand
表5.2 ImageSetConfiguration パラメーター
パラメーター説明

apiVersion

ImageSetConfiguration コンテンツの API バージョン。

文字列の例: mirror.openshift.io/v2alpha1

archiveSize

イメージセット内の各アーカイブファイルの最大サイズ (GiB 単位)。

整数の例: 4

mirror

イメージセットの設定。

オブジェクト

mirror.additionalImages

イメージセットの追加のイメージ設定。

オブジェクトの配列

以下に例を示します。

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest
Copy to Clipboard Toggle word wrap

mirror.additionalImages.name

ミラーリングするイメージのタグまたはダイジェスト。

文字列の例: registry.redhat.io/ubi8/ubi:latest

mirror.blockedImages

ミラーリングをブロックするタグまたはダイジェスト (SHA) を持つイメージのリスト。

文字列配列の例: docker.io/library/alpine

mirror.operators

イメージセットの Operators 設定。

オブジェクトの配列

以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.16
    packages:
      - name: elasticsearch-operator
        minVersion: '2.4.0'
Copy to Clipboard Toggle word wrap

mirror.operators.catalog

イメージセットに含める Operator カタログ。

文字列の例: registry.redhat.io/redhat/redhat-operator-index:v4.15

mirror.operators.full

true の場合、完全なカタログ、Operator パッケージ、または Operator チャネルをダウンロードします。

ブール値。デフォルト値は false です。

mirror.operators.packages

Operator パッケージ設定

オブジェクトの配列

以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.16
    packages:
      - name: elasticsearch-operator
        minVersion: '5.2.3-31'
Copy to Clipboard Toggle word wrap

mirror.operators.packages.name

イメージセットに含める Operator パッケージ名

文字列の例: elasticsearch-operator

mirror.operators.packages.channels

Operator パッケージのチャネル設定。

オブジェクト

mirror.operators.packages.channels.name

イメージセットに含める、パッケージ内で一意の Operator チャネル名。

文字列の例: fast または stable-v4.15

mirror.operators.packages.channels.maxVersion

Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。

文字列の例: 5.2.3-31

mirror.operators.packages.channels.minVersion

存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。

文字列の例: 5.2.3-31

mirror.operators.packages.maxVersion

Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。

文字列の例: 5.2.3-31

mirror.operators.packages.minVersion

存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。

文字列の例: 5.2.3-31

mirror.operators.packages.bundles

選択したバンドルの設定

オブジェクトの配列

以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.16
    packages:
    - name: 3scale-operator
      bundles:
      - name: 3scale-operator.v0.10.0-mas
Copy to Clipboard Toggle word wrap

mirror.operators.packages.bundles.name

ミラーリング対象として選択されたバンドルの名前 (カタログに表示される名前)。

文字列の例: 3scale-operator.v0.10.0-mas

mirror.operators.targetCatalog

参照されるカタログをミラーリングするための代替名とオプションの namespace 階層。

文字列の例: my-namespace/my-operator-catalog

mirror.operators.targetCatalogSourceTemplate

oc-mirror プラグイン v2 が生成した catalogSource カスタムリソースを完了するために使用するテンプレートのディスク上のパス。

文字列の例: /tmp/catalog-source_template.yaml テンプレートファイルの例:

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: discarded
  namespace: openshift-marketplace
spec:
  image: discarded
  sourceType: grpc
  updateStrategy:
    registryPoll:
      interval: 30m0s
Copy to Clipboard Toggle word wrap

mirror.operators.targetTag

targetName または targetCatalog に追加する代替タグ。

文字列の例: v1

mirror.platform

イメージセットのプラットフォーム設定。

オブジェクト

mirror.platform.architectures

ミラーリングするプラットフォームリリースペイロードのアーキテクチャー。

文字列の配列例:

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x
Copy to Clipboard Toggle word wrap

デフォルト値は amd64 です。値 multi を指定すると、使用可能なすべてのアーキテクチャーでミラーリングがサポートされ、個別のアーキテクチャーを指定する必要がなくなります。

mirror.platform.channels

イメージセットのプラットフォームチャネル設定。

オブジェクトの配列の例:

channels:
  - name: stable-4.12
  - name: stable-4.16
Copy to Clipboard Toggle word wrap

mirror.platform.channels.full

true の場合、minVersion をチャネルの最初のリリースに設定し、maxVersion をチャネルの最後のリリースに設定します。

ブール値。デフォルト値は false です。

mirror.platform.channels.name

リリースチャネルの名前。

文字列の例: stable-4.15

mirror.platform.channels.minVersion

ミラーリングされる参照プラットフォームの最小バージョン。

文字列の例: 4.12.6

mirror.platform.channels.maxVersion

ミラーリングされる参照プラットフォームの最上位バージョン。

文字列の例: 4.15.1

mirror.platform.channels.shortestPath

最短パスミラーリングまたはフルレンジミラーリングを切り替えます。

ブール値。デフォルト値は false です。

mirror.platform.channels.type

ミラーリングするプラットフォームのタイプ。

文字列の例: ocp または okd。デフォルトは ocp です。

mirror.platform.graph

OSUS グラフがイメージセットに追加され、その後ミラーに公開されるかどうかを示します。

ブール値。デフォルト値は false です。

5.11.1. ImageSet 設定パラメーターを削除する

oc-mirror プラグイン v2 を使用するには、ミラーレジストリーから削除するイメージを定義するイメージセット削除設定ファイルが必要です。次の表は、DeleteImageSetConfiguration リソースで使用可能なパラメーターを示しています。

Expand
表5.3 DeleteImageSetConfiguration パラメーター
パラメーター説明

apiVersion

DeleteImageSetConfiguration コンテンツの API バージョン。

文字列の例: mirror.openshift.io/v2alpha1

delete

削除するイメージセットの設定。

オブジェクト

delete.additionalImages

削除イメージセットの追加イメージ設定。

オブジェクトの配列の例:

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest
Copy to Clipboard Toggle word wrap

delete.additionalImages.name

削除するイメージのタグまたはダイジェスト。

文字列の例: registry.redhat.io/ubi8/ubi:latest

delete.operators

削除イメージセットの Operator の設定。

オブジェクトの配列の例:

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version}
    packages:
      - name: elasticsearch-operator
        minVersion: '2.4.0'
Copy to Clipboard Toggle word wrap

delete.operators.catalog

削除イメージセットに含める Operator カタログ。

文字列の例: registry.redhat.io/redhat/redhat-operator-index:v4.15

delete.operators.full

true の場合、完全なカタログ、Operator パッケージ、または Operator チャネルが削除されます。

ブール値。デフォルト値は false です。

delete.operators.packages

Operator パッケージ設定

オブジェクトの配列の例:

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version}
    packages:
      - name: elasticsearch-operator
        minVersion: '5.2.3-31'
Copy to Clipboard Toggle word wrap

delete.operators.packages.name

削除イメージセットに含める Operator パッケージ名。

文字列の例: elasticsearch-operator

delete.operators.packages.channels

Operator パッケージのチャネル設定。

オブジェクト

delete.operators.packages.channels.name

削除イメージセットに含める、パッケージ内で一意の Operator チャネル名。

文字列の例: fast または stable-v4.15

delete.operators.packages.channels.maxVersion

選択したチャネル内で削除する Operator の最大バージョン。

文字列の例: 5.2.3-31

delete.operators.packages.channels.minVersion

Operator が存在する選択範囲内で削除する Operator の最小バージョン。

文字列の例: 5.2.3-31

delete.operators.packages.maxVersion

Operator が存在するすべてのチャネルで削除する最大バージョンの Operator。

文字列の例: 5.2.3-31

delete.operators.packages.minVersion

Operator が存在するすべてのチャネルで削除する最小バージョンの Operator。

文字列の例: 5.2.3-31

delete.operators.packages.bundles

選択したバンドル設定

オブジェクトの配列

同じ Operator に対してチャネルとバンドルの両方を選択することはできません。

以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version}
    packages:
    - name: 3scale-operator
      bundles:
      - name: 3scale-operator.v0.10.0-mas
Copy to Clipboard Toggle word wrap

delete.operators.packages.bundles.name

削除対象として選択したバンドルの名前 (カタログに表示される名前)

文字列の例: 3scale-operator.v0.10.0-mas

delete.platform

イメージセットのプラットフォーム設定。

オブジェクト

delete.platform.architectures

削除するプラットフォームリリースペイロードのアーキテクチャー。

文字列の配列例:

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x
Copy to Clipboard Toggle word wrap

デフォルト値は amd64 です。

delete.platform.channels

イメージセットのプラットフォームチャネル設定。

オブジェクトの配列

以下に例を示します。

channels:
  - name: stable-4.12
  - name: stable-4.16
Copy to Clipboard Toggle word wrap

delete.platform.channels.full

true の場合、minVersion をチャネルの最初のリリースに設定し、maxVersion をチャネルの最後のリリースに設定します。

ブール値。デフォルト値は false です。

delete.platform.channels.name

リリースチャネルの名前。

文字列の例: stable-4.15

delete.platform.channels.minVersion

削除する参照プラットフォームの最小バージョン。

文字列の例: 4.12.6

delete.platform.channels.maxVersion

削除する参照プラットフォームの最大バージョン。

文字列の例: 4.15.1

delete.platform.channels.shortestPath

最短パスの削除と全範囲の削除を切り替えます。

ブール値。デフォルト値は false です。

delete.platform.channels.type

削除するプラットフォームのタイプ

文字列の例: ocp または okd。デフォルトは ocp

delete.platform.graph

ミラーレジストリー上の OSUS グラフも削除するかどうかを指定します。

ブール値。デフォルト値は false です。

5.12. oc-mirror プラグイン v2 のコマンドリファレンス

次の表は、oc-mirror プラグイン v2 の oc mirror サブコマンドとフラグを説明しています。

Expand
表5.4 oc-mirror プラグイン v2 のサブコマンドとフラグ
サブコマンド説明

help

サブコマンドに関するヘルプを表示します。

version

oc-mirror バージョンを出力します。

delete

リモートレジストリーとローカルキャッシュ内のイメージを削除します。

Expand
表5.5 oc mirror フラグ
フラグ説明

--authfile

認証ファイルの文字列パスを表示します。デフォルトは ${XDG_RUNTIME_DIR}/containers/auth.json です。

-c--config <string>

イメージセット設定ファイルへのパスを指定します。

--dest-tls-verify

コンテナーレジストリーまたはデーモンにアクセスするには HTTPS が必要であり、証明書が検証されます。

--dry-run

イメージをミラーリングせずにアクションを出力します。

--from <string>

oc-mirror プラグイン v2 を実行してターゲットレジストリーをロードすることで生成されたイメージセットアーカイブへのパスを指定します。

-h--help

ヘルプを表示します。

--loglevel

文字列のログレベルを表示します。サポートされる値には、info、debug、trace、error などがあります。デフォルトは info です。

-p, --port

oc-mirror プラグイン v2 のローカルストレージインスタンスが使用する HTTP ポートを指定します。デフォルトは 55000 です。

--max-nested-paths <int>

ネストされたパスを制限する宛先レジストリーのネストされたパスの最大数を指定します。デフォルトは 0 です。

--secure-policy

デフォルト値は false です。デフォルト以外の値を設定すると、コマンドは署名検証を有効にします。これは、署名検証のセキュアなポリシーです。

--since

指定した日付以降のすべての新しいコンテンツが含まれます (形式: yyyy-mm-dd)。指定しない場合は、前回のミラーリング以降の新しいコンテンツがミラーリングされます。

--src-tls-verify

コンテナーレジストリーまたはデーモンにアクセスするには HTTPS が必要であり、証明書が検証されます。

--strict-archive

デフォルト値は false です。値を設定すると、コマンドは imageSetConfig カスタムリソース (CR) で設定された archiveSize よりも厳密に小さいアーカイブを生成します。アーカイブされるファイルが archiveSize (GB) を超える場合、ミラーリングはエラーになります。

-v--version

oc-mirror プラグイン v2 のバージョンを表示します。

--workspace

リソースと内部アーティファクトが生成される文字列 oc-mirror プラグイン v2 ワークスペースを指定します。

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat