9.4. 非接続クラスターへの OLM ベースの Operators の追加
OLM ベースの Operators を Red Hat Enterprise Linux for Edge (RHEL for Edge) イメージに埋め込むことで、非接続状況でも使用できます。
9.4.1. 非接続クラスターへの OLM ベースの Operators の追加について リンクのコピーリンクがクリップボードにコピーされました!
非接続クラスターにインストールされている Operator の場合、リモートソースには完全なインターネット接続が必要であるため、Operator Lifecycle Manager (OLM) はデフォルトで、リモートレジストリーでホストされているソースにアクセスできません。したがって、リモートレジストリーを高可用性のコンテナーレジストリーにミラーリングする必要があります。
非接続状況で OLM ベースの Operators を使用するには、次の手順が必要です。
- ミラーレジストリーのコンテナーイメージリストに OLM を含めます。
-
CRI-O 設定を直接更新して、ミラーレジストリーを使用するようにシステムを設定します。
ImageContentSourcePolicyは MicroShift ではサポートされていません。 -
CatalogSourceオブジェクトをクラスターに追加して、OLM カタログ Operator がミラーレジストリー上のローカルカタログを使用できるようにします。 - MicroShift が非接続状態で実行できるようにインストールされていることを確認します。
- ネットワーク設定が非接続モードで実行されるように設定されていることを確認します。
非接続クラスターで OLM を有効にした後、インターネットに接続されたワークステーションを引き続き使用して、Operator の新しいバージョンがリリースされた際にローカルカタログソースを最新の状態に保つことができます。
9.4.1.1. ドライランの実行 リンクのコピーリンクがクリップボードにコピーされました!
実際にイメージをミラーリングせずに、oc-mirror を使用してドライランを実行できます。ドライランは、ミラーリングするイメージの一覧を確認できることを意味します。ドライランを使用して、イメージセット設定のエラーを早期にキャッチしたり、生成されたイメージを他のツールで使用してミラーリングを実行したりできます。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc) がインストールされている。 - oc-mirror CLI プラグインがインストールされている。
- イメージセット設定ファイルを作成した。
手順
--dry-runフラグを指定してoc mirrorコマンドを実行し、ドライランを実行します。$ oc-mirror --config <ImageSetConfig.yaml> docker://localhost:5000 --workspace file://<outm2m> --dry-run --v2ここでは、以下のようになります。
ImageSetConfig.yaml- 作成したイメージセット設定ファイルの名前を指定します。
docker://localhost:5000-
ミラーレジストリーを指定します。
ドライランフラグを使用する場合、このレジストリーには何もミラーリングされません。 --workspace file:// <outm2m>- ワークスペースパスのアドレスを挿入します。
--dry-run- dry run フラグは、実際のイメージセットファイルではなく、ドライランアーティファクトを生成します。
--v2oc mirror v2 を指定します。
出力例
2025/08/25 15:50:44 [INFO] : 👋 Hello, welcome to oc-mirror 2025/08/25 15:50:44 [INFO] : ⚙ setting up the environment for you... 2025/08/25 15:50:44 [INFO] : 🔀 workflow mode: mirrorToMirror 2025/08/25 15:50:44 [INFO] : 🕵 going to discover the necessary images... 2025/08/25 15:50:44 [INFO] : 🔍 collecting release images... 2025/08/25 15:50:44 [INFO] : 🔍 collecting operator images... ✓ (1m30s) Collecting catalog registry.redhat.io/redhat/redhat-operator-index:v4.20 2025/08/25 15:52:14 [INFO] : 🔍 collecting additional images... 2025/08/25 15:52:14 [INFO] : 📄 list of all images for mirroring in : wspace/working-dir/dry-run/mapping.txt 2025/08/25 15:52:14 [INFO] : mirror time : 1m30.399585837s 2025/08/25 15:52:14 [INFO] : 👋 Goodbye, thank you for using oc-mirror
以下のコマンドを実行して、生成された
mapping.txtファイルを確認します。$ cat wspace/working-dir/dry-run/mapping.txt出力例
docker://registry.redhat.io/amq8/amq-broker-rhel9@sha256:47fd4ce2533496828aba37bd1f9715e2164d5c90bd0fc6b25e7e0786d723bf01=docker://mirror.com/amq8/amq-broker-rhel9:sha256-47fd4ce2533496828aba37bd1f9715e2164d5c90bd0fc6b25e7e0786d723bf01 docker://registry.redhat.io/amq8/amq-broker-init-rhel9@sha256:9cc48eecf1442ae04b8543fa5d4381a13bc2831390850828834d387006d1342b=docker://mirror.com/amq7/amq-broker-init-rhel9:sha256-9cc48eecf1442ae04b8543fa5d4381a13bc2831390850828834d387006d1342b docker://registry.redhat.io/amq8/amq-broker-rhel9@sha256:bb6fbd68475a7852b4d99eea6c4ab313f9267da7963162f0d75375d7063409e7=docker://mirror.com/amq8/amq-broker-rhel9:sha256-bb6fbd68475a7852b4d99eea6c4ab313f9267da7963162f0d75375d7063409e7 docker://registry.redhat.io/amq8/amq-broker-rhel9@sha256:d42d713da0ce6806fdc6492b6342586783e6865a82a8647d3c4288439b1751ee=docker://mirror.com/amq8/amq-broker-rhel9:sha256-d42d713da0ce6806fdc6492b6342586783e6865a82a8647d3c4288439b1751ee docker://registry.redhat.io/amq8/amq-broker-init-rhel9@sha256:ffffa9875f0379e9373f89f05eb06e5a193273bb04bc3aa5f85b044357b79098=docker://mirror.com/amq8/amq-broker-init-rhel9:sha256-ffffa9875f0379e9373f89f05eb06e5a193273bb04bc3aa5f85b044357b79098
9.4.1.2. カタログと Operator コンテナーイメージの参照の取得 リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインでドライランを実行してミラーリングするイメージの一覧を確認した後、すべてのコンテナーイメージ参照を取得してから、Image Builder ブループリントに追加するために出力をフォーマットする必要があります。
プロプライエタリー Operator 用に作成されたカタログの場合、次の手順を使用せずに Image Builder ブループリントのイメージ参照をフォーマットできます。
前提条件
- 使用する Operator のカタログインデックスがある。
-
jqCLI ツールがインストールされている。 - Image Builder のブループリントファイルを理解している。
- Image Builder のブループリント TOML ファイルがある。
手順
カタログ
index.jsonファイルを解析して、イメージビルダーのブループリントに含める必要があるイメージ参照を取得します。フィルタリングされていないカタログを使用することも、ミラーリングできないイメージを除外することもできます。次のコマンドを実行して、フィルタリングされていないカタログの
index.jsonファイルを解析し、イメージ参照を取得します。jq -r --slurp '.[] | select(.relatedImages != null) | "[[containers]]\nsource = \"" + .relatedImages[].image + "\"\n"' ./oc-mirror-workspace/src/catalogs/registry.redhat.io/redhat/redhat-operator-index/v4.18/index/index.jsonミラーリングできないイメージを除外する場合は、次のコマンドを実行して、カタログの
index.jsonファイルをフィルタリングして解析します。$ jq -r --slurp '.[] | select(.relatedImages != null) | .relatedImages[] | select(.name | contains("ppc") or contains("s390x") | not) | "[[containers]]\\nsource = \\"" + .image + "\\"\\n"' ./oc-mirror-workspace/src/catalogs/registry.redhat.io/redhat/redhat-operator-index/v4.18/index/index.json注記この手順では、AMQ Broker Operator を例として使用します。ユースケースでの必要性に応じて、
jqコマンドに他の条件を追加して、さらにフィルタリングすることができます。イメージ参照出力の例
[[containers]] source = "registry.redhat.io/amq8/amq-broker-init-rhel9@sha256:0b2126cfb6054fdf428c1f43b69e36e93a09a49ce15350e9273c98cc08c6598b" [[containers]] source = "registry.redhat.io/amq8/amq-broker-init-rhel9@sha256:0dde839c2dce7cb684094bf26523c8e16677de03149a0fff468b8c3f106e1f4f" ... ... [[containers]] source = "registry.redhat.io/amq8/amq-broker-rhel9@sha256:e8fa2a00e576ecb95561ffbdbf87b1c82d479c8791ab2c6ce741dd0d0b496d15" [[containers]] source = "registry.redhat.io/amq8/amq-broker-rhel9@sha256:ff6fefad518a6c997d4c5a6e475ba89640260167f0bc27715daf3cc30116fad1" … EOF重要ミラーリングされたユースケースと非接続ユースケースでは、カタログの
index.jsonファイルからフィルタリングされたすべてのソースがダイジェストであることを確認します。いずれかのソースがダイジェストではなくタグを使用している場合、Operator のインストールは失敗します。タグにはインターネット接続が必要です。
次のコマンドを実行して、
imageset-config.yamlを表示し、CatalogSourceカスタムリソース (CR) のカタログイメージ参照を取得します。$ cat imageset-config.yaml出力例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v2alpha1 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.181 packages: - name: amq-broker-rhel9 channels: - name: 7.13.x- 1
- 次の
jqコマンドのmirror.catalogカタログイメージ参照の値を使用して、イメージダイジェストを取得します。この例では、<registry.redhat.io/redhat/redhat-operator-index:v4.18> です。
次のコマンドを実行して、カタログインデックスイメージの SHA を取得します。
$ skopeo inspect docker://<registry.redhat.io/redhat/redhat-operator-index:v{product-version}> | jq .Digest1 - 1
- イメージダイジェストを取得するには、
jqコマンドのmirror.catalogカタログイメージ参照の値を使用します。この例では、<registry.redhat.io/redhat/redhat-operator-index:v4.18> です。
出力例
"sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6"Image Builder のブループリントファイルにイメージ参照を追加する準備ができているには、次の例を使用してカタログイメージ参照をフォーマットします。
[[containers]] source = "registry.redhat.io/redhat/redhat-operator-index@sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6"これまでのすべてのステップからのイメージ参照を Image Builder のブループリントに追加します。
生成された Image Builder ブループリントのサンプルスニペット
name = "microshift_blueprint" description = "MicroShift 4.18.1 on x86_64 platform" version = "0.0.1" modules = [] groups = [] [[packages]]1 name = "microshift" version = "4.18.1" ... ... [customizations.services]2 enabled = ["microshift"] [customizations.firewall] ports = ["22:tcp", "80:tcp", "443:tcp", "5353:udp", "6443:tcp", "30000-32767:tcp", "30000-32767:udp"] ... ... [[containers]]3 source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f41e79c17e8b41f1b0a5a32c3e2dd7cd15b8274554d3f1ba12b2598a347475f4" [[containers]] source = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dbc65f1fba7d92b36cf7514cd130fe83a9bd211005ddb23a8dc479e0eea645fd" ... ... [[containers]]4 source = "registry.redhat.io/redhat/redhat-operator-index@sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6" ... ... [[containers]] source = "registry.redhat.io/amq8/amq-broker-init-rhel9@sha256:0dde839c2dce7cb684094bf26523c8e16677de03149a0fff468b8c3f106e1f4f" ... ... [[containers]] source = "registry.redhat.io/amq8/amq-broker-rhel9@sha256:e8fa2a00e576ecb95561ffbdbf87b1c82d479c8791ab2c6ce741dd0d0b496d15" [[containers]] source = "registry.redhat.io/amq8/amq-broker-rhel9@sha256:ff6fefad518a6c997d4c5a6e475ba89640260167f0bc27715daf3cc30116fad1" … EOF
9.4.1.3. 非接続デプロイメントの RHEL for Edge イメージにカタログと Operator を適用する リンクのコピーリンクがクリップボードにコピーされました!
非接続環境用の RHEL for Edge イメージを作成し、非接続で使用するように MicroShift ネットワークを設定したら、namespace を設定し、Operator を実行するためのカタログと Operator カスタムリソース (CR) を作成できます。
前提条件
- RHEL for Edge イメージがある。
- ネットワークは非接続環境で使用するように設定されている。
- oc-mirror プラグインのドライラン手順が完了している。
手順
次の例のように、
CatalogSourceカスタムリソース (CR) を作成します。my-catalog-source-cr.yamlファイルの例apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: cs-redhat-operator-index namespace: openshift-marketplace1 spec: image: registry.example.com/redhat/redhat-operator-index:v4.17 sourceType: grpc displayName: publisher: updateStrategy: registryPoll: interval: 60m- 1
- グローバル namespace。
metadata.namespaceをopenshift-marketplaceに設定すると、カタログがすべての namespace で実行できるようになります。どの namespace のサブスクリプションでも、openshift-marketplacenamespace で作成されたカタログを参照できます。
注記openshift-marketplaceのデフォルトの Pod セキュリティーアドミッション定義はbaselineであるため、その namespace で作成されたカタログソースカスタムリソース (CR) では、spec.grpcPodConfig.securityContextConfig値を設定する必要はありません。使用する namespace と Operator に必要な場合は、legacyまたはrestricted値を設定できます。次の例のように、カタログインデックスコミットの SHA をカタログソース (CR) に追加します。
namespace
spec.image設定の例apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: cs-redhat-operator-index namespace: openshift-marketplace spec: image: registry.example.com/redhat/redhat-operator-index@sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc61 sourceType: grpc displayName: publisher: updateStrategy: registryPoll: interval: 60m- 1
- イメージコミットの SHA。Image Builder ブループリントに追加したものと同じ SHA を使用します。
重要カタログ CR 内のタグの代わりに SHA を使用する必要があります。そうしないと、Pod の起動に失敗します。
次のコマンドを実行して、oc-mirror プラグインのドライラン results ディレクトリーから YAML ファイルをクラスターに適用します。
$ oc apply -f ./oc-mirror-workspace/results-1708508014/catalogSource-cs-redhat-operator-index.yaml出力例
catalogsource.operators.coreos.com/cs-redhat-operator-index created以下のコマンドを実行して、
CatalogSourceリソースが正常にインストールされたことを確認します。$ oc get catalogsource --all-namespaces次のコマンドを使用して、カタログソースが実行されていることを確認します。
$ oc get pods -n openshift-marketplace出力例
NAME READY STATUS RESTARTS AGE cs-redhat-operator-index-4227b 2/2 Running 0 2m5s次の例のような
SubscriptionCR を作成します。my-subscription-cr.yamlファイルの例apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: amq-broker namespace: openshift-operators spec: channel: 7.11.x name: amq-broker-rhel8 source: cs-redhat-operator-index sourceNamespace: openshift-marketplace次のコマンドを実行して、
SubscriptionCR を適用します。$ oc apply -f ./<my-subscription-cr.yaml>1 - 1
my-subscription-cr.yamlなど、SubscriptionCR の名前を指定します。
出力例
subscription.operators.coreos.com/amq-broker created