3.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 のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

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

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

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

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

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

3.5.1.1. ワークフローの概要

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

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

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

3.5.1.2. 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 を使用してください。

3.5.2. 前提条件

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

    注記
    • Red Hat Quay を使用する場合は、oc-mirror プラグインを備えたバージョン 3.6 以降を使用してください。Red Hat Quay Operator の OpenShift Container Platform へのデプロイ (Red Hat Quay ドキュメント) を参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
    • コンテナーイメージレジストリー用の既存ソリューションがない場合、OpenShift Container Platform サブスクライバーには Red Hat OpenShift 用のミラーレジストリーが提供されます。このミラーレジストリーはサブスクリプションに含まれており、小規模なコンテナーレジストリーとして機能します。このレジストリーを使用して、非接続インストールに必要な OpenShift Container Platform のコンテナーイメージをミラーリングできます。
  • プロビジョニングされたクラスター内のすべてのマシンは、ミラーレジストリーにアクセスできる必要があります。レジストリーにアクセスできない場合、インストールや更新などのタスクや、ワークロードの再配置などの日常的な操作が失敗する可能性があります。ミラーレジストリーは、その可用性が OpenShift Container Platform クラスターの実稼働環境の可用性と一致するように、可用性の高い方法で運用する必要があます。

3.5.3. ミラーホストの準備

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

3.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. Red Hat Hybrid Cloud Console の Downloads ページに移動します。
    2. OpenShift disconnected installation tools セクションで、ドロップダウンメニューから OpenShift Client (oc) mirror pluginOS typeArchitecture type を選択します。
    3. Download をクリックしてファイルを保存します。
  2. 次のコマンドを実行してアーカイブを展開します。

    $ tar xvzf oc-mirror.tar.gz
  3. 必要に応じて、次のコマンドを実行し、プラグインファイルを更新して実行可能にします。

    $ chmod +x oc-mirror
    注記

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

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

    $ sudo mv oc-mirror /usr/local/bin/.

検証

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

    $ oc mirror --v2 --help

3.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
    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"
        }
      }
    }

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

    $ mkdir -p $XDG_RUNTIME_DIR/containers
  4. プルシークレットファイルを $XDG_RUNTIME_DIR/containers/auth.json として保存します。
  5. 次のコマンドを実行して、ミラーレジストリーの base64 でエンコードされたユーザー名とパスワードまたはトークンを生成します。

    $ echo -n '<user_name>:<password>' | base64 -w0 1
    1
    <user_name> および <password> には、レジストリーに設定したユーザー名およびパスワードを指定します。

    出力例

    BGVtbYk3ZHAtqXs=

  6. JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。

      "auths": {
        "<mirror_registry>": { 1
          "auth": "<credentials>", 2
          "email": "you@example.com"
        }
      },
    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"
        }
      }
    }

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

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

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

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

前提条件

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

手順

  • ImageSetConfiguration YAML ファイルを作成し、ファイルを変更して必要なイメージを含めます。

    ImageSetConfiguration YAML ファイルの例

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v2alpha1
    mirror:
      platform:
        channels:
        - name: stable-4.17 1
          minVersion: 4.17.2
          maxVersion: 4.17.2
        graph: true 2
      operators:
        - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 3
          packages: 4
           - name: aws-load-balancer-operator
           - name: 3scale-operator
           - name: node-observability-operator
      additionalImages: 5
       - name: registry.redhat.io/ubi8/ubi:latest
       - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0

    1
    OpenShift Container Platform イメージの取得元のチャネルを設定します。
    2
    graph: true を追加して、グラフデータイメージをビルドし、ミラーレジストリーにプッシュします。OpenShift Update Service (OSUS) を作成するには、graph-data イメージが必要です。graph: true フィールドは UpdateService カスタムリソースマニフェストも生成します。oc コマンドラインインターフェイス (CLI) は、UpdateService カスタムリソースマニフェストを使用して OSUS を作成できます。詳細は、OpenShift Update Service について を参照してください。
    3
    OpenShift Container Platform イメージを取得するための Operator カタログを設定します。
    4
    イメージセットに含める特定の Operator パッケージのみを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
    5
    イメージセットに含める追加のイメージを指定します。

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

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

前提条件

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

手順

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

    $ oc mirror -c <image_set_configuration> --workspace file://<file_path> docker://<mirror_registry_url> --v2 1

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

    <image_set_configuration>
    イメージセット設定ファイルの名前を指定します。
    <file_path>
    クラスターリソースの生成先のディレクトリーを指定します。
    <mirror_registry_url>
    イメージの保存先であり、そこからイメージを削除する必要があるミラーレジストリーの URL またはアドレスを指定します。

検証

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

次のステップ

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

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

OpenShift Container Platform クラスターがパブリックインターネットにアクセスできない完全な非接続環境で、イメージセットをミラーリングできます。ミラーリングプロセスのワークフローの概要を以下に示します。

  1. ミラーからディスクへのミラーリング: イメージセットをアーカイブにミラーリングします。
  2. ディスク転送: 非接続ミラーレジストリーのネットワークにアーカイブを手動で転送します。
  3. ディスクからミラーへのミラーリング: イメージセットをアーカイブからターゲットの非接続レジストリーにミラーリングします。
3.5.4.3.1. ミラーからディスクへのミラーリング

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

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

手順

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

    $ oc mirror -c <image_set_configuration> file://<file_path> --v2

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

    <image_set_configuration>
    イメージセット設定ファイルの名前を指定します。
    <file_path>
    イメージセットを含むアーカイブの生成先のディレクトリーを指定します。

検証

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

次のステップ

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

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

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

手順

  1. ミラーリングされたイメージセットが含まれているディスクを、ターゲットミラーレジストリーが含まれている環境に転送します。
  2. 次のコマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。

    $ oc mirror -c <image_set_configuration> --from file://<file_path> docker://<mirror_registry_url> --v2

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

    <image_set_configuration>
    イメージセット設定ファイルの名前を指定します。
    <file_path>
    アーカイブが含まれているディスク上のディレクトリーを指定します。このフォルダーには、クラスターに適用するために生成されたクラスターリソース (ImageDigestMirrorSet (IDMS) や ImageTagMirrorSet (ITMS) リソースなど) も含まれています。
    <mirror_registry_url>
    イメージの保存先であるミラーレジストリーの URL またはアドレスを指定します。

検証

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

次のステップ

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

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

oc-mirror プラグイン v2 では、イメージセット内の 1 つ以上のイメージがダイジェストによってミラーリングされている場合、ImageDigestMirrorSet (IDMS) リソースがデフォルトで生成されます。イメージセット内の 1 つ以上のイメージがタグによってミラーリングされている場合、ImageTagMirrorSet (ITMS) リソースが生成されます。

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

OpenShift Update Service が、UpdateService リソースを使用して、非接続環境に更新グラフデータを提供します。

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

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

重要

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

前提条件

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

手順

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

    $ oc apply -f <path_to_oc_mirror_workspace>/working-dir/cluster-resources

検証

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

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

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

    $ oc get catalogsource -n openshift-marketplace

oc-mirror プラグイン v2 によって生成されたリソースを使用するようにクラスターを設定したら、ミラーリングされたイメージを使用して実行できるタスクの詳細について、次のステップ を参照してください。

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

以前に oc-mirror プラグイン v2 を使用してイメージをデプロイしたことがある場合は、そのイメージを削除してミラーレジストリーの領域を解放できます。oc-mirror プラグイン v2 は、ImageSetConfiguration ファイルに含まれていないイメージを自動プルーニングしません。そのため、ImageSetConfig.yaml ファイルに変更を加えたときに、必要なイメージやデプロイされたイメージが誤って削除されることはありません。

削除するイメージを指定するには、DeleteImageSetConfiguration ファイルを作成する必要があります。

次の例では、DeleteImageSetConfiguration ファイルで次のイメージを削除します。

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

DeleteImageSetConfiguration ファイルの例

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

重要

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

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

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

重要

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

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

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

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

前提条件

  • マニフェストを参照しなくなったイメージを削除するために、環境でガベージコレクションを有効にした。

