Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

20.2. 创建自定义资源定义

要创建自定义对象,您必须首先创建一个自定义资源定义(CRD)。

注意

只有集群管理员才能创建 CRD。

流程

要创建 CRD:

  1. 创建一个包含以下示例字段的 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> 格式,并使用来自 groupplural 字段的值。
    3
    为 API 指定组名。API 组是一个逻辑上相关的对象集。例如,JobScheduledJob 等所有批处理对象,均可添加至批处理 API 组 (如 batch.api.example.com) 中。最好使用组织的完全限定域名。
    4
    指定 URL 中要用的版本名称。每个 API 组均可能存在于多个版本中。例如:v1alphav1betav1
    5
    指定自定义对象可用于某一个项目 (Namespaced) 还是集群中的所有项目 (Cluster)。
    6
    指定 URL 中要用的复数名称。plural 字段与 API URL 网址中的资源相同。
    7
    指定将在 CLI 上用作别名并用于显示的单数名称。
    8
    指定可创建的对象类型。类型可以采用 CamelCase。
    9
    指定与 CLI 中的资源相匹配的较短字符串。
    注意

    默认情况下,自定义资源定义是全集群范围的,适用于所有项目。

  2. 创建对象:

    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 字段。