Kubernetes-Extend the Kubernetes API with CustomResourceDefinitions

原文:Extend the Kubernetes API with CustomResourceDefinitions

结构化范式

  • 特性状态:Kubernetes v1.15 beta
  • 传统Custom Resources可存储任意JSON(除了会被API server隐式校验的apiVersion,kind,metadata字段)。使用OpenAPI v3.0 validation,我们可以使用指定一种范式,在创建和更新时会被进行validate,详述如下。
    使用apiextensions.k8s.io/v1,在CRD中,结构化范式的定义将会是强制性的,但是在v1beta1版本中,他还是可选的。
  • 在OpenAPI v3.0 validation schema中,一个结构化范式有如下特点:
    1. 在根目录下、在每一个对象node(via properties or additionalProperties in OpenAPI)的field下和每一个数组node(via items in OpenAPI)下,指明一个非空的type类型(通过在openAPI中的type字段),除了以下两种场景
    • 带有x-kubernetes-int-or-string: true的node
    • 带有x-kubernetes-preserve-unknown-fields: true的node
  1. 为被allof, anyoff, oneof或者not修饰的对象下的每一个field和被allof, anyoff, oneof或者not修饰的数组中的每一个item,在allof, anyoff, oneof或者not外部,范式也需要再指明一次这些item和field
  2. 禁止在allof, anyof,oneof或者not中设置description, type, default, additionProperties, nullable,例外情况:和x-kubernetes-int-or-string: true相关的两种模式可以除外。
  3. 如果metadata被指定了,那么metadata下的约束只能有name和generationName两个字段

// To be continued...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。