假设我在k8s
集群上有一个自定义资源,该资源公开在专有api端点上,例如somecompany/v1
是否有一种方法可以验证描述该资源的.yaml
清单?
自定义资源提供程序应提供的功能还是k8s
本身支持CRD的功能?
答案 0 :(得分:1)
让我们看一个简单的例子:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: myresources.stable.example.com
spec:
group: stable.example.com
versions:
- name: v1
served: true
storage: true
scope: Namespaced
names:
plural: myresources
singular: myresource
kind: MyResource
shortNames:
- mr
validation:
openAPIV3Schema:
required: ["spec"]
properties:
spec:
required: ["cert","key","domain"]
properties:
cert:
type: "string"
minimum: 1
key:
type: "string"
minimum: 1
domain:
type: "string"
minimum: 1
spec.validation
字段描述了自定义资源的自定义验证方法。如果某些字段保留为空,则可以使用验证来阻止资源的创建。在此示例中,使用OpenAPIV3Schema
验证约定来检查自定义资源中某些字段的类型。我们确保自定义资源的spec
,spec.cert
,spec.key
和spec.domain
字段确实存在,并且它们是字符串类型。用户还可以使用validatingadmissionwebhook作为验证架构。您可以在official documentation中找到有关使用此字段的限制的更多信息。