2.2. Operator Framework パッケージ形式


Operator Framework パッケージング形式を使用すると、OpenShift Container Platform の Operator Lifecycle Manager (OLM) 向けに Operator メタデータをバンドルして公開できます。この形式は、バンドルイメージ、依存関係、およびファイルベースのカタログスキーマを対象としています。

2.2.1. Bundle Format

バンドル形式は、Operator Framework パッケージング形式であり、Operator メタデータをカタログに配布する作業を簡素化します。Operator バンドルとは、Kubernetes マニフェストとメタデータを格納する、実行不可能なコンテナーイメージとして提供される単一の Operator バージョンのことです。

バンドルイメージの保存および配布は、podman、docker、および Quay などのコンテナーレジストリーを使用して管理されます。

Operator メタデータには以下を含めることができます。

  • Operator を識別する情報 (名前およびバージョンなど)。
  • UI を駆動する追加情報 (アイコンや一部のカスタムリソース (CR) など)。
  • 必須および提供される API。
  • 関連するイメージ。

マニフェストを Operator Registry データベースに読み込む際に、以下の要件が検証されます。

  • バンドルには、アノテーションで定義された 1 つ以上のチャネルが含まれる必要がある。
  • すべてのバンドルには、1 つのクラスターサービスバージョン (CSV) がある。
  • CSV がクラスターリソース定義 (CRD) を所有する場合、その CRD はバンドルに存在する必要がある。

2.2.1.1. マニフェスト

バンドルマニフェストは、Operator バンドル内の Kubernetes オブジェクトであり、Operator のデプロイメントとロールベースアクセス制御 (RBAC) モデルを定義します。

バンドルには、1 つのクラスターサービスバージョン (CSV) と、通常はその CSV が所有する API のカスタムリソース定義 (CRD) が、その CSV の /manifests ディレクトリーに含まれています。

Bundle Format のレイアウトの例

etcd
├── manifests
│   ├── etcdcluster.crd.yaml
│   └── etcdoperator.clusterserviceversion.yaml
│   └── secret.yaml
│   └── configmap.yaml
└── metadata
    └── annotations.yaml
    └── dependencies.yaml

2.2.1.1.1. 追加のサポート対象 Kubernetes オブジェクト

Operator バンドルでは、任意で /manifests ディレクトリーに追加の Kubernetes オブジェクトタイプを含めることができます。これは、クラスターサービスバージョン (CSV) とともにデプロイ可能です。含まれる場合、Operator Lifecycle Manager (OLM) は、CSV と並行して、これらのオブジェクトのライフサイクルを作成および管理します。

以下のオプションオブジェクトタイプがサポートされています。

  • ClusterRole
  • ClusterRoleBinding
  • ConfigMap
  • ConsoleCLIDownload
  • ConsoleLink
  • ConsoleQuickStart
  • ConsoleYamlSample
  • PodDisruptionBudget
  • PriorityClass
  • PrometheusRule
  • Role
  • RoleBinding
  • Secret
  • Service
  • ServiceAccount
  • ServiceMonitor
  • VerticalPodAutoscaler

OLM は、これらのオプションオブジェクトのライフサイクルを次のように管理します。

  • CSV が削除されると、OLM はオプションオブジェクトを削除します。
  • CSV がアップグレードされると、以下を実行します。

    • オプションオブジェクトの名前が同じである場合、OLM はこれを更新します。
    • オプションオブジェクトの名前がバージョン間で変更された場合、OLM はこれを削除し、再作成します。

2.2.1.2. Annotations

metadata/annotations.yaml ファイル内の Operator バンドルアノテーションは、バンドルのインデックス化方法を記述する集約メタデータを定義します。これらのアノテーションは、メディアタイプ、マニフェストパス、パッケージ名、チャネル、およびカタログ登録のデフォルトチャネルを指定します。

バンドルには、/metadata ディレクトリーに annotations.yaml ファイルが含まれています。

annotations.yaml の例

