7.4. OLM 1.0 でのプレーンバンドルの管理 (テクノロジープレビュー)
Operator Lifecycle Manager (OLM) 1.0 では、プレーンバンドル は YAML 形式の任意の Kubernetes マニフェストの静的コレクションです。olm.bundle スキーマオブジェクトの実験的な olm.bundle.mediatype プロパティーは、プレーンバンドル (plain+v0) と通常の (registry+v1) バンドルを区別します。
OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
クラスター管理者は、次の手順を実行することで、プレーンバンドルイメージを含むファイルベースのカタログを構築して公開できます。
- プレーンなバンドルイメージを構築します。
- ファイルベースのカタログを作成します。
- プレーンバンドルイメージをファイルベースのカタログに追加します。
- カタログをイメージとして作成します。
- カタログイメージを公開します。
7.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
cluster-adminパーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。注記OpenShift Container Platform 4.15 では、OLM 1.0 に関する手順書が CLI ベースのものに限られています。別の方法として、管理者は、Import YAML ページや Search ページなどの通常の方法を使用して、Web コンソールで関連オブジェクトを作成および表示することもできます。ただし、既存の OperatorHub および Installed Operators ページに OLM 1.0 コンポーネントはまだ表示されません。
クラスターで有効になっている
TechPreviewNoUpgrade機能セット。警告TechPreviewNoUpgrade機能セットを有効にすると元に戻すことができなくなり、マイナーバージョンの更新ができなくなります。これらの機能セットは、実稼働クラスターでは推奨されません。-
OpenShift CLI (
oc) がワークステーションにインストールされている。 -
opmCLI がワークステーションにインストールされている。 - Docker または Podman がワークステーションにインストールされている。
- Quay などのコンテナーレジストリーへのプッシュアクセス
プロジェクトのルートにあるフラットディレクトリー内に、次の構造のような Kubernetes マニフェストがある。
ディレクトリー構造の例
manifests ├── namespace.yaml ├── service_account.yaml ├── cluster_role.yaml ├── cluster_role_binding.yaml └── deployment.yaml
7.4.2. イメージソースからプレーンバンドルイメージを構築する リンクのコピーリンクがクリップボードにコピーされました!
Operator Controller は現在、プレーンバンドルイメージ からのみ作成されたプレーンバンドルのインストールをサポートしています。
手順
プロジェクトのルートで、バンドルイメージを構築できる Dockerfile を作成します。
plainbundle.Dockerfileの例FROM scratch1 ADD manifests /manifests- 1
- イメージのサイズを小さくするには、
FROM scratchディレクティブを使用します。バンドルイメージには他のファイルやディレクトリーは必要ありません。
次の例のように、任意のビルドツールを使用して Open Container Initiative (OCI) 準拠のイメージをビルドします。
$ podman build -f plainbundle.Dockerfile -t \ quay.io/<organization_name>/<repository_name>:<image_tag> .1 - 1
- プッシュアクセス権限があるリポジトリーを参照するイメージタグを使用します。
次のコマンドを実行して、イメージをリモートレジストリーにプッシュします。
$ podman push quay.io/<organization_name>/<repository_name>:<image_tag>
7.4.3. ファイルベースのカタログの作成 リンクのコピーリンクがクリップボードにコピーされました!
ファイルベースのカタログがない場合は、次の手順を実行してカタログを初期化する必要があります。
手順
次のコマンドを実行して、カタログ用のディレクトリーを作成します。
$ mkdir <catalog_dir>前の手順と同じディレクトリーレベルで
opm generate dockerfileコマンドを実行して、カタログイメージを構築できる Dockerfile を生成します。$ opm generate dockerfile <catalog_dir> \ -i registry.redhat.io/openshift4/ose-operator-registry-rhel9:v4.151 - 1
-iフラグを使用して公式の Red Hat ベースイメージを指定します。それ以外の場合、Dockerfile はデフォルトのアップストリームイメージを使用します。
注記生成された Dockerfile は、直前の手順で作成したカタログディレクトリーと同じ親ディレクトリーに存在する必要があります。
ディレクトリー構造の例
. ├── <catalog_dir> └── <catalog_dir>.Dockerfileopm initコマンドを実行して、カタログに拡張機能のパッケージ定義を追加します。$ opm init <extension_name> \ --output json \ > <catalog_dir>/index.jsonこのコマンドは、指定されたカタログ設定ファイルに
olm.package宣言型設定 blob を生成します。
7.4.4. ファイルベースのカタログへのプレーンバンドルの追加 リンクのコピーリンクがクリップボードにコピーされました!
opm render コマンドは、カタログへのプレーンバンドルの追加をサポートしていません。次の手順に示すように、プレーンバンドルをファイルベースのカタログに手動で追加する必要があります。
手順
カタログの
index.jsonまたはindex.yamlファイルが、次の例のようになっていることを確認します。<catalog_dir>/index.jsonファイルの例{ { "schema": "olm.package", "name": "<extension_name>", "defaultChannel": "" } }olm.bundleブロブを作成するには、次の例のように、index.jsonまたはindex.yamlファイルを編集します。olm.bundleブロブを含む<catalog_dir>/index.jsonファイルの例{ "schema": "olm.bundle", "name": "<extension_name>.v<version>", "package": "<extension_name>", "image": "quay.io/<organization_name>/<repository_name>:<image_tag>", "properties": [ { "type": "olm.package", "value": { "packageName": "<extension_name>", "version": "<bundle_version>" } }, { "type": "olm.bundle.mediatype", "value": "plain+v0" } ] }olm.channelブロブを作成するには、次の例のように、index.jsonまたはindex.yamlファイルを編集します。olm.channelブロブを含む<catalog_dir>/index.jsonファイルの例{ "schema": "olm.channel", "name": "<desired_channel_name>", "package": "<extension_name>", "entries": [ { "name": "<extension_name>.v<version>" } ] }
検証
index.jsonまたはindex.yamlファイルを開き、次の例のようになっていることを確認します。<catalog_dir>/index.jsonファイルの例{ "schema": "olm.package", "name": "example-extension", "defaultChannel": "preview" } { "schema": "olm.bundle", "name": "example-extension.v0.0.1", "package": "example-extension", "image": "quay.io/example-org/example-extension-bundle:v0.0.1", "properties": [ { "type": "olm.package", "value": { "packageName": "example-extension", "version": "0.0.1" } }, { "type": "olm.bundle.mediatype", "value": "plain+v0" } ] } { "schema": "olm.channel", "name": "preview", "package": "example-extension", "entries": [ { "name": "example-extension.v0.0.1" } ] }次のコマンドを実行してカタログを検証します。
$ opm validate <catalog_dir>
7.4.5. ファイルベースのカタログの構築と公開 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、ファイルベースのカタログをイメージとしてビルドします。
$ podman build -f <catalog_dir>.Dockerfile -t \ quay.io/<organization_name>/<repository_name>:<image_tag> .次のコマンドを実行して、カタログイメージをプッシュします。
$ podman push quay.io/<organization_name>/<repository_name>:<image_tag>