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.14 の場合、OLM 1.0 の文書化された手順は CLI ベースのみになります。別の方法として、管理者は、Import YAML ページや Search ページなどの通常の方法を使用して、Web コンソールで関連オブジェクトを作成および表示することもできます。ただし、既存の OperatorHub および Installed Operators ページに OLM 1.0 コンポーネントはまだ表示されません。
クラスターで有効になっている
TechPreviewNoUpgrade
機能セット。警告TechPreviewNoUpgrade
機能セットを有効にすると元に戻すことができなくなり、マイナーバージョンの更新ができなくなります。これらの機能セットは、実稼働クラスターでは推奨されません。-
OpenShift CLI (
oc
) がワークステーションにインストールされている。 -
opm
CLI がワークステーションにインストールされている。 - 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 scratch 1 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:v4.14 1
- 1
-i
フラグを使用して公式の Red Hat ベースイメージを指定します。それ以外の場合、Dockerfile はデフォルトのアップストリームイメージを使用します。
注記生成された Dockerfile は、直前の手順で作成したカタログディレクトリーと同じ親ディレクトリーに存在する必要があります。
ディレクトリー構造の例
. ├── <catalog_dir> └── <catalog_dir>.Dockerfile
opm 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>