4.7. カスタムカタログの管理
dedicated-admin
ロールを持つ管理者と Operator カタログメンテナーは、OpenShift Dedicated の Operator Lifecycle Manager (OLM) で バンドル形式 を使用してパッケージ化したカスタムカタログを作成および管理できます。
Kubernetes は定期的に特定の API を非推奨とし、後続のリリースで削除します。そのため、OpenShift Dedicated のバージョンで、API が削除された Kubernetes バージョンが採用されると、Operator がその API を使用できなくなります。
4.7.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
opm
CLI がインストールされている。
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) を使用するカタログイメージを作成できます。
前提条件
-
opm
CLI がインストールされている。 -
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:v4
1 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>.Dockerfile
3 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.yaml
2 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
0
Copy 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 を使用して、ファイルベースのカタログ形式を使用するカタログイメージを更新またはフィルタリングできます。既存のカタログイメージのコンテンツを抽出すると、必要に応じてカタログを変更できます。たとえば、以下を実行できます。
- パッケージの追加
- パッケージの削除
- 既存のパッケージエントリーの更新
- パッケージ、チャネル、バンドルごとの非推奨メッセージの記載
その後、イメージをカタログの更新バージョンとして再構築できます。
前提条件
ワークステーションに以下が含まれている。
-
opm
CLI。 -
podman
version 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記または、
-o json
フラグを使用して JSON 形式で出力することもできます。作成された
index.yaml
ファイルの内容を仕様に合わせて変更します。重要バンドルがカタログに公開されたら、いずれかのユーザーがバンドルをインストールしていると想定します。カタログ内で以前に公開されたすべてのバンドルに、現在または新しいチャネルヘッドへの更新パスが設定されていることを確認し、そのバージョンがインストールされているユーザーが立ち往生するのを防ぎます。
- Operator を追加するには、「ファイルベースのカタログイメージの作成」手順のパッケージ、バンドル、およびチャネルエントリーを作成する手順に従います。
Operator を削除するには、パッケージに関連する
olm.package
、olm.channel
、およびolm.bundle
Blob のセットを削除します。次の例は、カタログから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 状態になったら、Operators
OperatorHub ページに移動し、加えた変更が Operator のリストに反映されていることを確認します。
4.7.3. SQLite ベースのカタログ リンクのコピーリンクがクリップボードにコピーされました!
Operator カタログの SQLite データベース形式は非推奨の機能です。非推奨の機能は依然として OpenShift Dedicated に含まれており、引き続きサポートされますが、この製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
OpenShift Dedicated で非推奨化または削除された主な機能の最新のリストは、OpenShift Dedicated リリースノートの 非推奨および削除された機能 セクションを参照してください。
4.7.3.1. SQLite ベースのインデックスイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
opm
CLI を使用して、SQLite データベース形式に基づいてインデックスイメージを作成できます。
前提条件
-
opm
CLI がインストールされている。 -
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
ロールを持つ管理者は、カスタムインデックスイメージを参照するカタログソースを使用するように OperatorHub を設定した後、インデックスイメージにバンドルイメージを追加することで、クラスター上で利用可能な Operator を最新の状態に保つことができます。
opm index add
コマンドを使用して既存インデックスイメージを更新できます。
前提条件
-
opm
CLI がインストールされている。 -
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 podman
4 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 podman
Copy 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-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.3.3. SQLite ベースのインデックスイメージのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
Operator Bundle Format に基づくインデックスイメージは、Operator カタログのコンテナー化されたスナップショットです。パッケージの指定された一覧以外のすべてのインデックスを プルーニング できます。これにより、必要な Operator のみが含まれるソースインデックスのコピーを作成できます。
前提条件
-
podman
バージョン 1.9.3 以降がある。 -
grpcurl
(サードパーティーのコマンドラインツール) がある。 -
opm
CLI がインストールされている。 - 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:v4
Copy 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=50051
Copy 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.out
Copy 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:v4
4 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:v4
Copy 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 4 では、制限付き Pod セキュリティーが namespace にデフォルトで適用されず、カタログソースのデフォルトセキュリティーモードが legacy
に設定されています。
すべての namespace に対するデフォルトの制限付き適用は、今後の OpenShift Dedicated リリースに組み込まれる予定です。制限付き適用が発生した場合、カタログソース Pod の Pod 仕様のセキュリティーコンテキストは、制限付き Pod のセキュリティー標準に一致する必要があります。カタログソースイメージで別の Pod セキュリティー標準が必要な場合は、namespace の Pod セキュリティーアドミッションラベルを明示的に設定する必要があります。
SQLite ベースのカタログソース Pod を制限付きで実行する必要がない場合は、OpenShift Dedicated 4 でカタログソースを更新する必要はありません。
ただし、制限付きの Pod セキュリティー適用下でカタログソースが確実に実行されるように、今すぐ対策を講じることを推奨します。制限付き Pod セキュリティー適用下でカタログソースが確実に実行されるように対策を講じないと、今後の OpenShift Dedicated リリースでカタログソースが動作しなくなる可能性があります。
カタログの作成者は、次のいずれかのアクションを実行することで、制限付き Pod セキュリティー適用との互換性を有効にできます。
- カタログをファイルベースのカタログ形式に移行します。
-
OpenShift Dedicated 4.11 以降でリリースされた
opm
CLI ツールのバージョンを使用してカタログイメージを更新します。
SQLite データベースカタログ形式は非推奨ですが、Red Hat では引き続きサポートされています。将来のリリースでは、SQLite データベース形式はサポートされなくなり、カタログはファイルベースのカタログ形式に移行する必要があります。OpenShift Dedicated 4.11 以降、デフォルトの Red Hat 提供の Operator カタログは、ファイルベースのカタログ形式でリリースされます。ファイルベースのカタログは、制限付き Pod セキュリティー適用と互換性があります。
SQLite データベースカタログイメージを更新したり、カタログをファイルベースのカタログ形式に移行したりしたくない場合は、昇格されたアクセス許可で実行するようにカタログを設定できます。
4.7.4.1. SQLite データベースカタログをファイルベースのカタログ形式に移行する リンクのコピーリンクがクリップボードにコピーされました!
非推奨の SQLite データベース形式のカタログをファイルベースのカタログ形式に更新できます。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift Dedicated 4 でリリースされた
opm
CLI ツールの最新バージョンが、ワークステーションにインストールされている。
手順
次のコマンドを実行して、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:v4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- 生成された Dockerfile をビルドしてタグ付けし、レジストリーにプッシュできます。
4.7.4.2. SQLite データベースカタログイメージの再ビルド リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dedicated のお使いのバージョンでリリースされた opm
CLI ツールの最新バージョンを使用して、SQLite データベースカタログイメージを再ビルドできます。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift Dedicated 4 でリリースされた
opm
CLI ツールの最新バージョンが、ワークステーションにインストールされている。
手順
次のコマンドを実行して、最新バージョンの
opm
CLI ツールでカタログを再構築します。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 4 では、
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
オブジェクトを作成できます。OperatorHub はカタログソースを使用してユーザーインターフェイスを設定します。
または、Web コンソールを使用してカタログソースを管理できます。Home CatalogSource
を検索します。個々のソースを作成、更新、削除、無効化、および有効化できます。
前提条件
- インデックスイメージをビルドしてレジストリーにプッシュしている。
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
インデックスイメージを参照する
CatalogSource
オブジェクトを作成します。仕様を以下のように変更し、これを
catalogSource.yaml
ファイルとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- カタログソースを全 namespace のユーザーがグローバルに利用できるようにする場合は、
openshift-marketplace
namespace を指定します。それ以外の場合は、そのカタログの別の 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のリソースが正常に作成されていることを確認します。
Pod を確認します。
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 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 26h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カタログソースを確認します。
oc get catalogsource -n openshift-marketplace
$ oc get catalogsource -n openshift-marketplace
Copy 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 5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージマニフェストを確認します。
oc get packagemanifest -n openshift-marketplace
$ oc get packagemanifest -n openshift-marketplace
Copy 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 93s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで OpenShift Dedicated Web コンソールの OperatorHub ページから Operator をインストールできるようになりました。
4.7.6. カスタムカタログの削除 リンクのコピーリンクがクリップボードにコピーされました!
dedicated-admin
ロールを持つ管理者は、関連するカタログソースを削除することで、以前にクラスターに追加したカスタム Operator カタログを削除できます。
前提条件
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
Web コンソールの Administrator パースペクティブで、Home
Search に移動します。 - Project: リストからプロジェクトを選択します。
- Resources リストから CatalogSource を選択します。
-
削除するカタログの Options メニュー
を選択し、Delete CatalogSource をクリックします。