2.2. Operator Framework パッケージ形式


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

2.2.1. Bundle Format

Bundle Format は、Operator メタデータのカタログへの配布を簡素化する Operator Framework パッケージ形式です。Operator バンドルは、Kubernetes マニフェストおよびメタデータを保存する実行不可能なコンテナーイメージとして提供される単一の Operator バージョンです。

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

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

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

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

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

2.2.1.1. マニフェスト

バンドルマニフェストは、Operator のデプロイメントおよびロールベースのアクセス制御(RBAC)モデルを定義する Operator バンドルの Kubernetes オブジェクトです。バンドルには 1 つのクラスターサービスバージョン(CSV)が含まれ、通常はその CSV が /manifests ディレクトリーにある API のカスタムリソース定義(CRD)が含まれます。

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 バンドルはオプションとして、クラスターサービスバージョン(CSV)でデプロイできるように追加の Kubernetes オブジェクトタイプを /manifests ディレクトリーに追加できます。含まれると、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. アノテーション

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 レジストリーに追加される際にバンドルがサブスクライブするチャネルのリストを指定します。
annotations.operators.operatorframework.io.bundle.channel.default.v1
レジストリーからインストールする際に Operator がサブスクライブする必要のあるデフォルトチャネルを指定します。
注記

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

2.2.1.3. Dependencies

Operator 依存関係は、Operator Lifecycle Manager (OLM)が OpenShift Container Platform でのインストール時に解決する必要のある 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
トップに戻る