Kubernetes-Extend the Kubernetes
2019-06-29 本文已影响5人
小刘要学习
原文: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中,一个结构化范式有如下特点:
- 在根目录下、在每一个对象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
- 为被allof, anyoff, oneof或者not修饰的对象下的每一个field和被allof, anyoff, oneof或者not修饰的数组中的每一个item,在allof, anyoff, oneof或者not外部,范式也需要再指明一次这些item和field
- 禁止在allof, anyof,oneof或者not中设置description, type, default, additionProperties, nullable,例外情况:和x-kubernetes-int-or-string: true相关的两种模式可以除外。
- 如果metadata被指定了,那么metadata下的约束只能有name和generationName两个字段
// To be continued...