API 扩展

    • CustomResourceDefinition 则可以在集群中新增资源对象,并可以与已有资源对象(如 Pod、Deployment 等)相同的方式来管理它们。
    Feature Description CRDs Aggregated API
    Validation Help users prevent errors and allow you to evolve your API independently of your clients. These features are most useful when there are many clients who can’t all update at the same time. Yes. Most validation can be specified in the CRD using OpenAPI v3.0 validation. Any other validations supported by addition of a Validating Webhook. Yes, arbitrary validation checks
    Defaulting See above Yes, via a Mutating Webhook; Planned, via CRD OpenAPI schema. Yes
    Multi-versioning Allows serving the same object through two API versions. Can help ease API changes like renaming fields. Less important if you control your client versions. No, but planned Yes
    Custom Storage If you need storage with a different performance mode (for example, time-series database instead of key-value store) or isolation for security (for example, encryption secrets or different No Yes
    Custom Business Logic Perform arbitrary checks or actions when creating, reading, updating or deleting an object Yes, using Webhooks. Yes
    Scale Subresource Allows systems like HorizontalPodAutoscaler and PodDisruptionBudget interact with your new resource Yes
    Status Subresource Finer-grained access control: user writes spec section, controller writes status section.Allows incrementing object Generation on custom resource data mutation (requires separate spec and status sections in the resource) Yes Yes
    Other Subresources Add operations other than CRUD, such as “logs” or “exec”. No Yes
    strategic-merge-patch The new endpoints support PATCH with . Useful for updating objects that may be modified both locally, and by the server. For more information, see No, but similar functionality planned Yes
    Protocol Buffers The new resource supports clients that want to use Protocol Buffers No Yes
    OpenAPI Schema Is there an OpenAPI (swagger) schema for the types that can be dynamically fetched from the server? Is the user protected from misspelling field names by ensuring only allowed fields are set? Are types enforced (in other words, don’t put an in a field?) No, but planned Yes