Skip to content
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

Add Global Rate Limiting Support #670

Closed
7 tasks done
danehans opened this issue Nov 1, 2022 · 3 comments
Closed
7 tasks done

Add Global Rate Limiting Support #670

danehans opened this issue Nov 1, 2022 · 3 comments
Assignees
Labels
kind/enhancement New feature or request priority/high Label used to express the "high" priority level
Milestone

Comments

@danehans
Copy link
Contributor

danehans commented Nov 1, 2022

Description:

Add support for global rate limiting.

@danehans danehans added kind/enhancement New feature or request help wanted Extra attention is needed labels Nov 1, 2022
@danehans danehans added this to the 0.3.0-rc.1 milestone Nov 1, 2022
@danehans
Copy link
Contributor Author

danehans commented Nov 1, 2022

From the Gateway API Policy Attachment spec:

Although Policy attachment can be used to target an entire Route or Backend, it cannot currently be used to target specific Route rules or backend references.

Based on this information, it appears that global rate limiting fits better as an implementation-specific filter since HTTPRoute rules may require different rate limits. Thoughts @youngnick @skriss?

@arkodg arkodg self-assigned this Nov 3, 2022
@arkodg arkodg removed the help wanted Extra attention is needed label Nov 3, 2022
@arkodg arkodg removed their assignment Nov 3, 2022
@arkodg arkodg added the help wanted Extra attention is needed label Nov 3, 2022
@arkodg
Copy link
Contributor

arkodg commented Nov 4, 2022

I can find cycles to work on this

@arkodg arkodg self-assigned this Nov 4, 2022
arkodg added a commit to arkodg/gateway that referenced this issue Nov 7, 2022
Started a design doc highlighting the `WHAT` and `WHY`

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
@danehans danehans added priority/high Label used to express the "high" priority level and removed help wanted Extra attention is needed labels Nov 8, 2022
arkodg added a commit to arkodg/gateway that referenced this issue Nov 11, 2022
* `RateLimitInfraIR` - holds the config to manage
the ratelimit service.
* `global-ratelimit` runner that subscribes to `XdsIR` messages
and translates it to `RateLimitInfraIR`.
* enhance the `infrastructure` runner to subscribe to `RateLimitInfraIR`
messages and translate it into platform specific ratelimit resources.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 11, 2022
* `RateLimitInfraIR` - holds the config to manage
the ratelimit service.
* `global-ratelimit` runner that subscribes to `XdsIR` messages
and translates it to `RateLimitInfraIR`.
* enhance the `infrastructure` runner to subscribe to `RateLimitInfraIR`
messages and translate it into platform specific ratelimit resources.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 11, 2022
* `RateLimitInfraIR` - holds the config to manage
the ratelimit service.
* `global-ratelimit` runner that subscribes to `XdsIR` messages
and translates it to `RateLimitInfraIR`.
* enhance the `infrastructure` runner to subscribe to `RateLimitInfraIR`
messages and translate it into platform specific ratelimit resources.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 11, 2022
* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

* Add `BuildRateLimitServiceConfig` which translates the XdsIR
into configuration for the envoy rate limit service.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 15, 2022
* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

* Add `BuildRateLimitServiceConfig` which translates the XdsIR
into configuration for the envoy rate limit service.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 15, 2022
* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

* Add `BuildRateLimitServiceConfig` which translates the XdsIR
into configuration for the envoy rate limit service.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 17, 2022
Started a design doc highlighting the `WHAT` and `WHY`

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Nov 17, 2022
* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

* Add `BuildRateLimitServiceConfig` which translates the XdsIR
into configuration for the envoy rate limit service.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Dec 8, 2022
Started a design doc highlighting the `WHAT` and `WHY`

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Dec 8, 2022
Started a design doc highlighting the `WHAT` and `WHY`

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
@github-actions
Copy link

github-actions bot commented Dec 9, 2022

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.

@github-actions github-actions bot added the stale label Dec 9, 2022
arkodg added a commit to arkodg/gateway that referenced this issue Jan 4, 2023
* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

* Add `BuildRateLimitServiceConfig` which translates the XdsIR
into configuration for the envoy rate limit service.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 4, 2023
Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit that referenced this issue Jan 5, 2023
* Add details on Global Rate Limit implementation

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* rm EnvoyProxy comments around aux control plane

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 6, 2023
* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

* Add `BuildRateLimitServiceConfig` which translates the XdsIR
into configuration for the envoy rate limit service.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 6, 2023
* Defines the configuration needed to enable as well
as connect the rate limit service to a redis database backend
* This will be required to be set by the infrastructure admin
if the app developers want the global rate limiting feature using
`RateLimitFilter`

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit that referenced this issue Jan 9, 2023
* Global RateLimit Xds translation

* Enhance `XdsIR` with `RateLimit` to hold rate limiting config.

* Translate IR field into route level rate limit actions

Relates to #670
danehans pushed a commit that referenced this issue Jan 11, 2023
* Rate Limit Service config in EnvoyGateway API

* Defines the configuration needed to enable as well
as connect the rate limit service to a redis database backend
* This will be required to be set by the infrastructure admin
if the app developers want the global rate limiting feature using
`RateLimitFilter`

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* address comments

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* make url string type

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* change from pointer to struct type

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 13, 2023
* Translates Xds IR into ratelimit service config
https://github.com/envoyproxy/ratelimit#configuration

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 14, 2023
* Translates Xds IR into ratelimit service config
https://github.com/envoyproxy/ratelimit#configuration

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 14, 2023
Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 17, 2023
Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 17, 2023
* Translates Xds IR into ratelimit service config
https://github.com/envoyproxy/ratelimit#configuration

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
zirain pushed a commit that referenced this issue Jan 18, 2023
* Build rate limit service config

* Translates Xds IR into ratelimit service config
https://github.com/envoyproxy/ratelimit#configuration

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix yamlint

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* lint

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
danehans pushed a commit that referenced this issue Jan 18, 2023
* Add RateLimitFilter support in k8s provider

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* fix k8s error

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* edit crd

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* add another k8s test

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

* more tests && add crd

Signed-off-by: Arko Dasgupta <arko@tetrate.io>

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 18, 2023
* `RateLimitInfraIR` - holds the config to manage
the ratelimit service.
* `global-ratelimit` runner that subscribes to `XdsIR` messages
and translates it to `RateLimitInfraIR`.
* enhance the `infrastructure` runner to subscribe to `RateLimitInfraIR`
messages and translate it into platform specific ratelimit resources.

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 21, 2023
* Also rm'ed `ResetConditon` and instead set `Accepted=False` for
negative cases for ExtensionFilter cases

Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit that referenced this issue Jan 24, 2023
* RateLimitFilter: Gateway API to Xds IR translaton

* Also rm'ed `ResetConditon` and instead set `Accepted=False` for
negative cases for ExtensionFilter cases

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit that referenced this issue Jan 24, 2023
* Global rate limit components

* `RateLimitInfraIR` - holds the config to manage
the ratelimit service.
* `global-ratelimit` runner that subscribes to `XdsIR` messages
and translates it to `RateLimitInfraIR`.
* enhance the `infrastructure` runner to subscribe to `RateLimitInfraIR`
messages and translate it into platform specific ratelimit resources.

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit to arkodg/gateway that referenced this issue Jan 26, 2023
Relates to envoyproxy#670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
arkodg added a commit that referenced this issue Jan 31, 2023
* Translate RateLimitInfra into K8s resources

Relates to #670

Signed-off-by: Arko Dasgupta <arko@tetrate.io>
@danehans danehans modified the milestones: 0.3.0-rc.1, 0.3.0 Feb 2, 2023
@arkodg arkodg closed this as completed Feb 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement New feature or request priority/high Label used to express the "high" priority level
Projects
None yet
Development

No branches or pull requests

2 participants