4.7. カスタムカタログの管理
dedicated-admin
ロールを持つ管理者と Operator カタログメンテナーは、Red Hat OpenShift Service on AWS の Operator Lifecycle Manager (OLM) で バンドル形式 を使用してパッケージ化したカスタムカタログを作成および管理できます。
Kubernetes は定期的に特定の API を非推奨とし、後続のリリースで削除します。そのため、Red Hat OpenShift Service on AWS のバージョンで、API が削除された Kubernetes バージョンが採用されると、Operator がその API を使用できなくなります。
クラスターでカスタムカタログを使用している場合は、Red Hat OpenShift Service on AWS のバージョンと Operator の互換性の管理 を参照し、Operator 作成者がプロジェクトを更新する際にワークロードの問題や互換性のないアップグレードを避ける方法について詳細を確認してください。
4.7.1. 前提条件
-
opm
CLI がインストールされている。
4.7.2. ファイルベースのカタログ
ファイルベースのカタログは、Operator Lifecycle Manager(OLM) のカタログ形式の最新の反復になります。この形式は、プレーンテキストベース (JSON または YAML) であり、以前の SQLite データベース形式の宣言的な設定の進化であり、完全な下位互換性があります。
Red Hat OpenShift Service on AWS 4.11 の時点で、デフォルトの Red Hat が提供する Operator カタログは、ファイルベースのカタログ形式でリリースされます。Red Hat OpenShift Service on AWS 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>
opm generate dockerfile
コマンドを実行して、カタログイメージを構築できる Dockerfile を生成します。$ opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4 1
- 1
-i
フラグを使用して公式の Red Hat ベースイメージを指定します。それ以外の場合、Dockerfile はデフォルトのアップストリームイメージを使用します。
Dockerfile は、直前の手順で作成したカタログディレクトリーと同じ親ディレクトリーに存在する必要があります。
ディレクトリー構造の例
. 1 ├── <catalog_dir> 2 └── <catalog_dir>.Dockerfile 3
opm init
コマンドを実行して、カタログに Operator のパッケージ定義を追加します。$ opm init <operator_name> \ 1 --default-channel=preview \ 2 --description=./README.md \ 3 --icon=./operator-icon.svg \ 4 --output yaml \ 5 > <catalog_dir>/index.yaml 6
このコマンドは、指定されたカタログ設定ファイルに
olm.package
宣言型設定 blob を生成します。
opm render
コマンドを実行して、バンドルをカタログに追加します。$ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \ 1 --output=yaml \ >> <catalog_dir>/index.yaml 2
注記チャネルには、1 つ以上のバンドルが含まれる必要があります。
バンドルのチャネルエントリーを追加します。たとえば、次の例を仕様に合わせて変更し、
<catalog_dir>/index.yaml
ファイルに追加します。チャネルエントリーの例
--- schema: olm.channel package: <operator_name> name: preview entries: - name: <operator_name>.v0.1.0 1
- 1
<operator_name>
の後、かつ、バージョンのv
の前に、ピリオド (.
) を追加するようにしてください。それ以外の場合、エントリーがopm validate
コマンドに合格できません。
ファイルベースのカタログを検証します。
カタログディレクトリーに対して
opm validate
コマンドを実行します。$ opm validate <catalog_dir>
エラーコードが
0
であることを確認します。$ echo $?
出力例
0
podman build
コマンドを実行して、カタログイメージをビルドします。$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>
カタログイメージをレジストリーにプッシュします。
必要に応じて、
podman login
コマンドを実行してターゲットレジストリーで認証します。$ podman login <registry>
podman push
コマンドを実行して、カタログイメージをプッシュします。$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
関連情報
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 json
フラグを使用して JSON 形式で出力することもできます。作成された
index.yaml
ファイルの内容を仕様に合わせて変更します。重要バンドルがカタログに公開されたら、いずれかのユーザーがバンドルをインストールしていると想定します。カタログ内で以前に公開されたすべてのバンドルに、現在または新しいチャネルヘッドへの更新パスが設定されていることを確認し、そのバージョンがインストールされているユーザーが立ち往生するのを防ぎます。
- Operator を追加するには、「ファイルベースのカタログイメージの作成」手順のパッケージ、バンドル、およびチャネルエントリーを作成する手順に従います。
Operator を削除するには、パッケージに関連する
olm.package
、olm.channel
、およびolm.bundle
Blob のセットを削除します。次の例は、カタログからexample-operator
パッケージを削除するために削除する必要があるセットを示しています。例4.9 削除されたエントリーの例
--- defaultChannel: release-2.7 icon: base64data: <base64_string> mediatype: image/svg+xml name: example-operator schema: olm.package --- entries: - name: example-operator.v2.7.0 skipRange: '>=2.6.0 <2.7.0' - name: example-operator.v2.7.1 replaces: example-operator.v2.7.0 skipRange: '>=2.6.0 <2.7.1' - name: example-operator.v2.7.2 replaces: example-operator.v2.7.1 skipRange: '>=2.6.0 <2.7.2' - name: example-operator.v2.7.3 replaces: example-operator.v2.7.2 skipRange: '>=2.6.0 <2.7.3' - name: example-operator.v2.7.4 replaces: example-operator.v2.7.3 skipRange: '>=2.6.0 <2.7.4' name: release-2.7 package: example-operator schema: olm.channel --- image: example.com/example-inc/example-operator-bundle@sha256:<digest> name: example-operator.v2.7.0 package: example-operator properties: - type: olm.gvk value: group: example-group.example.io kind: MyObject version: v1alpha1 - type: olm.gvk value: group: example-group.example.io kind: MyOtherObject version: v1beta1 - type: olm.package value: packageName: example-operator version: 2.7.0 - type: olm.bundle.object value: data: <base64_string> - type: olm.bundle.object value: data: <base64_string> relatedImages: - image: example.com/example-inc/example-related-image@sha256:<digest> name: example-related-image schema: olm.bundle ---
-
Operator の非推奨メッセージを追加または更新するには、パッケージの
index.yaml
ファイルと同じディレクトリーにdeprecations.yaml
ファイルがあることを確認してください。deprecations.yaml
ファイル形式の詳細は、「olm.deprecations スキーマ」を参照してください。
- 変更を保存します。
カタログを検証します。
$ opm validate <catalog_dir>
カタログを再構築します。
$ podman build . \ -f <catalog_dir>.Dockerfile \ -t <registry>/<namespace>/<catalog_image_name>:<tag>
更新されたカタログイメージをレジストリーにプッシュします。
$ podman push <registry>/<namespace>/<catalog_image_name>:<tag>
検証
-
Web コンソールで、Administration
Cluster Settings Configuration ページで OperatorHub 設定リソースに移動します。 カタログソースを追加するか、既存のカタログソースを更新して、更新されたカタログイメージのプル仕様を使用します。
詳細は、このセクションの「関連情報」にある「クラスターへのカタログソースの追加」を参照してください。
-
カタログソースが READY 状態になったら、Operators
OperatorHub ページに移動し、加えた変更が Operator のリストに反映されていることを確認します。
4.7.3. SQLite ベースのカタログ
Operator カタログの SQLite データベース形式は非推奨の機能です。非推奨の機能は依然として Red Hat OpenShift Service on AWS に含まれており、引き続きサポートされますが、この製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
Red Hat OpenShift Service on AWS で非推奨化または削除された主な機能の最新のリストについては、Red Hat OpenShift Service on AWS リリースノートの 非推奨および削除された機能 セクションを参照してください。
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> \1 --tag <registry>/<namespace>/<index_image_name>:<tag> \2 [--binary-image <registry_base_image>] 3
インデックスイメージをレジストリーにプッシュします。
必要な場合は、ターゲットレジストリーで認証します。
$ podman login <registry>
インデックスイメージをプッシュします。
$ podman push <registry>/<namespace>/<index_image_name>:<tag>
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> \1 --from-index <registry>/<namespace>/<existing_index_image>:<existing_tag> \2 --tag <registry>/<namespace>/<existing_index_image>:<updated_tag> \3 --pull-tool podman 4
ここでは、以下のようになります。
<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
更新されたインデックスイメージをプッシュします。
$ podman push <registry>/<namespace>/<existing_index_image>:<updated_tag>
Operator Lifecycle Manager (OLM) がカタログソースで参照されるインデックスイメージを一定間隔で自動的にポーリングした後に、新規パッケージが正常に追加されたことを確認します。
$ oc get packagemanifests -n openshift-marketplace
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 run -p50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4
出力例
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
別のターミナルセッションで、
grpcurl
コマンドを使用して、インデックスが提供するパッケージのリストを取得します。$ grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
packages.out
ファイルを検査し、プルーニングされたインデックスに保持したいパッケージ名をこのリストから特定します。以下に例を示します。パッケージリストのスニペットの例
... { "name": "advanced-cluster-management" } ... { "name": "jaeger-product" } ... { { "name": "quay-operator" } ...
-
podman run
コマンドを実行したターミナルセッションで、Ctrl と C を押してコンテナープロセスを停止します。
以下のコマンドを実行して、指定したパッケージ以外のすべてのパッケージのソースインデックスをプルーニングします。
$ 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:v4.9] \3 -t <target_registry>:<port>/<namespace>/redhat-operator-index:v4 4
以下のコマンドを実行して、新規インデックスイメージをターゲットレジストリーにプッシュします。
$ podman push <target_registry>:<port>/<namespace>/redhat-operator-index:v4
ここで、
<namespace>
はレジストリー上の既存の namespace になります。
4.7.4. カタログソースと Pod セキュリティーアドミッション
Pod のセキュリティー標準を確保するために、Pod セキュリティーアドミッション が Red Hat OpenShift Service on AWS 4.11 で導入されました。SQLite ベースのカタログ形式と、Red Hat OpenShift Service on AWS 4.11 より前にリリースされたバージョンの opm
CLI ツールを使用してビルドされたカタログソースは、制限付き Pod セキュリティーの適用下では実行できません。
Red Hat OpenShift Service on AWS 4 では、制限付き Pod セキュリティーが namespace にデフォルトで適用されず、カタログソースのデフォルトセキュリティーモードが legacy
に設定されています。
すべての namespace に対するデフォルトの制限付き適用は、今後の Red Hat OpenShift Service on AWS リリースに組み込まれる予定です。制限付き適用が発生した場合、カタログソース Pod の Pod 仕様のセキュリティーコンテキストは、制限付き Pod のセキュリティー標準に一致する必要があります。カタログソースイメージで別の Pod セキュリティー標準が必要な場合は、namespace の Pod セキュリティーアドミッションラベルを明示的に設定する必要があります。
SQLite ベースのカタログソース Pod を制限付きで実行する必要がない場合は、Red Hat OpenShift Service on AWS 4 でカタログソースを更新する必要はありません。
ただし、制限付きの Pod セキュリティー適用下でカタログソースが確実に実行されるように、今すぐ対策を講じることを推奨します。制限付き Pod セキュリティー適用下でカタログソースが確実に実行されるように対策を講じないと、今後の Red Hat OpenShift Service on AWS リリースでカタログソースが動作しなくなる可能性があります。
カタログの作成者は、次のいずれかのアクションを実行することで、制限付き Pod セキュリティー適用との互換性を有効にできます。
- カタログをファイルベースのカタログ形式に移行します。
-
Red Hat OpenShift Service on AWS 4.11 以降でリリースされた
opm
CLI ツールのバージョンを使用してカタログイメージを更新します。
SQLite データベースカタログ形式は非推奨ですが、Red Hat では引き続きサポートされています。将来のリリースでは、SQLite データベース形式はサポートされなくなり、カタログはファイルベースのカタログ形式に移行する必要があります。Red Hat OpenShift Service on AWS 4.11 以降、デフォルトの Red Hat 提供の Operator カタログは、ファイルベースのカタログ形式でリリースされます。ファイルベースのカタログは、制限付き Pod セキュリティー適用と互換性があります。
SQLite データベースカタログイメージを更新したり、カタログをファイルベースのカタログ形式に移行したりしたくない場合は、昇格されたアクセス許可で実行するようにカタログを設定できます。
4.7.4.1. SQLite データベースカタログをファイルベースのカタログ形式に移行する
非推奨の SQLite データベース形式のカタログをファイルベースのカタログ形式に更新できます。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
Red Hat OpenShift Service on AWS 4 でリリースされた
opm
CLI ツールの最新バージョンが、ワークステーションにインストールされている。
手順
次のコマンドを実行して、SQLite データベースカタログをファイルベースのカタログに移行します。
$ opm migrate <registry_image> <fbc_directory>
次のコマンドを実行して、ファイルベースのカタログ用の Dockerfile を生成します。
$ opm generate dockerfile <fbc_directory> \ --binary-image \ registry.redhat.io/openshift4/ose-operator-registry:v4
次のステップ
- 生成された Dockerfile をビルドしてタグ付けし、レジストリーにプッシュできます。
関連情報
4.7.4.2. SQLite データベースカタログイメージの再ビルド
Red Hat OpenShift Service on AWS のお使いのバージョンでリリースされた opm
CLI ツールの最新バージョンを使用して、SQLite データベースカタログイメージを再ビルドできます。
前提条件
- SQLite データベースカタログソースがある。
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
Red Hat OpenShift Service on AWS 4 でリリースされた
opm
CLI ツールの最新バージョンが、ワークステーションにインストールされている。
手順
次のコマンドを実行して、最新バージョンの
opm
CLI ツールでカタログを再構築します。$ opm index add --binary-image \ registry.redhat.io/openshift4/ose-operator-registry:v4 \ --from-index <your_registry_image> \ --bundles "" -t \<your_registry_image>
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
定義の例apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-catsrc namespace: my-ns spec: sourceType: grpc grpcPodConfig: securityContextConfig: legacy image: my-image:latest
ヒントRed Hat OpenShift Service on AWS 4 では、
spec.grpcPodConfig.securityContextConfig
フィールドはデフォルトでlegacy
に設定されています。Red Hat OpenShift Service on AWS の今後のリリースでは、デフォルト設定がrestricted
に変更される予定です。カタログを制限付き適用で実行できない場合は、このフィールドを手動でlegacy
に設定することを推奨します。次の例に示すように、
<namespace>.yaml
ファイルを編集して、上位の Pod Security Admission 標準をカタログソース namespace に追加します。<namespace>.yaml
ファイルの例apiVersion: v1 kind: Namespace metadata: ... labels: security.openshift.io/scc.podSecurityLabelSync: "false" 1 openshift.io/cluster-monitoring: "true" pod-security.kubernetes.io/enforce: baseline 2 name: "<namespace_name>"
4.7.5. クラスターへのカタログソースの追加
Red Hat OpenShift Service on AWS クラスターにカタログソースを追加すると、ユーザーが Operator を検出してインストールできるようになります。dedicated-admin
ロールを持つ管理者は、インデックスイメージを参照する CatalogSource
オブジェクトを作成できます。OperatorHub はカタログソースを使用してユーザーインターフェイスを設定します。
または、Web コンソールを使用してカタログソースを管理できます。Home CatalogSource
を検索します。個々のソースを作成、更新、削除、無効化、および有効化できます。
前提条件
- インデックスイメージをビルドしてレジストリーにプッシュしている。
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
インデックスイメージを参照する
CatalogSource
オブジェクトを作成します。仕様を以下のように変更し、これを
catalogSource.yaml
ファイルとして保存します。apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog namespace: openshift-marketplace 1 annotations: olm.catalogImageTemplate: 2 "<registry>/<namespace>/<index_image_name>:v{kube_major_version}.{kube_minor_version}.{kube_patch_version}" spec: sourceType: grpc grpcPodConfig: securityContextConfig: <security_mode> 3 image: <registry>/<namespace>/<index_image_name>:<tag> 4 displayName: My Operator Catalog publisher: <publisher_name> 5 updateStrategy: registryPoll: 6 interval: 30m
- 1
- カタログソースを全 namespace のユーザーがグローバルに利用できるようにする場合は、
openshift-marketplace
namespace を指定します。それ以外の場合は、そのカタログの別の namespace を対象とし、その namespace のみが利用できるように指定できます。 - 2
- 任意:
olm.catalogImageTemplate
アノテーションをカタログイメージ名に設定し、イメージタグのテンプレートを作成する際に、1 つ以上の Kubernetes クラスターバージョン変数を使用します。 - 3
legacy
またはrestricted
の値を指定します。フィールドが設定されていない場合、デフォルト値はlegacy
です。今後の Red Hat OpenShift Service on AWS リリースでは、デフォルト値がrestricted
になる予定です。restricted
権限でカタログを実行できない場合は、このフィールドを手動でlegacy
に設定することを推奨します。- 4
- インデックスイメージを指定します。イメージ名の後にタグを指定すると (
:v4
など)、カタログソース Pod がAlways
イメージプルポリシーを使用します。つまり、Pod がコンテナーを起動する前に常にイメージをプルするようになります。@sha256:<id>
などのダイジェストを指定した場合、イメージプルポリシーはIfNotPresent
になります。これは、イメージがノード上にまだ存在しない場合にのみ、Pod がイメージをプルすることを意味します。 - 5
- カタログを公開する名前または組織名を指定します。
- 6
- カタログソースは新規バージョンの有無を自動的にチェックし、最新の状態を維持します。
このファイルを使用して
CatalogSource
オブジェクトを作成します。$ oc apply -f catalogSource.yaml
以下のリソースが正常に作成されていることを確認します。
Pod を確認します。
$ oc get pods -n openshift-marketplace
出力例
NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
カタログソースを確認します。
$ oc get catalogsource -n openshift-marketplace
出力例
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
パッケージマニフェストを確認します。
$ oc get packagemanifest -n openshift-marketplace
出力例
NAME CATALOG AGE jaeger-product My Operator Catalog 93s
これで Red Hat OpenShift Service on AWS Web コンソールの OperatorHub ページから Operator をインストールできるようになりました。
4.7.6. カスタムカタログの削除
dedicated-admin
ロールを持つ管理者は、関連するカタログソースを削除することで、以前にクラスターに追加したカスタム Operator カタログを削除できます。
前提条件
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
Web コンソールの Administrator パースペクティブで、Home
Search に移動します。 - Project: リストからプロジェクトを選択します。
- Resources リストから CatalogSource を選択します。
- 削除するカタログの Options メニュー を選択し、Delete CatalogSource をクリックします。