4.9.2. ファイルベースのカタログ
ファイルベースのカタログ は、Operator Lifecycle Manager (OLM) の最新バージョンのカタログ形式です。この形式は、プレーンテキストベース (JSON または YAML) であり、以前の SQLite データベース形式の宣言的な設定の進化であり、完全な下位互換性があります。
OpenShift Container Platform 4.11 の時点で、デフォルトの Red Hat が提供する Operator カタログは、ファイルベースのカタログ形式でリリースされます。OpenShift Container Platform 4.6 から 4.10 までのデフォルトの Red Hat が提供する Operator カタログは、非推奨の SQLite データベース形式でリリースされました。
opm サブコマンド、フラグ、および SQLite データベース形式に関連する機能も非推奨となり、今後のリリースで削除されます。機能は引き続きサポートされており、非推奨の SQLite データベース形式を使用するカタログに使用する必要があります。
opm index prune などの SQLite データベース形式を使用する opm サブコマンドおよびフラグの多くは、ファイルベースのカタログ形式では機能しません。ファイルベースのカタログを使用する方法の詳細は、Operator Framework パッケージ形式 および oc-mirror プラグインを使用した非接続インストールのイメージのミラーリング を参照してください。
4.9.2.1. ファイルベースのカタログイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
opm CLI を使用して、非推奨の SQLite データベース形式を置き換えるプレーンテキストの ファイルベースのカタログ 形式 (JSON または YAML) を使用するカタログイメージを作成できます。
前提条件
-
opmCLI がインストールされている。 -
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.201 - 1
-iフラグを使用して公式の Red Hat ベースイメージを指定します。それ以外の場合、Dockerfile はデフォルトのアップストリームイメージを使用します。
Dockerfile は、直前の手順で作成したカタログディレクトリーと同じ親ディレクトリーに存在する必要があります。
ディレクトリー構造の例
.1 ├── <catalog_dir>2 └── <catalog_dir>.Dockerfile3 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.yaml6
opm renderコマンドを実行して、バンドルをカタログに追加します。$ opm render <registry>/<namespace>/<bundle_image_name>:<tag> \1 --output=yaml \ >> <catalog_dir>/index.yaml2 バンドルのチャネルエントリーを追加します。たとえば、次の例を仕様に合わせて変更し、
<catalog_dir>/index.yamlファイルに追加します。チャネルエントリーの例
--- schema: olm.channel package: <operator_name> name: preview entries: - name: <operator_name>.v0.1.01 - 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>