-
Notifications
You must be signed in to change notification settings - Fork 490
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
Update HTTPRoute and other status definitions and documentation #1077
Comments
/assign |
Candidates for tasks so far:
|
Need to fold feedback from #935 in here as well. |
There's also feedback in #1080 (comment) (sorry @nathancoleman for diverting your PR). I'd also like to specify some update semantics of the Gateway API -- in particular, it would be nice if Gateway API consumers could update from one "working" (not serving 500s) configuration to another without serving 500s in between. IIRC, at least some Envoy-based implementations may update the |
We discussed this in our community meeting today and agreed that:
I agree that in principle the updating from one working config to another is very desirable. I think that ensuring that the ordering happens in the correct order is not straightforward, but we should be working towards it. I'm reluctant to mandate a behavior like this without a pretty clear conformance test to check it, which seems like it will be tricky to write. |
+1 on not mandating any behavior that doesn't have a conformance test. What we've done in Knative is to set up a "load test" (e.g. 20 rps GET requests to the destination) while updating the routes, and checking that all returned results are 200 and not 500. Obviously, there are many different permutations here (replace existing route, add new more-specific route, update certain routing parameters, update the actual Service definition), but it seems like it should be possible to enumerate some of the known-tricky cases and test those. |
I think #1110, #1111, and #1112 by @mikemorris significantly overlap with this issue. Not sure if there's room for consolidation, just wanted to make sure these were all linked together. |
Agreed, I think that @mikemorris' issues handle a large portion of the things I was thinking about when I raised this. Interested to hear what everyone thinks about the idea of a generic |
I'm skeptical that a generic |
@evankanderson I agree that it would be nearly impossible for an implementation to recognize configuration they are not aware of and populate a "Unsupported" or "NotImplemented" condition based on that. I do think there's still value in having a condition like that though. This API includes many "extended" features that will not be implementable by everyone. That means it would be very useful for implementations to be able to communicate that there is configuration they are aware of in a Gateway or Route but have not implemented. |
One specific request for HTTPRoute status additions: Listeners have a possible condition of "Ready: false" with reason "Invalid" to generically cover syntactically/semantically incorrect Listeners. It would be nice to have something similar for routes (could be "Accepted: false" with reason "Invalid"). The specific case I ran into recently for this is if syntactically invalid hostnames make it to the controller (theoretically this should be prevented by kubebuilder/webhook validation, but we can't rely on that) -- there are no obviously appropriate condition types/reasons to use for something like this. I can imagine other situations related to invalid matches/filters/etc. that I would want to use this for as well. |
I extracted the case for a "Ready" Route condition into a new issue, as requested in a recent meeting: |
Moving this out of the v0.5.0 milestone, since we've hit the parts of this issue required for that release. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
Doing this as part of #1364. /assign |
Re-read this and it feels like #1364 covers all the points in this sufficiently that this could likely be closed as a separate issue now. |
I agree that this one is covered by the other issues, with followup work covered under #1364. Closing. /close |
@youngnick: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
What would you like to be added:
In implementing HTTPRoute and Gateway, implementors have found things that we've missed or that are not clear in the definitions of how status should be updated.
There are some condition types that need to be added, some edge cases that need to be addressed, and so on.
This issue covers doing a pass over this area before we finalize v1beta1.
This top-level comment will be updated with a checklist of tasks as we find them.
Why this is needed:
Having a clear explanation of the status flow is vital to making sure the user experience for Gateway API is preserved.
The text was updated successfully, but these errors were encountered: