-
Notifications
You must be signed in to change notification settings - Fork 689
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
HTTPProxy include
validation recently became too tight
#5014
Comments
Hey @ecordell! Thanks for opening your first issue. We appreciate your contribution and welcome you to our community! We are glad to have you here and to have your input on Contour. You can also join us on our mailing list and in our channel in the Kubernetes Slack Workspace |
hm, I would argue the previous behavior was not intended and the logic for checking duplicate includes was incorrect so that HTTPProxy should never have been valid but given this has been around for a long time, people may be relying on it, and we don't want to suddenly break users with currently working config, we can think about how we might rework this change |
Would it make more sense to validate the "merged" conditions for each route, rather than the conditions on the includes? i.e. in this case it would verify: |
that may work, was looking at detecting the duplicate includes/routes on only the leaf Routes, however @skriss brought up a good point while we were chatting that the UX for how to report duplicates is now much more complicated for owners of child proxies: if there is a duplicate match condition through the include tree + routes, where does the status go to report this to the user? If there isn't actually an include error on the parent, does it really make sense to put it there? how would the owner of the child route get to know the error is there? if it goes on the leaf HTTPProxy, the owner of that included resource may not know the layout of the include tree and not be able to fix the issue with the existing change, any conflicts are headed off at the root which makes it easier |
current plan is to go with a bit of a stop-gap solution, see here: #5017 the next contour release after 1.24 should have more correct validation in general, we will submit a design for that so the community can review |
@ecordell take a look at the latest main image once it is pushed, to see if it works for your uses, which we think are possibly a common one (includes w/o any conditions) |
The Contour project currently lacks enough contributors to adequately respond to all Issues. This bot triages Issues according to the following rules:
You can:
Please send feedback to the #contour channel in the Kubernetes Slack |
The Contour project currently lacks enough contributors to adequately respond to all Issues. This bot triages Issues according to the following rules:
You can:
Please send feedback to the #contour channel in the Kubernetes Slack |
What steps did you take and what happened:
Prior to #4931, this worked:
But after the recent change, the top-level
HTTPProxy
now reports:Technically, the
includes
do have equal match conditions (nothing) - but they resolve to different fully resolved paths once the delegated HTTPProxy's paths is considered.What did you expect to happen:
I expected this to be a valid config - from previous versions of contour, I know that this configuration used to create the envoy configuration that I expected (both services were routed properly). It seems like it reduces the value of the
includes
feature if I have to replicate the paths on the top-level object.Environment:
The text was updated successfully, but these errors were encountered: