stateful_session: add header based session state (#23145)
* add the wireframe Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * Added bussiness logic. Working now Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * header name is read from config now instead of using a static one Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * fill more bussiness logic to achieve functional completeness Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * add unit and integration tests Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * added docs Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * add codeowners Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * remove header type inline the config instead Fix Intg test Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * remove path from HeaderBasedSessionState Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * fix build - attempt 1 Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * fix build - attempt 2 . Improve code coverage Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * improve doc format Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * retrigger CI to resolve a likely transient error Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * header replace instead of add. We have no usecase of keeping more than the value being set Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * address review comment to avoid unnecessary type conversion from string to HttpLowerCaseString Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * retrigger CI to resolve a likely transient error Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * review comments : avoid copy Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * add release note Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * remove extra newline Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> * review comments. fix release note Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> Signed-off-by: Pawan Bishnoi <pawanbishnoi@outlook.com> Mirrored from https://github.com/envoyproxy/envoy @ e2aa62acad2342cb7a84e8ad8d552e89d4c01b22pull/626/head
parent
0c85a1958d
commit
90b4a8493b
4 changed files with 53 additions and 0 deletions
@ -0,0 +1,9 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], |
||||
) |
@ -0,0 +1,42 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.extensions.http.stateful_session.header.v3; |
||||
|
||||
import "udpa/annotations/status.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.extensions.http.stateful_session.header.v3"; |
||||
option java_outer_classname = "HeaderProto"; |
||||
option java_multiple_files = true; |
||||
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/http/stateful_session/header/v3;headerv3"; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
|
||||
// [#protodoc-title: Header based stateful session extension] |
||||
|
||||
// This extension allows the session state to be tracked via request headers. |
||||
// |
||||
// This extension encodes the address of the upstream host selected by the load balancer |
||||
// into a response header with the :ref:`header configuration |
||||
// <envoy_v3_api_msg_extensions.http.stateful_session.header.v3.HeaderBasedSessionState>`. |
||||
// When new requests are incoming, this extension will try to parse the specific upstream host |
||||
// address by header name. If the address parsed from the header corresponds to a valid |
||||
// upstream host, this upstream host will be selected first. See :ref:`stateful session filter |
||||
// <envoy_v3_api_msg_extensions.filters.http.stateful_session.v3.StatefulSession>`. |
||||
// |
||||
// For example, if the header name is set to ``session-header``, envoy will prefer ``1.2.3.4:80`` |
||||
// as the upstream host when the request contains the following header: |
||||
// |
||||
// .. code-block:: none |
||||
// |
||||
// session-header: "MS4yLjMuNDo4MA==" |
||||
// |
||||
// When processing the upstream response, if ``1.2.3.4:80`` is indeed the final choice the extension |
||||
// does nothing. If ``1.2.3.4:80`` is not the final choice, the new selected host will be set to |
||||
// response headers (via the ``session-header`` response header). |
||||
// |
||||
// [#extension: envoy.http.stateful_session.header] |
||||
message HeaderBasedSessionState { |
||||
// The name that will be used to obtain header value from downstream HTTP request or generate |
||||
// new header for downstream. |
||||
string name = 1 [(validate.rules).string = {min_len: 1}]; |
||||
} |
Loading…
Reference in new issue