-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
allow HTTP filters to be marked as optional #15025
Comments
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions. |
@htuch, can we tag this so that it doesn't go stale? Thanks! |
Enable `is_optional` field for `HttpFilter`. The default value is `false`, it will keep the same behavior with the current implementation. The envoy will reject the unsupported HTTP filter, also will reject the unsupported HTTP filter in typed per filter config. When the value is `true`, the unsupported HTTP filter will be ignored by the envoy, also will be ignored by typed per filter config, with a warning log. Risk Level: low Testing: unit tests and integration tests are added Docs Changes: API doc is added Release Notes: added as new feature Fixes #15770 Fixes #15025 Signed-off-by: He Jie Xu <hejie.xu@intel.com>
Enable `is_optional` field for `HttpFilter`. The default value is `false`, it will keep the same behavior with the current implementation. The envoy will reject the unsupported HTTP filter, also will reject the unsupported HTTP filter in typed per filter config. When the value is `true`, the unsupported HTTP filter will be ignored by the envoy, also will be ignored by typed per filter config, with a warning log. Risk Level: low Testing: unit tests and integration tests are added Docs Changes: API doc is added Release Notes: added as new feature Fixes envoyproxy#15770 Fixes envoyproxy#15025 Signed-off-by: He Jie Xu <hejie.xu@intel.com>
It doesn't look like this was fully fixed. It looks like #16119 added support for the I don't think that approach will actually work once Envoy has the kind of caching xDS client layer that @adisuissa is working on for #13009, because I don't think that caching layer would be able to tie the RDS watch to an individual Listener that uses it, since there could actually be multiple Listeners that use the same RDS resource, and those two Listeners could have different lists of optional filters. Given that, I think Envoy still needs to support the |
Maybe I should this question #27210 (comment) here. Not sure why we need |
Miss understand the question, sorry, ignore this message. |
I'm not sure what you mean by "pre route config". The reason for needing |
sorry, I mean the pre-route/vh filter configs here.
If allow the user config I guess that for the case: HCM still using the old config (doesn't include the new filter yet), then the RDS pushes a new config which includes a new filter's pre-route/vh filter configs, then we need to mark that new filter's pre-route/vh filter configs as optional. Then envoy won't NACK that config. |
I am guessing that you actually mean per-route, not pre-route. :)
Yes, that config is possible. In that case, if the filter is not supported by a data plane, then the data plane will accept the HCM config but reject the RDS resource. There's probably no use-case where that's actually desirable, but I don't see how we can do better without breaking cachability.
Yes, if a filter is actually not supported by the data plane, then the filter's config needs to be marked as |
thanks! finally knowing where I make the thing confused :) |
closed by #27263 |
#14982 added new fields to the API to allow HTTP filters to be marked as optional -- i.e., if a filter is not known to a client, the client will ignore that particular filter instead of NACKing the entire config. gRPC is implementing this now, and we'd like Envoy to have the same behavior.
CC @htuch
The text was updated successfully, but these errors were encountered: