10.4. 非接続クラスターへの OLM ベースの Operators の追加
OLM ベースの Operators を Red Hat Enterprise Linux for Edge (RHEL for Edge) イメージに埋め込むことで、非接続状況でも使用できます。
10.4.1. 非接続クラスターへの OLM ベースの Operators の追加について リンクのコピーリンクがクリップボードにコピーされました!
非接続クラスターにインストールされている Operator の場合、リモートソースには完全なインターネット接続が必要であるため、Operator Lifecycle Manager (OLM) はデフォルトで、リモートレジストリーでホストされているソースにアクセスできません。したがって、リモートレジストリーを高可用性のコンテナーレジストリーにミラーリングする必要があります。
非接続状況で OLM ベースの Operators を使用するには、次の手順が必要です。
- ミラーレジストリーのコンテナーイメージリストに OLM を含めます。
-
CRI-O 設定を直接更新して、ミラーレジストリーを使用するようにシステムを設定します。
ImageContentSourcePolicyは MicroShift ではサポートされていません。 -
CatalogSourceオブジェクトをクラスターに追加して、OLM カタログ Operator がミラーレジストリー上のローカルカタログを使用できるようにします。 - MicroShift が非接続状態で実行できるようにインストールされていることを確認します。
- ネットワーク設定が非接続モードで実行されるように設定されていることを確認します。
非接続クラスターで OLM を有効にした後、インターネットに接続されたワークステーションを引き続き使用して、Operator の新しいバージョンがリリースされた際にローカルカタログソースを最新の状態に保つことができます。
10.4.1.1. ドライランの実行 リンクのコピーリンクがクリップボードにコピーされました!
実際にイメージをミラーリングせずに、oc-mirror を使用してドライランを実行できます。これにより、ミラーリングされるイメージのリストと、ミラーレジストリーからプルーニングされるイメージを確認できます。ドライランを使用すると、イメージセット設定のエラーを早期に検出したり、生成されたイメージリストを他のツールで使用してミラーリング操作を実行したりすることもできます。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc) がインストールされている。 - oc-mirror CLI プラグインがインストールされている。
- イメージセット設定ファイルを作成した。
手順
--dry-runフラグを指定してoc mirrorコマンドを実行し、ドライランを実行します。oc mirror --config=./imageset-config.yaml \ docker://registry.example:5000 \ --dry-run
$ oc mirror --config=./imageset-config.yaml \1 docker://registry.example:5000 \2 --dry-run3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成されたワークスペースディレクトリーに移動します。
cd oc-mirror-workspace/
$ cd oc-mirror-workspace/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成された
mapping.txtファイルを確認します。このファイルには、ミラーリングされるすべてのイメージのリストが含まれています。
生成された
pruning-plan.jsonファイルを確認します。このファイルには、イメージセットの公開時にミラーレジストリーからプルーニングされるすべてのイメージのリストが含まれています。
注記pruning-plan.jsonファイルは、oc-mirror コマンドがミラーレジストリーを指し、プルーニングするイメージがある場合にのみ生成されます。
10.4.1.2. 非接続環境で RHEL for Edge で使用するカタログと Operator コンテナーイメージ参照を取得する リンクのコピーリンクがクリップボードにコピーされました!
oc-mirror プラグインを使用してドライランを実行し、ミラーリングするイメージのリストを確認した後、すべてのコンテナーイメージ参照を取得し、Image Builder ブループリントに追加するために出力をフォーマットする必要があります。
独自の Operator 用に作成されたカタログの場合は、次の手順を使用せずに、Image Builder ブループリントのイメージ参照をフォーマットできます。
前提条件
- 使用する Operator のカタログインデックスがある。
-
jqCLI ツールがインストールされている。 - Image Builder のブループリントファイルに精通している。
- Image Builder ブループリント TOML ファイルがある。
手順
カタログの
index.jsonファイルを解析して、Image Builder ブループリントに含める必要があるイメージ参照を取得します。フィルタリングされていないカタログを使用することも、ミラーリングできないイメージを除外することもできます。次のコマンドを実行して、フィルタリングされていないカタログの
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.17/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.17/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.17/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.17/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.17> になります。
次のコマンドを実行して、カタログインデックスイメージの SHA を取得します。
skopeo inspect docker://<registry.redhat.io/redhat/redhat-operator-index:v4.17> | jq `.Digest`
$ skopeo inspect docker://<registry.redhat.io/redhat/redhat-operator-index:v4.17> | jq `.Digest`1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- イメージダイジェストを取得するには、
jqコマンドのmirror.catalogカタログイメージ参照の値を使用します。この例では、<registry.redhat.io/redhat/redhat-operator-index:v4.17> になります。
出力例
"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
10.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 プラグインのドライラン 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.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