-
Notifications
You must be signed in to change notification settings - Fork 533
Summary of out-of-tree problems #629
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
Comments
This was discussed a while ago in one of the community meetings but I only got to this action item today. |
Thanks for creating this! I think another key one is the lack of built-in CRD validation for many of our use cases which has required us to create and maintain a validating webhook. |
We need to feed a lot of these requirements to api machinery and CRD. Maybe we should create x-ref issues on their repo(s)? |
I think that all of the things we've mentioned here are definitely problems for other CRD authors, so being able to get some solutions to them would be really helpful for everyone. Thanks for making sure this stuff gets tracked @hbagdi! |
That's the plan but I was thinking of getting a fair representation of the problems we have in this project before doing that. |
I've created a doc to track these issues and ran it by @thockin, @lavalamp, @apelisse and some others. Here are some highlights of those conversations (feel free to correct me if I got anything wrong):
Still need to loop in more people, but wanted to provide an update on what I've found so far. If you've run into any other frustrating points with CRDs, feel free to add them here or in the linked doc. I'll try to circulate this to other sigs soon to see what's possible. |
Is it correct to read this as "vendors will need to duplicate their entire gateway-api codebase or only use the oldest api version they care about"? I don't know of any other way, but would be very happy to. This was a big pain point for Ingress, and other deprecation, for us. |
CRDs can keep a limited number of different versions of the schema if they are mutually convertible. Typically, the point of doing alpha(s) is to relieve one's self of that burden, because it's not easy to work under that constraint. If you want to install multiple non-convertible alpha versions at the same time, you could do so by putting them under different groups, although that'd be a little weird. Instead, I'd recommend
|
Even if they are convertible, doesn't the same issue persist? Say we have v1alpha1 and v1alpha2. I am a controller that is up to date, so I want to support v1alpha2 (to get some new fields, etc), but I also need to support clusters with only v1alpha1 for backwards compatibility.
|
If they are convertible, then it is safe to install the variation of the CRD with both versions in all clusters. |
cc @jpbetz
I'm a big +1 on 5. that we should use this as a motivation to improve CRDs rather than fall-back on in-tree. Sorry if you're paying part of the price :-(. In the medium/long term, we're thinking about possible ways to address 1, 2, 3, and 4. So hopefully it will be much easier for the next projects or so that go through the same journey you did. |
This is great if the controller is also in charge of the CRDs. As a concrete example of where this won't work, GKE will automatically provision these CRDs. There will always be some delay before GKE shipping the new CRD; in that time, it is impossible to install the new version into the cluster. That is just one example, I am sure there are other cases where we may not be able to, such as when the user running the controller doesn't have admin privs, etc. |
You should need admin privileges to run a gateway implementation, so someone who can do that can also update / install the CRD. I agree that if the platform providing the cluster has an opinion about the version of the CRD that is installed, you basically have to wait for them to upgrade, or risk fights with whatever controller maintains the CRD version. Platforms should therefore think very carefully before shipping a CRD like this. |
/remove-kind design |
Given that all sub-issues and PRs listed are now resolved, it would seem we can consider this one resolved as well. If anyone has reason that this needs to be re-opened, no big deal please just say so and we'll be happy to reconsider and re-open as necessary. |
This is an umbrella issue to track several problems that this project is running into because of it being out-of-tree.
kubectl
output Add more columns to CRDs #588 Adding new AdmittedGateways field to Routes to improve kubectl output #587 Add GATEWAYS field to kubectl get httproute output #586The text was updated successfully, but these errors were encountered: