-
Notifications
You must be signed in to change notification settings - Fork 462
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
5579 extended http methods #9633
Conversation
Includes an e2e test and an attempt at implementing the fix. However, the test fails, so clearly the fix doesn't actually work
Currently it's a bit of a hack as I just stuffed the functionality into the hcm plugin. I would like to move it elsewhere
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
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.
Overall seems like a good approach to me
We may also want to call out the potential breaking changes where we specify the Envoy version (ie here) so that there are no surprises, but I think there is/will be enough tests that will fail if/when allow_custom_methods
is deprecated in Envoy that we aren't at risk of shipping something broken
The real risk is that there will be hidden required work at some point when we bump Envoy versions, but we're calling it out as loudly as possible while also describing the path forward, so I think the pain/surprise will be minimized
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
…on.proto Co-authored-by: Bernie Birnbaum <[email protected]>
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
After a bit of discussion yesterday, we made the following decisions:
|
Namely, remove the new plugin and stuff the functionality into the existing HCM plugin. Also, add a little more documentation on expected breaking changes when UHV is enabled.
…into 5579-extended-http-methods
This reverts commit 28f0fe5.
Issues linked to changelog: |
Visit the preview URL for this PR (updated for commit 257e0ac): https://gloo-edge--pr9633-5579-extended-http-m-awemr4gz.web.app (expires Tue, 02 Jul 2024 18:31:00 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: 77c2b86e287749579b7ff9cadb81e099042ef677 |
In the current iteration of the API, this is the configuration that would be used to allow custom http methods:
|
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
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.
A couple notes on the tests.
Would like to see a demo and/or testing steps before approval.
projects/gloo/api/v1/options/header_validation/header_validation.proto
Outdated
Show resolved
Hide resolved
…on.proto Co-authored-by: Seth Heidkamp <[email protected]>
…into 5579-extended-http-methods
* Check-in before codegen * Initial commit Includes an e2e test and an attempt at implementing the fix. However, the test fails, so clearly the fix doesn't actually work * Get the implementation working Currently it's a bit of a hack as I just stuffed the functionality into the hcm plugin. I would like to move it elsewhere * Add plugin README * Move configuration to a new plugin * Codegen/formatting updates * Add makefile documentation on building docker images * Update projects/gloo/api/v1/options/header_validation/header_validation.proto Co-authored-by: Bernie Birnbaum <[email protected]> * Address some review comments Namely, remove the new plugin and stuff the functionality into the existing HCM plugin. Also, add a little more documentation on expected breaking changes when UHV is enabled. * Only allow header validation on gateway * Update documentation * Update protobuf API to use a oneof * Add unit test * Add changelog * Fix a compilation error * Add http/2 test * Revert "Add http/2 test" This reverts commit 28f0fe5. * Re-run codegen * Move changelog * Update e2e test documentation * Update API and documentation * Rename API to disable_method_validation * Rename custom_methods `oneof` to header_method_validation * Change disableMethodValidation to disableHttp1MethodValidation * Update a renamed proto variable * Update e2e test to use new framework * Fix some ginkgo methods * Remove duplicated test * Update projects/gloo/api/v1/options/header_validation/header_validation.proto Co-authored-by: Seth Heidkamp <[email protected]> * Add negative test to plugin unit test * Add an additional test * Re-run codegen --------- Co-authored-by: Bernie Birnbaum <[email protected]> Co-authored-by: Seth Heidkamp <[email protected]> Co-authored-by: Nathan Fudenberg <[email protected]>
* 5579 extended http methods (#9633) * Check-in before codegen * Initial commit Includes an e2e test and an attempt at implementing the fix. However, the test fails, so clearly the fix doesn't actually work * Get the implementation working Currently it's a bit of a hack as I just stuffed the functionality into the hcm plugin. I would like to move it elsewhere * Add plugin README * Move configuration to a new plugin * Codegen/formatting updates * Add makefile documentation on building docker images * Update projects/gloo/api/v1/options/header_validation/header_validation.proto Co-authored-by: Bernie Birnbaum <[email protected]> * Address some review comments Namely, remove the new plugin and stuff the functionality into the existing HCM plugin. Also, add a little more documentation on expected breaking changes when UHV is enabled. * Only allow header validation on gateway * Update documentation * Update protobuf API to use a oneof * Add unit test * Add changelog * Fix a compilation error * Add http/2 test * Revert "Add http/2 test" This reverts commit 28f0fe5. * Re-run codegen * Move changelog * Update e2e test documentation * Update API and documentation * Rename API to disable_method_validation * Rename custom_methods `oneof` to header_method_validation * Change disableMethodValidation to disableHttp1MethodValidation * Update a renamed proto variable * Update e2e test to use new framework * Fix some ginkgo methods * Remove duplicated test * Update projects/gloo/api/v1/options/header_validation/header_validation.proto Co-authored-by: Seth Heidkamp <[email protected]> * Add negative test to plugin unit test * Add an additional test * Re-run codegen --------- Co-authored-by: Bernie Birnbaum <[email protected]> Co-authored-by: Seth Heidkamp <[email protected]> Co-authored-by: Nathan Fudenberg <[email protected]> * Adding changelog file to new location * Deleting changelog file from old location --------- Co-authored-by: Bernie Birnbaum <[email protected]> Co-authored-by: Seth Heidkamp <[email protected]> Co-authored-by: Nathan Fudenberg <[email protected]> Co-authored-by: soloio-bulldozer[bot] <48420018+soloio-bulldozer[bot]@users.noreply.github.com> Co-authored-by: changelog-bot <changelog-bot>
Description
Enable extended HTTP methods. Prior to this change, Envoy only allowed a
limited set of HTTP methods, and anything not allowed in a hard-coded list
would be rejected. This change allows users to configure Envoy so that extended
methods, such as
LABEL
orUPDATE
can be passed.The code changes are fairly straightforward, but potential compatibility issues with future envoy releases are not straightforward, so I would appreciate if reviewers could focus in particular on this area.
API changes
Code changes
HeaderValidation
plugin to manage settings related to header validationCI changes
Docs changes
Context
https://soloio.slab.com/posts/extended-http-methods-design-doc-40j7pjeu
Interesting decisions
See slab document regarding status of option settings in upstream Envoy.
Testing steps
TODO
Notes for reviewers
Please read the design document linked on slab carefully to understand the current state of this feature in upstream Envoy, especially how it pertains to Universal Header Validation and the deprecation status of the features that we're using in upstream Envoy.
Checklist:
BOT NOTES:
resolves solo-io#5579