2.3.2. Package Manifest Format

Operator 的 Package Manifest Format 是 Operator Framework 中原先引入的旧版打包格式。虽然 OpenShift Container Platform 4.5 中已弃用此格式,但它仍受支持,红帽提供的 Operator 目前仍使用此方法提供。

在这个格式中,Operator 的版本由单个集群服务版本(CSV)代表,自定义资源定义(CRD)用来定义 CSV 所拥有的 API,另外也可能包含其他对象。

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

它还包含一个 <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 Registry 数据库中时,会验证以下要求:

  • 每个软件包至少有一个频道。
  • 软件包中频道指向的每个 CSV 都存在。
  • Operator 的每个版本都只有一个 CSV。
  • 如果 CSV 拥有 CRD,则该 CRD 必须存在于 Operator 版本的目录中。
  • 如果 CSV 替换了另一个 CSV,则软件包中必须同时存在旧的和新的 CSV。