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
$ oc-mirror --config <ImageSetConfig.yaml> docker://localhost:5000 --workspace file://<outm2m> --dry-run --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
ImageSetConfig.yaml
- 作成したイメージセット設定ファイルの名前を指定します。
docker://localhost:5000
-
ミラーレジストリーを指定します。
ドライラン
フラグを使用する場合、このレジストリーには何もミラーリングされません。 --workspace file:// <outm2m>
- ワークスペースパスのアドレスを挿入します。
--dry-run
- dry run フラグは、実際のイメージセットファイルではなく、ドライランアーティファクトを生成します。
--v2
oc 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.txt
Copy 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-ffffa9875f0379e9373f89f05eb06e5a193273bb04bc3aa5f85b044357b79098
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.1.2. カタログと Operator コンテナーイメージの参照の取得 リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインでドライランを実行してミラーリングするイメージの一覧を確認した後、すべてのコンテナーイメージ参照を取得してから、Image Builder ブループリントに追加するために出力をフォーマットする必要があります。
プロプライエタリー Operator 用に作成されたカタログの場合、次の手順を使用せずに Image Builder ブループリントのイメージ参照をフォーマットできます。
前提条件
- 使用する Operator のカタログインデックスがある。
-
jq
CLI ツールがインストールされている。 - 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
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
Copy 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.18/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.18/index/index.json
Copy 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.yaml
Copy 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.18> です。
次のコマンドを実行して、カタログインデックスイメージの 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 .Digest
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージダイジェストを取得するには、
jq
コマンドのmirror.catalog
カタログイメージ参照の値を使用します。この例では、<registry.redhat.io/redhat/redhat-operator-index:v4.18> です。
出力例
"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
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
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- グローバル namespace。
metadata.namespace
をopenshift-marketplace
に設定すると、カタログがすべての namespace で実行できるようになります。どの namespace のサブスクリプションでも、openshift-marketplace
namespace で作成されたカタログを参照できます。
注記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 プラグインのドライラン results ディレクトリーから 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.yaml
Copy 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 created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
CatalogSource
リソースが正常にインストールされたことを確認します。oc get catalogsource --all-namespaces
$ oc get catalogsource --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、カタログソースが実行されていることを確認します。
oc get pods -n openshift-marketplace
$ oc get pods -n openshift-marketplace
Copy 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 2m5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような
Subscription
CR を作成します。my-subscription-cr.yaml
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
Subscription
CR を適用します。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
など、Subscription
CR の名前を指定します。
出力例
subscription.operators.coreos.com/amq-broker created
subscription.operators.coreos.com/amq-broker created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow