kubernetes:针对自定义资源验证Yaml文件

时间:2019-09-02 07:44:47

标签: kubernetes kubernetes-apiserver kubernetes-custom-resources

假设我在k8s集群上有一个自定义资源,该资源公开在专有api端点上,例如somecompany/v1

是否有一种方法可以验证描述该资源的.yaml清单?

自定义资源提供程序应提供的功能还是k8s本身支持CRD的功能?

1 个答案:

答案 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验证约定来检查自定义资源中某些字段的类型。我们确保自定义资源的specspec.certspec.keyspec.domain字段确实存在,并且它们是字符串类型。用户还可以使用validatingadmissionwebhook作为验证架构。您可以在official documentation中找到有关使用此字段的限制的更多信息。