2.3.2. Package Manifest Format

Operator の Package Manifest Format は、Operator Framework で導入されたレガシーパッケージ形式です。この形式は OpenShift Container Platform 4.5 で非推奨となっていますが、これは引き続きサポートされ、現在 Red Hat が提供する Operator はこの方法を使用して提供されています。

この形式では、Operator のバージョンは単一のクラスターサービスバージョン (CSV) で表され、通常は追加のオブジェクトが含まれる可能性はありますが CSV の所有される API を定義するカスタムリソース定義 (CRD) で表されます。

Operator のすべてのバージョンは単一ディレクトリーにネストされます。

Package Manifest Format のレイアウトの例

etcd
├── 0.6.1
│   ├── etcdcluster.crd.yaml
│   └── etcdoperator.clusterserviceversion.yaml
├── 0.9.0
│   ├── etcdbackup.crd.yaml
│   ├── etcdcluster.crd.yaml
│   ├── etcdoperator.v0.9.0.clusterserviceversion.yaml
│   └── etcdrestore.crd.yaml
├── 0.9.2
│   ├── etcdbackup.crd.yaml
│   ├── etcdcluster.crd.yaml
│   ├── etcdoperator.v0.9.2.clusterserviceversion.yaml
│   └── etcdrestore.crd.yaml
└── etcd.package.yaml

また、パッケージ名およびチャネルの詳細を定義する package manifest である <name>.package.yaml ファイルも含まれます。

パッケージマニフェストの例

packageName: etcd
channels:
- name: alpha
  currentCSV: etcdoperator.v0.9.2
- name: beta
  currentCSV: etcdoperator.v0.9.0
- name: stable
  currentCSV: etcdoperator.v0.9.2
defaultChannel: alpha

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

  • すべてのパッケージには最低でも 1 つのチャネルがある。
  • パッケージのチャネルによって参照されるすべての CSV が存在する。
  • Operator のすべてのバージョンに 1 つの CSV がある。
  • CSV が CRD を所有する場合、その CRD は Operator バージョンのディレクトリーに存在する必要がある。
  • CSV が別の CSV を置き換える場合、新旧両方の CSV がパッケージに存在する必要がある。