11.4. 切断されたノードへの OLM ベースの Operator の追加
OLM ベースの Operators を Red Hat Enterprise Linux for Edge (RHEL for Edge) イメージに埋め込むことで、非接続状況でも使用できます。
11.4.1. OLM ベースの Operator の非接続ノードへの追加について リンクのコピーリンクがクリップボードにコピーされました!
切断されたノードにインストールされている Operator の場合、デフォルトで Operator Lifecycle Manager (OLM)はリモートレジストリーでホストされるソースにアクセスできません。それらのリモートソースには完全なインターネット接続が必要であるためです。したがって、リモートレジストリーを高可用性のコンテナーレジストリーにミラーリングする必要があります。
非接続状況で OLM ベースの Operators を使用するには、次の手順が必要です。
- ミラーレジストリーのコンテナーイメージリストに OLM を含めます。
-
CRI-O 設定を直接更新して、ミラーレジストリーを使用するようにシステムを設定します。
ImageContentSourcePolicyは MicroShift ではサポートされていません。 -
CatalogSourceオブジェクトをノードに追加し、OLM カタログ Operator がミラーレジストリーでローカルカタログを使用できるようにします。 - MicroShift が非接続状態で実行できるようにインストールされていることを確認します。
- ネットワーク設定が非接続モードで実行されるように設定されていることを確認します。
切断されたノードで OLM を有効にした後も、インターネットに接続されたワークステーションを使用して、Operator の新しいバージョンが更新されるとローカルカタログソースを最新の状態に保つことができます。
11.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
$ oc-mirror --config <ImageSetConfig.yaml> docker://localhost:5000 --workspace file://<outm2m> --dry-run --v2Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
ImageSetConfig.yaml- 作成したイメージセット設定ファイルの名前を指定します。
docker://localhost:5000-
ミラーレジストリーを指定します。
ドライランフラグを使用する場合、このレジストリーには何もミラーリングされません。 --workspace file:// <outm2m>- ワークスペースパスのアドレスを挿入します。
--dry-run- dry run フラグは、実際のイメージセットファイルではなく、ドライランアーティファクトを生成します。
--v2oc mirror v2 を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドを実行して、生成された
mapping.txtファイルを確認します。cat wspace/working-dir/dry-run/mapping.txt
$ cat wspace/working-dir/dry-run/mapping.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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-ffffa9875f0379e9373f89f05eb06e5a193273bb04bc3aa5f85b044357b79098Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.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.20/index/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.20/index/index.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow ミラーリングできないイメージを除外する場合は、次のコマンドを実行して、カタログの
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.20/index/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.20/index/index.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この手順では、AMQ Broker Operator を例として使用します。ユースケースでの必要性に応じて、
jqコマンドに他の条件を追加して、さらにフィルタリングすることができます。イメージ参照出力の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ミラーリングされたユースケースと非接続ユースケースでは、カタログの
index.jsonファイルからフィルタリングされたすべてのソースがダイジェストであることを確認します。いずれかのソースがダイジェストではなくタグを使用している場合、Operator のインストールは失敗します。タグにはインターネット接続が必要です。
次のコマンドを実行して、
imageset-config.yamlを表示し、CatalogSourceカスタムリソース (CR) のカタログイメージ参照を取得します。cat imageset-config.yaml
$ cat imageset-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 次の
jqコマンドのmirror.catalogカタログイメージ参照の値を使用して、イメージダイジェストを取得します。この例では、<registry.redhat.io/redhat/redhat-operator-index:v4.20> です。
次のコマンドを実行して、カタログインデックスイメージの SHA を取得します。
skopeo inspect docker://<registry.redhat.io/redhat/redhat-operator-index:v{product-version}> | jq .Digest$ skopeo inspect docker://<registry.redhat.io/redhat/redhat-operator-index:v{product-version}> | jq .Digest1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージダイジェストを取得するには、
jqコマンドのmirror.catalogカタログイメージ参照の値を使用します。この例では、<registry.redhat.io/redhat/redhat-operator-index:v4.20> です。
出力例
"sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6"
"sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Image Builder のブループリントファイルにイメージ参照を追加する準備ができているには、次の例を使用してカタログイメージ参照をフォーマットします。
[[containers]] source = "registry.redhat.io/redhat/redhat-operator-index@sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6"
[[containers]] source = "registry.redhat.io/redhat/redhat-operator-index@sha256:7a76c0880a839035eb6e896d54ebd63668bb37b82040692141ba39ab4c539bc6"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これまでのすべてのステップからのイメージ参照を Image Builder のブループリントに追加します。
生成された Image Builder ブループリントのサンプルスニペット
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.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ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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設定の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージコミットの SHA。Image Builder ブループリントに追加したものと同じ SHA を使用します。
重要カタログ CR 内のタグの代わりに SHA を使用する必要があります。そうしないと、Pod の起動に失敗します。
次のコマンドを実行して、oc-mirror プラグインのドライラン結果ディレクトリーからノードに YAML ファイルを適用します。
oc apply -f ./oc-mirror-workspace/results-1708508014/catalogSource-cs-redhat-operator-index.yaml
$ oc apply -f ./oc-mirror-workspace/results-1708508014/catalogSource-cs-redhat-operator-index.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
catalogsource.operators.coreos.com/cs-redhat-operator-index created
catalogsource.operators.coreos.com/cs-redhat-operator-index createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
CatalogSourceリソースが正常にインストールされたことを確認します。oc get catalogsource --all-namespaces
$ oc get catalogsource --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、カタログソースが実行されていることを確認します。
oc get pods -n openshift-marketplace
$ oc get pods -n openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cs-redhat-operator-index-4227b 2/2 Running 0 2m5s
NAME READY STATUS RESTARTS AGE cs-redhat-operator-index-4227b 2/2 Running 0 2m5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような
SubscriptionCR を作成します。my-subscription-cr.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
SubscriptionCR を適用します。oc apply -f ./<my-subscription-cr.yaml>
$ oc apply -f ./<my-subscription-cr.yaml>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
my-subscription-cr.yamlなど、SubscriptionCR の名前を指定します。
出力例
subscription.operators.coreos.com/amq-broker created
subscription.operators.coreos.com/amq-broker createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow