CRD 定制化资源声明
CRD和CR解释
CRD(Custom Resource Definition) 本身是一种 Kubernetes 内置的资源类型,顾名思义定制化资源声明,将声明的内容注册到Kubernetes,官方提供一个扩展方式,适配Restful的风格去调用API(apiextensions.k8s.io/v1)进行定制化资源声明,本身是无名字空间的,可在所有名字空间中访问。
CR(Custom Resource)定制化资源,除了kubernetes自带内置的资源,不同场景和业务需要进行扩展,根据CRD声明去创建kubernetes除内置之外的资源,也可称为CRD的实例,这些实例遵循CRD中定义的schema。
总结:CRD无命名空间的限制,CR对CRD有着依赖关系,需要根据CRD的声明对号入座。独立于内建的资源类型之外,如 Pod、Service、Deployment 等,通过定义 CRD,用户可以将自己的应用程序或服务的业务逻辑抽象为 Kubernetes 中的一种资源类型,从而更方便、更一致地进行管理和编排。
CRD用例
如下为官方用例和相关参数解释:官方地址
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
# 名字必需与下面的 spec 字段匹配,并且格式为 '<名称的复数形式>.<组名>'
name: crontabs.stable.example.com
spec:
# 组名称,用于 REST API:/apis/<组>/<版本>
group: stable.example.com
# 列举此 CustomResourceDefinition 所支持的版本
versions:
- name: v1
# 每个版本都可以通过 served 标志来独立启用或禁止
served: true
# 其中一个且只有一个版本必需被标记为存储版本
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
cronSpec:
type: string
image:
type: string
replicas:
type: integer
# 可以是 Namespaced 或 Cluster
scope: Namespaced
names: