CRD典型格式
以v1版本为例:
apiVersion: apiextensions.k8s.io/v1
# 创建 CRD
kind: CustomResourceDefinition
metadata:
# 名称必须采用复数 <plural-name>.<group>.<domain> 格式
name: memcacheds.osc.huawei.com
spec:
group: osc.huawei.com
names:
# 可创建的对象类型
kind: Memcached
listKind: MemcachedList
# 复数名称
plural: memcacheds
# CLI 别名, 显示的单数名称
singular: memcached
# CLI 中使用的简称
shortNames:
- mc
# 可用范围: Namespaced or Cluster
scope: Namespaced
version: v1
# 可定义多个版本
versions:
- name: v1alpha1
served: false # 需要卸载该版本时,先标记为 non-serving
storage: false # 再将 storage 设置到可用的版本
- name: v1
served: true
storage: true
# 基于 openAPIV3Schema 的校验规则
validation:
openAPIV3Schema:
description: Memcached is the Schema for the Memcacheds API
properties:
# ...
type: object
在Kubernetes中创建CRD时,将自动创建其对应的Kubernetes API,为RESTful endpoint形式,在namespace或cluster范围内可以访问其进行CRUD操作。
其格式如下:
/apis/<spec:group>/<spec:version>/<scope>/*/<names-plural>/...
示例:
/apis/osc.huawei.com/v1/namespaces/*/memcacheds/...
*代表所有namespace,可以使用指定namespace名称查询特定namespace下的CR。