4.7. カスタムカタログの管理
dedicated-admin ロールを持つ管理者と Operator カタログメンテナーは、OpenShift Dedicated の Operator Lifecycle Manager (OLM) で バンドル形式 を使用してパッケージ化したカスタムカタログを作成および管理できます。
Kubernetes は定期的に特定の API を非推奨とし、後続のリリースで削除します。そのため、OpenShift Dedicated のバージョンで、API が削除された Kubernetes バージョンが採用されると、Operator がその API を使用できなくなります。
4.7.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
opmCLI がインストールされている。
4.7.2. ファイルベースのカタログ リンクのコピーリンクがクリップボードにコピーされました!
ファイルベースのカタログ は、Operator Lifecycle Manager (OLM) の最新バージョンのカタログ形式です。この形式は、プレーンテキストベース (JSON または YAML) であり、以前の SQLite データベース形式の宣言的な設定の進化であり、完全な下位互換性があります。
OpenShift Dedicated 4.11 以降、デフォルトの Red Hat 提供の Operator カタログはファイルベースのカタログ形式でリリースされます。OpenShift Dedicated 4.6 ~ 4.10 用のデフォルトの Red Hat 提供 Operator カタログは、非推奨の SQLite データベース形式でリリースされました。
opm サブコマンド、フラグ、および SQLite データベース形式に関連する機能も非推奨となり、今後のリリースで削除されます。機能は引き続きサポートされており、非推奨の SQLite データベース形式を使用するカタログに使用する必要があります。
opm index prune などの SQLite データベース形式を使用する opm サブコマンドおよびフラグの多くは、ファイルベースのカタログ形式では機能しません。ファイルベースのカタログを使用する方法の詳細は、Operator Framework パッケージ形式 を参照してください。
4.7.2.1. ファイルベースのカタログイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
opm CLI を使用して、非推奨の SQLite データベース形式を置き換えるプレーンテキストの ファイルベースのカタログ 形式 (JSON または YAML) を使用するカタログイメージを作成できます。
前提条件
-
opmCLI がインストールされている。 -
podmanバージョン 1.9.3 以降がある。 - バンドルイメージがビルドされ、Docker v2-2 をサポートするレジストリーにプッシュされている。
手順
カタログを初期化します。
次のコマンドを実行して、カタログ用のディレクトリーを作成します。
mkdir <catalog_dir>
$ mkdir <catalog_dir>Copy to Clipboard Copied! Toggle word wrap Toggle overflow opm generate dockerfileコマンドを実行して、カタログイメージを構築できる Dockerfile を生成します。opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4 -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4$ opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v41 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-iフラグを使用して公式の Red Hat ベースイメージを指定します。それ以外の場合、Dockerfile はデフォルトのアップストリームイメージを使用します。
Dockerfile は、直前の手順で作成したカタログディレクトリーと同じ親ディレクトリーに存在する必要があります。
ディレクトリー構造の例
. ├── <catalog_dir> └── <catalog_dir>.Dockerfile
.1 ├── <catalog_dir>2 └── <catalog_dir>.Dockerfile3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow opm initコマンドを実行して、カタログに Operator のパッケージ定義を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、指定されたカタログ設定ファイルに
olm.package宣言型設定 blob を生成します。
opm renderコマンドを実行して、バンドルをカタログに追加します。opm render <registry>/<namespace>/<bundle_image_name>:<tag> \ --output=yaml \ >> <catalog_dir>/index.yaml$ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \1 --output=yaml \ >> <catalog_dir>/index.yaml2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記チャネルには、1 つ以上のバンドルが含まれる必要があります。
バンドルのチャネルエントリーを追加します。たとえば、次の例を仕様に合わせて変更し、
<catalog_dir>/index.yamlファイルに追加します。チャネルエントリーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<operator_name>の後、かつ、バージョンのvの前に、ピリオド (.) を追加するようにしてください。それ以外の場合、エントリーがopm validateコマンドに合格できません。
ファイルベースのカタログを検証します。
カタログディレクトリーに対して
opm validateコマンドを実行します。opm validate <catalog_dir>
$ opm validate <catalog_dir>Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーコードが
0であることを確認します。echo $?
$ echo $?Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
0
0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
podman buildコマンドを実行して、カタログイメージをビルドします。podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow カタログイメージをレジストリーにプッシュします。
必要に応じて、
podman loginコマンドを実行してターゲットレジストリーで認証します。podman login <registry>
$ podman login <registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman pushコマンドを実行して、カタログイメージをプッシュします。podman push <registry>/<namespace>/<catalog_image_name>:<tag>
$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.2.2. ファイルベースのカタログイメージの更新またはフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
opm CLI を使用して、ファイルベースのカタログ形式を使用するカタログイメージを更新またはフィルタリングできます。既存のカタログイメージのコンテンツを抽出すると、必要に応じてカタログを変更できます。たとえば、以下を実行できます。
- パッケージの追加
- パッケージの削除
- 既存のパッケージエントリーの更新
- パッケージ、チャネル、バンドルごとの非推奨メッセージの記載
その後、イメージをカタログの更新バージョンとして再構築できます。
前提条件
ワークステーションに以下が含まれている。
-
opmCLI。 -
podmanversion 1.9.3+。 - ファイルベースのカタログイメージ。
このカタログに関連するワークステーションで最近初期化されたカタログディレクトリー構造。
初期化されたカタログディレクトリーがない場合は、ディレクトリーを作成し、Dockerfile を生成します。詳細は、「ファイルベースのカタログイメージの作成」手順の「カタログの初期化」手順を参照してください。
-
手順
カタログイメージのコンテンツを YAML 形式でカタログディレクトリーの
index.yamlファイルに展開します。opm render <registry>/<namespace>/<catalog_image_name>:<tag> \ -o yaml > <catalog_dir>/index.yaml -o yaml > <catalog_dir>/index.yaml$ opm render <registry>/<namespace>/<catalog_image_name>:<tag> \ -o yaml > <catalog_dir>/index.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記または、
-o jsonフラグを使用して JSON 形式で出力することもできます。作成された
index.yamlファイルの内容を仕様に合わせて変更します。重要バンドルがカタログに公開されたら、いずれかのユーザーがバンドルをインストールしていると想定します。カタログ内で以前に公開されたすべてのバンドルに、現在または新しいチャネルヘッドへの更新パスが設定されていることを確認し、そのバージョンがインストールされているユーザーが立ち往生するのを防ぎます。
- Operator を追加するには、「ファイルベースのカタログイメージの作成」手順のパッケージ、バンドル、およびチャネルエントリーを作成する手順に従います。
Operator を削除するには、パッケージに関連する
olm.package、olm.channel、およびolm.bundleBlob のセットを削除します。次の例は、カタログからexample-operatorパッケージを削除するために削除する必要があるセットを示しています。例4.9 削除されたエントリーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Operator の非推奨メッセージを追加または更新するには、パッケージの
index.yamlファイルと同じディレクトリーにdeprecations.yamlファイルがあることを確認してください。deprecations.yamlファイル形式の詳細は、「olm.deprecations スキーマ」を参照してください。
- 変更を保存します。
カタログを検証します。
opm validate <catalog_dir>
$ opm validate <catalog_dir>Copy to Clipboard Copied! Toggle word wrap Toggle overflow カタログを再構築します。
podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新されたカタログイメージをレジストリーにプッシュします。
podman push <registry>/<namespace>/<catalog_image_name>:<tag>
$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
Web コンソールで、Administration
Cluster Settings Configuration ページで OperatorHub 設定リソースに移動します。 カタログソースを追加するか、既存のカタログソースを更新して、更新されたカタログイメージのプル仕様を使用します。
詳細は、このセクションの「関連情報」にある「クラスターへのカタログソースの追加」を参照してください。
-
カタログソースが READY 状態になったら、Ecosystem
Software Catalog ページに移動します。Type 見出しの下の Operator を選択し、行った変更が Operator のリストに反映されていることを確認します。
4.7.3. SQLite ベースのカタログ リンクのコピーリンクがクリップボードにコピーされました!
Operator カタログの SQLite データベース形式は非推奨の機能です。非推奨の機能は依然として OpenShift Dedicated に含まれており、引き続きサポートされますが、この製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
OpenShift Dedicated で非推奨化または削除された主な機能の最新のリストは、OpenShift Dedicated リリースノートの 非推奨および削除された機能 セクションを参照してください。
4.7.3.1. SQLite ベースのインデックスイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
opm CLI を使用して、SQLite データベース形式に基づいてインデックスイメージを作成できます。
前提条件
-
opmCLI がインストールされている。 -
podmanバージョン 1.9.3 以降がある。 - バンドルイメージがビルドされ、Docker v2-2 をサポートするレジストリーにプッシュされている。
手順
新しいインデックスを開始します。
opm index add \ --bundles <registry>/<namespace>/<bundle_image_name>:<tag> \ --tag <registry>/<namespace>/<index_image_name>:<tag> \ [--binary-image <registry_base_image>]$ opm index add \ --bundles <registry>/<namespace>/<bundle_image_name>:<tag> \1 --tag <registry>/<namespace>/<index_image_name>:<tag> \2 [--binary-image <registry_base_image>]3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow インデックスイメージをレジストリーにプッシュします。
必要な場合は、ターゲットレジストリーで認証します。
podman login <registry>
$ podman login <registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow インデックスイメージをプッシュします。
podman push <registry>/<namespace>/<index_image_name>:<tag>
$ podman push <registry>/<namespace>/<index_image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.3.2. SQLite ベースのインデックスイメージの更新 リンクのコピーリンクがクリップボードにコピーされました!
dedicated-admin ロールを持つ管理者は、カスタムインデックスイメージを参照するカタログソースを使用するようにソフトウェアカタログを設定した後、インデックスイメージにバンドルイメージを追加することで、クラスター上で利用可能な Operators を最新の状態に保つことができます。
opm index add コマンドを使用して既存インデックスイメージを更新できます。
前提条件
-
opmCLI がインストールされている。 -
podmanバージョン 1.9.3 以降がある。 - インデックスイメージがビルドされ、レジストリーにプッシュされている。
- インデックスイメージを参照する既存のカタログソースがある。
手順
バンドルイメージを追加して、既存のインデックスを更新します。
opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \ --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \ --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \ --pull-tool podman$ opm index add \ --bundles <registry>/<namespace>/<new_bundle_image>@sha256:<digest> \1 --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \2 --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \3 --pull-tool podman4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<registry>-
quay.ioやmirror.example.comなどのレジストリーのホスト名を指定します。 <namespace>-
ocs-devやabcなど、レジストリーの namespace を指定します。 <new_bundle_image>-
ocs-operatorなど、レジストリーに追加する新しいバンドルイメージを指定します。 <digest>-
c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41などのバンドルイメージの SHA イメージ ID またはダイジェストを指定します。 <existing_index_image>-
abc-redhat-operator-indexなど、以前にプッシュされたイメージを指定します。 <existing_tag>-
以前にプッシュしたイメージのタグ (
4など) を指定します。 <updated_tag>-
更新されたインデックスイメージに適用するイメージタグ (
4.1など) を指定します。
コマンドの例
opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.1 \ --pull-tool podman$ opm index add \ --bundles quay.io/ocs-dev/ocs-operator@sha256:c7f11097a628f092d8bad148406aa0e0951094a03445fd4bc0775431ef683a41 \ --from-index mirror.example.com/abc/abc-redhat-operator-index:4 \ --tag mirror.example.com/abc/abc-redhat-operator-index:4.1 \ --pull-tool podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新されたインデックスイメージをプッシュします。
podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
$ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator Lifecycle Manager (OLM) がカタログソースで参照されるインデックスイメージを一定間隔で自動的にポーリングした後に、新規パッケージが正常に追加されたことを確認します。
oc get packagemanifests -n openshift-marketplace
$ oc get packagemanifests -n openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.3.3. SQLite ベースのインデックスイメージのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
Operator Bundle Format に基づくインデックスイメージは、Operator カタログのコンテナー化されたスナップショットです。パッケージの指定された一覧以外のすべてのインデックスを プルーニング できます。これにより、必要な Operator のみが含まれるソースインデックスのコピーを作成できます。
前提条件
-
podmanバージョン 1.9.3 以降がある。 -
grpcurl(サードパーティーのコマンドラインツール) がある。 -
opmCLI がインストールされている。 - Docker v2-2 をサポートするレジストリーにアクセスできる。
手順
ターゲットレジストリーで認証します。
podman login <target_registry>
$ podman login <target_registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow プルーニングされたインデックスに追加するパッケージのリストを判別します。
コンテナーでプルーニングするソースインデックスイメージを実行します。以下に例を示します。
podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4$ podman run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051
Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4... Getting image source signatures Copying blob ae8a0c23f5b1 done ... INFO[0000] serving registry database=/database/index.db port=50051Copy to Clipboard Copied! Toggle word wrap Toggle overflow 別のターミナルセッションで、
grpcurlコマンドを使用して、インデックスが提供するパッケージのリストを取得します。grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
$ grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.outCopy to Clipboard Copied! Toggle word wrap Toggle overflow packages.outファイルを検査し、プルーニングされたインデックスに保持したいパッケージ名をこのリストから特定します。以下に例を示します。パッケージリストのスニペットの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
podman runコマンドを実行したターミナルセッションで、Ctrl と C を押してコンテナープロセスを停止します。
以下のコマンドを実行して、指定したパッケージ以外のすべてのパッケージのソースインデックスをプルーニングします。
opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4 \ -p advanced-cluster-management,jaeger-product,quay-operator \ [-i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4] \ -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4$ opm index prune \ -f registry.redhat.io/redhat/redhat-operator-index:v4 \1 -p advanced-cluster-management,jaeger-product,quay-operator \2 [-i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4] \3 -t <target_registry>:<port>/<namespace>/redhat-operator-index:v44 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、新規インデックスイメージをターゲットレジストリーにプッシュします。
podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4
$ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
<namespace>はレジストリー上の既存の namespace になります。
4.7.4. カタログソースと Pod セキュリティーアドミッション リンクのコピーリンクがクリップボードにコピーされました!
Pod のセキュリティー標準を確保するために、Pod セキュリティーアドミッション が OpenShift Dedicated 4.11 で導入されました。SQLite ベースのカタログ形式と、OpenShift Dedicated 4.11 より前にリリースされたバージョンの opm CLI ツールを使用してビルドされたカタログソースは、制限付き Pod セキュリティーの適用下では実行できません。
OpenShift Dedicated では、デフォルトで namespace には制限付き Pod セキュリティーが適用されず、カタログソースのデフォルトセキュリティーモードは legacy に設定されています。
すべての namespace に対するデフォルトの制限付き適用は、今後の OpenShift Dedicated リリースに組み込まれる予定です。制限付き適用が発生した場合、カタログソース Pod の Pod 仕様のセキュリティーコンテキストは、制限付き Pod のセキュリティー標準に一致する必要があります。カタログソースイメージで別の Pod セキュリティー標準が必要な場合は、namespace の Pod セキュリティーアドミッションラベルを明示的に設定する必要があります。
SQLite ベースのカタログソース Pod を制限付きで実行したくない場合は、OpenShift Dedicated でカタログソースを更新する必要はありません。
ただし、制限付きの Pod セキュリティー適用下でカタログソースが確実に実行されるように、今すぐ対策を講じることを推奨します。制限付き Pod セキュリティー適用下でカタログソースが確実に実行されるように対策を講じないと、今後の OpenShift Dedicated リリースでカタログソースが動作しなくなる可能性があります。
カタログの作成者は、次のいずれかのアクションを実行することで、制限付き Pod セキュリティー適用との互換性を有効にできます。
- カタログをファイルベースのカタログ形式に移行します。
-
OpenShift Dedicated 4.11 以降でリリースされた
opmCLI ツールのバージョンを使用してカタログイメージを更新します。
SQLite データベースカタログ形式は非推奨ですが、Red Hat では引き続きサポートされています。将来のリリースでは、SQLite データベース形式はサポートされなくなり、カタログはファイルベースのカタログ形式に移行する必要があります。OpenShift Dedicated 4.11 以降、デフォルトの Red Hat 提供の Operator カタログは、ファイルベースのカタログ形式でリリースされます。ファイルベースのカタログは、制限付き Pod セキュリティー適用と互換性があります。
SQLite データベースカタログイメージを更新したり、カタログをファイルベースのカタログ形式に移行したりしたくない場合は、昇格されたアクセス許可で実行するようにカタログを設定できます。
4.7.4.1. SQLite データベースカタログをファイルベースのカタログ形式に移行する リンクのコピーリンクがクリップボードにコピーされました!
非推奨の SQLite データベース形式のカタログをファイルベースのカタログ形式に更新できます。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
ワークステーション上の OpenShift Dedicated でリリースされた
opmCLI ツールの最新バージョンがある。
手順
次のコマンドを実行して、SQLite データベースカタログをファイルベースのカタログに移行します。
opm migrate <registry_image> <fbc_directory>
$ opm migrate <registry_image> <fbc_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ファイルベースのカタログ用の Dockerfile を生成します。
opm generate dockerfile <fbc_directory> \ --binary-image \ registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4
$ opm generate dockerfile <fbc_directory> \ --binary-image \ registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- 生成された Dockerfile をビルドしてタグ付けし、レジストリーにプッシュできます。
4.7.4.2. SQLite データベースカタログイメージの再ビルド リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dedicated のお使いのバージョンでリリースされた opm CLI ツールの最新バージョンを使用して、SQLite データベースカタログイメージを再ビルドできます。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
ワークステーション上の OpenShift Dedicated でリリースされた
opmCLI ツールの最新バージョンがある。
手順
次のコマンドを実行して、最新バージョンの
opmCLI ツールでカタログを再構築します。opm index add --binary-image \ registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4 \ --from-index <your_registry_image> \ --bundles "" -t \<your_registry_image>
$ opm index add --binary-image \ registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4 \ --from-index <your_registry_image> \ --bundles "" -t \<your_registry_image>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.4.3. 昇格された権限で実行するためのカタログの設定 リンクのコピーリンクがクリップボードにコピーされました!
SQLite データベースカタログイメージを更新したり、カタログをファイルベースのカタログ形式に移行したりしたくない場合は、次のアクションを実行して、デフォルトの Pod セキュリティー適用が制限付きに変更されたときにカタログソースが確実に実行されるようにすることができます。
- カタログソース定義でカタログセキュリティーモードをレガシーに手動で設定します。このアクションにより、デフォルトのカタログセキュリティーモードが制限付きに変更された場合でも、カタログが従来のアクセス許可で実行されることが保証されます。
- ベースラインまたは特権付き Pod のセキュリティー適用のために、カタログソースの namespace にラベルを付けます。
SQLite データベースカタログ形式は非推奨ですが、Red Hat では引き続きサポートされています。将来のリリースでは、SQLite データベース形式はサポートされなくなり、カタログはファイルベースのカタログ形式に移行する必要があります。ファイルベースのカタログは、制限付き Pod セキュリティー適用と互換性があります。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
Pod Security Admission 標準が
baselineまたはprivilegedに昇格された実行中の Pod をサポートするターゲット namespace がある。
手順
次の例に示すように、
spec.grpcPodConfig.securityContextConfigラベルをlegacyに設定して、CatalogSource定義を編集します。CatalogSource定義の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントOpenShift Dedicated では、
spec.grpcPodConfig.securityContextConfigフィールドはデフォルトでlegacyに設定されます。OpenShift Dedicated の今後のリリースでは、デフォルト設定がrestrictedに変更される予定です。カタログを制限付き適用で実行できない場合は、このフィールドを手動でlegacyに設定することを推奨します。次の例に示すように、
<namespace>.yamlファイルを編集して、上位の Pod Security Admission 標準をカタログソース namespace に追加します。<namespace>.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.5. クラスターへのカタログソースの追加 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dedicated クラスターにカタログソースを追加すると、ユーザーが Operator を検出してインストールできるようになります。dedicated-admin ロールを持つ管理者は、インデックスイメージを参照する CatalogSource オブジェクトを作成できます。ソフトウェアカタログは、カタログソースを使用してユーザーインターフェイスの内容を表示します。
または、Web コンソールを使用してカタログソースを管理できます。Home CatalogSource を検索します。個々のソースを作成、更新、削除、無効化、および有効化できます。
前提条件
- インデックスイメージをビルドしてレジストリーにプッシュしている。
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
インデックスイメージを参照する
CatalogSourceオブジェクトを作成します。仕様を以下のように変更し、これを
catalogSource.yamlファイルとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- カタログソースを全 namespace のユーザーがグローバルに利用できるようにする場合は、
openshift-marketplacenamespace を指定します。それ以外の場合は、そのカタログの別の namespace を対象とし、その namespace のみが利用できるように指定できます。 - 2
- 任意:
olm.catalogImageTemplateアノテーションをカタログイメージ名に設定し、イメージタグのテンプレートを作成する際に、1 つ以上の Kubernetes クラスターバージョン変数を使用します。 - 3
legacyまたはrestrictedの値を指定します。フィールドが設定されていない場合、デフォルト値はlegacyです。今後の OpenShift Dedicated リリースでは、デフォルト値がrestrictedになる予定です。restricted権限でカタログを実行できない場合は、このフィールドを手動でlegacyに設定することを推奨します。- 4
- インデックスイメージを指定します。イメージ名の後にタグを指定すると (
:v4など)、カタログソース Pod がAlwaysイメージプルポリシーを使用します。つまり、Pod がコンテナーを起動する前に常にイメージをプルするようになります。@sha256:<id>などのダイジェストを指定した場合、イメージプルポリシーはIfNotPresentになります。これは、イメージがノード上にまだ存在しない場合にのみ、Pod がイメージをプルすることを意味します。 - 5
- カタログを公開する名前または組織名を指定します。
- 6
- カタログソースは新規バージョンの有無を自動的にチェックし、最新の状態を維持します。
このファイルを使用して
CatalogSourceオブジェクトを作成します。oc apply -f catalogSource.yaml
$ oc apply -f catalogSource.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のリソースが正常に作成されていることを確認します。
Pod を確認します。
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 my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26hCopy to Clipboard Copied! Toggle word wrap Toggle overflow カタログソースを確認します。
oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージマニフェストを確認します。
oc get packagemanifest -n openshift-marketplace
$ oc get packagemanifest -n openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CATALOG AGE jaeger-product My Operator Catalog 93s
NAME CATALOG AGE jaeger-product My Operator Catalog 93sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Dedicated Web コンソールの Software Catalog ページから Operator をインストールできるようになりました。
4.7.6. カスタムカタログの削除 リンクのコピーリンクがクリップボードにコピーされました!
dedicated-admin ロールを持つ管理者は、関連するカタログソースを削除することで、以前にクラスターに追加したカスタム Operator カタログを削除できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
Web コンソールの Administrator パースペクティブで、Home
Search に移動します。 - Project: リストからプロジェクトを選択します。
- Resources リストから CatalogSource を選択します。
-
削除するカタログの Options メニュー
を選択し、Delete CatalogSource をクリックします。