-
Notifications
You must be signed in to change notification settings - Fork 43.2k
Supporting multiple API prefixes #10009
Copy link
Copy link
Closed
Labels
area/apiIndicates an issue on api area.Indicates an issue on api area.area/extensibilitypriority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next release.Must be staffed and worked on either currently, or very soon, ideally in time for the next release.sig/api-machineryCategorizes an issue or PR as relevant to SIG API Machinery.Categorizes an issue or PR as relevant to SIG API Machinery.
Milestone
Metadata
Metadata
Assignees
Labels
area/apiIndicates an issue on api area.Indicates an issue on api area.area/extensibilitypriority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next release.Must be staffed and worked on either currently, or very soon, ideally in time for the next release.sig/api-machineryCategorizes an issue or PR as relevant to SIG API Machinery.Categorizes an issue or PR as relevant to SIG API Machinery.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Introduction
Continued from #7111 and #2306 (also relevant: #3806, #6363).
There is a strong desire for kubernetes to support multiple API prefixes. This would allow us to split to the API into a more logical structure and introduce support for an experimental API prefix. Additionally, we would like to separately version different parts of the API and provide sensible scoping rules for API objects.
OpenShift serves its own objects separately from kubernetes objects using the /osapi endpoint. However, it registers its objects under the kubernetes api.Scheme (instead of a separate runtime.Scheme) and is forced to follow the kubernetes version numbers. Moreover, OpenShift's "kinds" must be unique to avoid clashing with those in kubernetes. We would like a more general approach to avoid these limitations.
Proposed Hierarchy
To achieve this, the api could have the following hierarchy: provider/apigroup/version/kind with the following properties:
In the existing API server, a runtime.Scheme somewhat approximates a provider/apigroup, while an apiserver.APIGroupVersion corresponds to a version.
Challenges