-
Notifications
You must be signed in to change notification settings - Fork 480
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
GEP-2895: Query Parameter Filter #2959
base: main
Are you sure you want to change the base?
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: lianglli The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Hi @lianglli. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. 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. |
Hey @lianglli, we're still very focused on getting v1.1 out the door so won't have time for a thorough review until after that's released. With that said, I'd recommend adding a section that shows which underlying implementations would support this. As far as I can tell, NGINX would and Envoy would not. It would be worth confirming that + looking at other common dataplanes like HAProxy to understand how widely implementable an API like this would be. |
I was wondering: do we have WG participants who work on or have expertise in Nginx, HAProxy, Apache, caddy, traefik and the other data plane implementations ? I know Envoy is over represented, so not a problem - but it would be worth having some wiki page with various data planes - and few names that can provide review/feedback. And maybe a common checklist for each proposal - to formalize a bit more the process of making sure the features and |
I would like to help in this WG. Both Envoy and Nginx are my specialties. I was the core developer of Apache APISIX, which is a popular gateway built upon Nginx: Nowadays, I am working on Envoy-based gateway. I have contributed some code to Envoy: https://github.com/envoyproxy/envoy/commits?author=spacewander, especially on the Golang filter: https://github.com/envoyproxy/envoy/blob/d1e95536aec14330a4235ad888246868d686cfac/CODEOWNERS#L383 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @lianglli, we're still very focused on getting v1.1 out the door so won't have time for a thorough review until after that's released. With that said, I'd recommend adding a section that shows which underlying implementations would support this. As far as I can tell, NGINX would and Envoy would not. It would be worth confirming that + looking at other common dataplanes like HAProxy to understand how widely implementable an API like this would be.
AFAICT it is possible with lua filter in envoy (envoyproxy/envoy#2098) and there is a PR from 8 hours ago to support this on the Route level.
+1 to adding a section as Rob proposed though.
Pls. check the "## Prior Art" and "## References" of this PR specifically. BTW, I'm the core developer of Tengine and Tengine-Ingress. |
Currently, both the KONG and Traefik support Query Parameter Modification based on its plugin. |
/cc @mlavacca |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this PR, @lianglli!
I'm not familiar with Tengine - is it based on Nginx ? My question is more about having all "upstream" proxies that are used by different implementations ( nginx, envoy, all 'native' ones in rust/go/etc) - and info if it supports or not that feature. Adding optional features that are only supported by a few implementations is possible (I personally don't think it's right, but it's what this WG has decided), but I think there is a significant cost on the users and portability of the configs, so at least we should have the info. |
Yes, Tengine is based on nginx core with many advanced features (E.g., H3/QUIC , asynchronous SSL). I got your concern. However, the gateway-api is the next specification about L4 ~ L7 network routing in cloud-native. The query parameters are an important part of the request URL. Just like modify header is useful, the same goes for query parameters. At last, there are many requirements about 'Query Parameter Filter' in real internet world. |
} | ||
``` | ||
|
||
## Examples |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- suggest including all implementations outlined in https://gateway-api.sigs.k8s.io/implementations/#implementations . If they dont support it, NA or skipping it should be fine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, I will check them specifically.
Yes, I will add a comment about GEP-2895: Query Parameter Filter in the #3103 asap. |
@lianglli checking in: where are we at with this one, what do you need in order to move forward? |
@shaneutt ptal at #3103 (comment) |
Awesome, thank you |
The Kubernetes project currently lacks enough active contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
What type of PR is this?
/kind gep
What this PR does / why we need it:
The
HTTPRouteFilter
API now supports filtersRequestHeaderModifier
andResponseHeaderModifier
.This GEP proposes adding support for modifying query parameters in a
HTTPRoute
.Which issue(s) this PR fixes:
Fixes #2895
Does this PR introduce a user-facing change?: