1.3.2. Bundle Format

Operator の Bundle Format は、Operator Framework によって導入される新しいパッケージ形式です。スケーラビリティーを向上させ、アップストリームユーザーがより効果的に独自のカタログをホストできるようにするために、Bundle Format 仕様は Operator メタデータのディストリビューションを単純化します。

Operator バンドルは、Operator の単一バージョンを表します。ディスク上の バンドルマニフェスト は、Kubernetes マニフェストおよび Operator メタデータを保存する実行不可能なコンテナーイメージである バンドルイメージ としてコンテナー化され、提供されます。次に、バンドルイメージの保存および配布は、podmandocker、および Quay などのコンテナーレジストリーを使用して管理されます。

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

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

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

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

1.3.2.1. マニフェスト

バンドルマニフェストは、Operator のデプロイメントおよび RBAC モデルを定義する Kubernetes マニフェストのセットを指します。

バンドルにはディレクトリーごとに 1 つの CSV が含まれ、通常は manifest/ ディレクトリーの CSV の所有される API を定義する CRD が含まれます。

Bundle Format のレイアウトの例

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

オプションのオブジェクト

以下のオブジェクトタイプは、バンドルの /manifests ディレクトリーにオプションとして追加することもできます。

サポート対象のオプションオブジェクト

  • Secrets
  • ConfigMaps

これらのオプションオブジェクトがバンドルに含まれる場合、Operator Lifecycle Manager (OLM) はバンドルからこれらを作成し、CSV と共にそれらのライフサイクルを管理できます。

オプションオブジェクトのライフサイクル

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

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