20.2. 创建自定义资源定义
要创建自定义对象,您必须首先创建一个自定义资源定义(CRD)。
注意
只有集群管理员才能创建 CRD。
流程
要创建 CRD:
创建一个包含以下示例字段的 YAML 文件:
自定义资源定义的 YAML 文件示例
apiVersion: apiextensions.k8s.io/v1beta1 1 kind: CustomResourceDefinition metadata: name: crontabs.stable.example.com 2 spec: group: stable.example.com 3 version: v1 4 scope: Namespaced 5 names: plural: crontabs 6 singular: crontab 7 kind: CronTab 8 shortNames: - ct 9
- 1
- 使用
apiextensions.k8s.io/v1beta1
API。 - 2
- 为定义指定名称。这必须采用 <plural-name><group> 格式,并使用来自
group
和plural
字段的值。 - 3
- 为 API 指定组名。API 组是一个逻辑上相关的对象集。例如,
Job
或ScheduledJob
等所有批处理对象,均可添加至批处理 API 组 (如 batch.api.example.com) 中。最好使用组织的完全限定域名。 - 4
- 指定 URL 中要用的版本名称。每个 API 组均可能存在于多个版本中。例如:
v1alpha
、v1beta
、v1
。 - 5
- 指定自定义对象可用于某一个项目 (
Namespaced
) 还是集群中的所有项目 (Cluster
)。 - 6
- 指定 URL 中要用的复数名称。
plural
字段与 API URL 网址中的资源相同。 - 7
- 指定将在 CLI 上用作别名并用于显示的单数名称。
- 8
- 指定可创建的对象类型。类型可以采用 CamelCase。
- 9
- 指定与 CLI 中的资源相匹配的较短字符串。
注意默认情况下,自定义资源定义是全集群范围的,适用于所有项目。
创建对象:
oc create -f <file-name>.yaml
在以下位置新建一个 RESTful API 端点:
/apis/<spec:group>/<spec:version>/<scope>/*/<names-plural>/...
例如,以下端点便是通过示例文件创建的:
/apis/stable.example.com/v1/namespaces/*/crontabs/...
您可以使用此端点 URL 来创建和管理自定义对象。对象类型基于您创建的自定义资源定义对象的
spec.kind
字段。