annotations:
  operators.operatorframework.io.bundle.mediatype.v1: "registry+v1"
  operators.operatorframework.io.bundle.manifests.v1: "manifests/"
  operators.operatorframework.io.bundle.metadata.v1: "metadata/"
  operators.operatorframework.io.bundle.package.v1: "test-operator"
  operators.operatorframework.io.bundle.channels.v1: "beta,stable"
  operators.operatorframework.io.bundle.channel.default.v1: "stable"

各項目の説明:

annotations.operators.operatorframework.io.bundle.mediatype.v1
Operator バンドルのメディアタイプまたは形式を指定します。registry+v1 形式の場合、これに CSV および関連付けられた Kubernetes オブジェクトが含まれることを意味します。
annotations.operators.operatorframework.io.bundle.manifests.v1
Operator マニフェストが含まれるディレクトリーへのイメージのパスを指定します。このラベルは今後使用するために予約され、現時点ではデフォの manifests/ に設定されています。manifests.v1 の値は、バンドルに Operator マニフェストが含まれることを示します。
annotations.operators.operatorframework.io.bundle.metadata.v1
バンドルに関するメタデータファイルが含まれるディレクトリーへのイメージのパスを指定します。このラベルは今後使用するために予約され、現時点ではデフォの metadata/ に設定されています。metadata.v1 の値は、このバンドルに Operator メタデータがあることを意味します。
annotations.operators.operatorframework.io.bundle.package.v1
バンドルのパッケージ名を指定します。
annotations.operators.operatorframework.io.bundle.channels.v1
Operator Registry に追加される際にバンドルがサブスクライブするチャネルのリストを指定します。
annotations.operators.operatorframework.io.bundle.channel.default.v1
レジストリーからインストールされる場合に Operator がサブスクライブされるデフォルトチャネルを指定します。
注記

一致しない場合、annotations.yaml ファイルは、これらのアノテーションに依存するクラスター上の Operator Registry のみがこのファイルにアクセスできるために権威を持つファイルになります。

2.2.1.3. 依存関係

Operator 依存関係は、OpenShift Container Platform へのインストール中に Operator Lifecycle Manager (OLM) が解決しなければならない Operator 間の関係を定義します。これらの依存関係は、バンドルの metadata/ フォルダーにある任意の dependencies.yaml ファイルに記述できます。

依存関係の一覧には、依存関係の内容を指定するために各項目の type フィールドが含まれます。次のタイプの Operator 依存関係がサポートされています。

olm.package
このタイプは、特定の Operator バージョンの依存関係であることを意味します。依存関係情報には、パッケージ名とパッケージのバージョンを semver 形式で含める必要があります。たとえば、0.5.2 などの特定バージョンや >0.5.1 などのバージョンの範囲を指定することができます。
olm.gvk
このタイプの場合、作成者は CSV の既存の CRD および API ベースの使用方法と同様に group/version/kind (GVK) 情報で依存関係を指定できます。これは、Operator の作成者がすべての依存関係、API または明示的なバージョンを同じ場所に配置できるようにするパスです。
olm.constraint
このタイプは、任意の Operator プロパティーに対するジェネリック制約を宣言します。

以下の例では、依存関係は Prometheus Operator および etcd CRD に指定されます。

dependencies.yaml ファイルの例

dependencies:
  - type: olm.package
    value:
      packageName: prometheus
      version: ">0.27.0"
  - type: olm.gvk
    value:
      group: etcd.database.coreos.com
      kind: EtcdCluster
      version: v1beta2

2.2.1.4. opm CLI について

opm CLI は、OpenShift Container Platform のバンドルイメージから Operator カタログを作成および維持するための Operator Framework ツールです。これを使用すると、Operator Lifecycle Manager (OLM) がカタログソースを通じて参照するカタログコンテナーイメージをビルドできます。

カタログには、コンテナーイメージの実行時に提供される組み込まれた API を使用してクエリーできる、Operator マニフェストコンテンツへのポインターのデータベースが含まれます。OpenShift Container Platform では、Operator Lifecycle Manager (OLM) は、CatalogSource オブジェクトが定義したカタログソース内のイメージ参照できます。これにより、クラスター上にインストールされた Operator への頻度の高い更新を可能にするためにイメージを一定の間隔でポーリングできます。

  • opm CLI のインストール手順は、CLI ツール を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る