-
Notifications
You must be signed in to change notification settings - Fork 40.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Requirements for ThirdPartyResource to graduate to beta #22768
Comments
the namespace is not considered when registering API endpoints (in master.go#InstallThirdPartyResource), and the existence of a ThirdPartyResource affects all namespaces, not just the one where it is added. |
also need to add validation:
edit: opened #25007 |
I don't think we should graduate ThirdPartyResource to beta until we have a story for
|
After discussing with @bgrant0607 and @brendandburns I withdraw my list above. The argument is all of the above things can be done by some combination of a client (that is distributed with the TPR's controller, or even part of the same binary like hyperkube), logic in the controller, and runtime-extensible admission control (which is on our TODO list). And that federated testing isn't strictly necessary because the TPR's controller should be using regular Kubernetes APIs that are subject to the normal stability and deprecation guarantees (which isn't to say that TPR's shouldn't be continuously tested, just that there's a reasonable argument that we don't have to completely "solve" federated testing for TPR's to be useful). |
Automatic merge from submit-queue validate third party resources addresses validation portion of #22768 * ThirdPartyResource: validates name (3 segment DNS subdomain) and version names (single segment DNS label) * ThirdPartyResourceData: validates objectmeta (name is validated as a DNS label) * removes ability to use GenerateName with thirdpartyresources (kind and api group should not be randomized, in my opinion) test improvements: * updates resttest to clean up after create tests (so the same valid object can be used) * updates resttest to take a name generator (in case "foo1" isn't a valid name for the object under test) action required for alpha thirdpartyresource users: * existing thirdpartyresource objects that do not match these validation rules will need to be removed/updated (after removing thirdpartyresourcedata objects stored under the disallowed versions, kind, or group names) * existing thirdpartyresourcedata objects that do not match the name validation rule will not be able to be updated, but can be removed
I think this should be resolved:
This is also a bug, though I'm not sure how important it is if the API can't actually do anything with multiple versions of a third party resource data:
|
Are there any ideas yet on how the migration path would look like if TPRs hit beta state? This is fairly important for anyone releasing controllers on top of v1alpha1. |
Given the shortcomings of the API as a whole, the potential for auto-created naming conflicts which are impossible to resolve and inconsistencies between metadata for storage versus metadata from the API, I'm not sure that backwards compatibility will be maintainable when we try to fix it. The TPR resource itself is missing data and then the thirdpartydata storage allows inconsistencies which are hard to deal with. It may end up being breaking all the way down the chain. |
Sub-resources for Third Party Resources: #38113 |
metadata.generation: #7328 |
superceded by CRD, beta in 1.7, tracked in kubernetes/enhancements#95 |
Tracking issue for #18835.
The text was updated successfully, but these errors were encountered: