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-run
3 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 のカタログインデックスがある。
-
jq
CLI ツールがインストールされている。 - 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.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.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.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.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-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