手順

  1. delete-image-set-config.yaml ファイルを作成し、次の内容を含めます。

    DeleteImageSetConfiguration ファイル

    apiVersion: mirror.openshift.io/v2alpha1
    kind: DeleteImageSetConfiguration
    delete:
      platform:
        channels:
          - name: <channel_name> 1
            minVersion: <channel_min_version> 2
            maxVersion: <channel_max_version> 3
      operators:
        - catalog: <operator_catalog_name> 4
          packages:
          - name: <operator_name> 5
             minVersion: <operator_max_version> 6
             maxVersion: <operator_min_version> 7
      additionalImages:
        - name: <additional_images> 8

    1 1
    削除する OpenShift Container Platform チャネルの名前を指定します (例: stable-4.15)。
    2 3
    チャネル内の削除するイメージのバージョン範囲を指定します。たとえば、最小バージョンとして 4.15.0、最大バージョンとして 4.15.1 を指定します。1 つのバージョンのイメージのみを削除するには、minVersion フィールドと maxVersion フィールドの両方にそのバージョン番号を使用します。
    4
    削除する Operator カタログイメージを指定します (例: registry.redhat.io/redhat/redhat-operator-index:v4.14)。カタログイメージを削除する場合は、delete.operators.packages パラメーターを使用して個別の Operator を指定しないでください。
    5
    削除する特定の Operator バンドルを指定します (例: aws-load-balancer-operator)。個別の Operator を指定すると、Operator カタログイメージが削除されません。
    6 7
    Operator に対して削除するイメージのバージョン範囲を指定します。たとえば、最小バージョンとして 0.0.1、最大バージョンとして 0.0.2 を指定します。1 つのバージョンのイメージのみを削除するには、minVersion フィールドと maxVersion フィールドの両方にそのバージョン番号を使用します。
    8
    削除する追加イメージを指定します (例: registry.redhat.io/ubi9/ubi-init:latest)。
  2. 次のコマンドを実行して、delete-images.yaml ファイルを作成します。

    $ oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>

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

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

    $ oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/working-dir/delete/delete-images.yaml docker://<remote_registry>

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

    <previously_mirrored_work_folder>
    以前、ミラーリングプロセス中にイメージがミラーリングまたは保存されたディレクトリーを指定します。
    <remote_registry>

    イメージの削除元となるリモートコンテナーレジストリーの URL またはアドレスを指定します。

    重要

    mirror-to-mirror 方式を使用してイメージをミラーリングする場合、イメージはローカルにキャッシュされないため、ローカルキャッシュからイメージを削除することはできません。

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

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

3.5.7.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

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

    • <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

検証

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

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

3.5.7.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

    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

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

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

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

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

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

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

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

重要

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

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

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

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

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

3.5.8.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 を使用することを強調しています。

3.5.8.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>"

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

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

      $ oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content

      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

      生成されたアーカイブは、非接続環境に転送されます。トランスポートメカニズムは、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>/

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

    • --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

    非接続レジストリーにアクセスできるマシン上で、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

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

    注記

    OpenShift Container Platform の Extended Update Support (EUS) バージョン間で更新する場合は、現在のバージョンとターゲットバージョン間の中間マイナーバージョンのイメージも含める必要があります。oc-mirror プラグイン v2 は必ずしもこの要件を自動的に検出するとは限りません。そのため、Red Hat OpenShift Container Platform Update Graph ページ で、必要な中間バージョンを確認してください。

    Update Graph ページを使用して、アプリケーションによって提案される中間マイナーバージョンを確認してください。また、oc-mirror プラグイン v2 を使用するときに、該当するバージョンをすべて ImageSetConfiguration ファイルに含めてください。

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

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

    $ oc mirror --v2 -c isc-enclave.yaml
    file:///disk-enc1/

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

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

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

    $ oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in

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

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

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

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

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

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

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

シナリオ 1

mirror:
 operators:
   - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10

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

シナリオ 2

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
      full: true

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

シナリオ 3

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
     packages:
    - name: compliance-operator

そのパッケージのデフォルトチャネルのヘッドバージョンに対応する 1 つのバンドル

シナリオ 4

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
      full: true
      - packages:
          - name: elasticsearch-operator

指定されたパッケージのすべてのチャネルのすべてのバンドル

シナリオ 5

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
       minVersion: 5.6.0

minVersion からそのパッケージのチャネルヘッドまでの、アップグレードグラフの最短パスに依存しない、デフォルトチャネル内のすべてのバンドル。

シナリオ 6

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        maxVersion: 6.0.0

そのパッケージの 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

そのパッケージの minVersionmaxVersion の間の、デフォルトチャネル内のすべてのバンドル。フィルタリングに複数のチャネルが含まれる場合でも、チャネルのヘッドは含まれません。

