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。