Kubernetes: 验证自定义资源的YAML文件

3
假设我在我的k8s集群上有一个暴露在专有API端点上的自定义资源,例如somecompany/v1。
是否有一种方法可以验证描述此资源的.yaml清单?
这是自定义资源提供程序应该公开的功能,还是CRD本身就支持?
最初的回答:假设您的k8s集群中已安装了kubectl工具。您可以使用以下命令来验证自定义资源清单的语法:
``` kubectl apply --validate=true -f your-resource-manifest.yaml ```
如果存在任何语法错误或不允许的字段,则会显示相应的错误消息。 如果清单格式正确,则将创建或更新资源。 关于CRD的验证方法,请查看官方文档。
1个回答

3

让我们看一个简单的例子:

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作为验证模式。有关使用此字段的限制的更多信息,请参见官方文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接