シナリオ 8

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable

そのパッケージの選択されたチャネルのヘッドバンドル。

シナリオ 9

mirror:
  operators:
    - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10
      full: true
      - packages:
          - name: elasticsearch-operator
            channels:
               - name: 'stable-v0'

指定されたパッケージとチャネルのすべてのバンドル。

シナリオ 10

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
          - name: stable-5.5

そのパッケージの選択された各チャネルのヘッドバンドル。

シナリオ 11

mirror:
  operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15
    packages:
    - name: compliance-operator
        channels
          - name: stable
            minVersion: 5.6.0

そのパッケージの選択されたチャネル内の、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

そのパッケージの選択されたチャネル内の、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

そのパッケージの選択されたチャネル内の、アップグレードグラフからの最短パスに依存しない、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

各パッケージに指定されたバンドルのみがフィルタリングに含まれます。

シナリオ 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

このシナリオは使用しないでください。チャネルでのフィルタリング、および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

このシナリオは使用しないでください。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

このシナリオは使用しないでください。full:true と、minVersion または maxVersion を使用してフィルタリングすることはできません。

3.5.10. 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 グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。

表3.5 ImageSetConfiguration パラメーター
パラメーター説明

apiVersion

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

文字列の例: mirror.openshift.io/v2alpha1

archiveSize

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

整数の例: 4

kubeVirtContainer

true に設定すると、HyperShift KubeVirt CoreOS コンテナーからのイメージが含まれます。

ブール値のサンプル ImageSetConfiguration ファイル:

apiVersion: mirror.openshift.io/v2alpha1
kind: ImageSetConfiguration
mirror:
  platform:
    channels:
    - name: stable-4.16
      minVersion: 4.16.0
      maxVersion: 4.16.0
    kubeVirtContainer: true

mirror

イメージセットの設定。

オブジェクト

mirror.additionalImages

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

オブジェクトの配列

以下に例を示します。

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest

mirror.additionalImages.name

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

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

mirror.blockedImages

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

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

mirror.operators

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

オブジェクトの配列

以下に例を示します。

operators:
  - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17
    packages:
      - name: elasticsearch-operator
        minVersion: '2.4.0'

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.17
    packages:
      - name: elasticsearch-operator
        minVersion: '5.2.3-31'

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.17
    packages:
    - name: 3scale-operator
      bundles:
      - name: 3scale-operator.v0.10.0-mas

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

mirror.operators.targetTag

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

文字列の例: v1

mirror.platform

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

オブジェクト

mirror.platform.architectures

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

文字列の配列例:

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x

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

mirror.platform.channels

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

オブジェクトの配列の例:

channels:
  - name: stable-4.12
  - name: stable-4.17

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 です。

3.5.10.1. ImageSet 設定パラメーターを削除する

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

表3.6 DeleteImageSetConfiguration パラメーター
パラメーター説明

apiVersion

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

文字列の例: mirror.openshift.io/v2alpha1

delete

削除するイメージセットの設定。

オブジェクト

delete.additionalImages

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

オブジェクトの配列の例:

additionalImages:
  - name: registry.redhat.io/ubi8/ubi:latest

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'

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'

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

delete.operators.packages.bundles.name

削除対象として選択したバンドルの名前 (カタログに表示される名前)

文字列の例: 3scale-operator.v0.10.0-mas

delete.platform

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

オブジェクト

delete.platform.architectures

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

文字列の配列例:

architectures:
  - amd64
  - arm64
  - multi
  - ppc64le
  - s390x

デフォルト値は amd64 です。

delete.platform.channels

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

オブジェクトの配列

以下に例を示します。

channels:
  - name: stable-4.12
  - name: stable-4.17

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 です。

3.5.11. oc-mirror プラグイン v2 のコマンドリファレンス

次の表は、oc-mirror プラグイン v2 の oc mirror サブコマンドとフラグを説明しています。

表3.7 oc-mirror プラグイン v2 のサブコマンドとフラグ
サブコマンド説明

help

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

version

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

delete

リモートレジストリーとローカルキャッシュ内のイメージを削除します。

表3.8 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 ワークスペースを指定します。

3.5.12. 次のステップ

oc-mirror プラグイン v2 を使用して非接続環境にイメージをミラーリングしたら、次のアクションを実行できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.