Sliding window 300 reqs per 30 mins
Each user can make up to 300 requests in any rolling 30 minute period, with the plugin continuously adjusting the count as new requests are made.
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: rate-limiting-advanced
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
Make the following request:
curl -i -X POST http://localhost:8001/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongClusterPlugin
metadata:
name: rate-limiting-advanced
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
labels:
global: 'true'
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
plugin: rate-limiting-advanced
" | kubectl apply -f -
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_rate_limiting_advanced" "my_rate_limiting_advanced" {
enabled = true
config = {
limit = [300]
window_size = [1800]
window_type = "sliding"
namespace = "my-namespace"
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
}
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: rate-limiting-advanced
service: serviceName|Id
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
Make sure to replace the following placeholders with your own values:
-
serviceName|Id
: Theid
orname
of the service the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/services/{serviceName|Id}/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
serviceName|Id
: Theid
orname
of the service the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/services/{serviceId}/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account. -
serviceId
: Theid
of the service the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: rate-limiting-advanced
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
plugin: rate-limiting-advanced
" | kubectl apply -f -
Next, apply the KongPlugin
resource by annotating the service
resource:
kubectl annotate -n kong service SERVICE_NAME konghq.com/plugins=rate-limiting-advanced
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_rate_limiting_advanced" "my_rate_limiting_advanced" {
enabled = true
config = {
limit = [300]
window_size = [1800]
window_type = "sliding"
namespace = "my-namespace"
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
service = {
id = konnect_gateway_service.my_service.id
}
}
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: rate-limiting-advanced
route: routeName|Id
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
Make sure to replace the following placeholders with your own values:
-
routeName|Id
: Theid
orname
of the route the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/routes/{routeName|Id}/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
routeName|Id
: Theid
orname
of the route the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/routes/{routeId}/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account. -
routeId
: Theid
of the route the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: rate-limiting-advanced
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
plugin: rate-limiting-advanced
" | kubectl apply -f -
Next, apply the KongPlugin
resource by annotating the httproute
or ingress
resource:
kubectl annotate -n kong httproute konghq.com/plugins=rate-limiting-advanced
kubectl annotate -n kong ingress konghq.com/plugins=rate-limiting-advanced
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_rate_limiting_advanced" "my_rate_limiting_advanced" {
enabled = true
config = {
limit = [300]
window_size = [1800]
window_type = "sliding"
namespace = "my-namespace"
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
route = {
id = konnect_gateway_route.my_route.id
}
}
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: rate-limiting-advanced
consumer: consumerName|Id
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
Make sure to replace the following placeholders with your own values:
-
consumerName|Id
: Theid
orname
of the consumer the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/consumers/{consumerName|Id}/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
consumerName|Id
: Theid
orname
of the consumer the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/consumers/{consumerId}/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account. -
consumerId
: Theid
of the consumer the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: rate-limiting-advanced
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
plugin: rate-limiting-advanced
" | kubectl apply -f -
Next, apply the KongPlugin
resource by annotating the KongConsumer
resource:
kubectl annotate -n kong CONSUMER_NAME konghq.com/plugins=rate-limiting-advanced
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_rate_limiting_advanced" "my_rate_limiting_advanced" {
enabled = true
config = {
limit = [300]
window_size = [1800]
window_type = "sliding"
namespace = "my-namespace"
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
consumer = {
id = konnect_gateway_consumer.my_consumer.id
}
}
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: rate-limiting-advanced
consumer_group: consumerGroupName|Id
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
Make sure to replace the following placeholders with your own values:
-
consumerGroupName|Id
: Theid
orname
of the consumer group the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/consumer_groups/{consumerGroupName|Id}/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
consumerGroupName|Id
: Theid
orname
of the consumer group the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/consumer_groups/{consumerGroupId}/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "rate-limiting-advanced",
"config": {
"limit": [
300
],
"window_size": [
1800
],
"window_type": "sliding",
"namespace": "my-namespace"
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account. -
consumerGroupId
: Theid
of the consumer group the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: rate-limiting-advanced
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
config:
limit:
- 300
window_size:
- 1800
window_type: sliding
namespace: my-namespace
plugin: rate-limiting-advanced
" | kubectl apply -f -
Next, apply the KongPlugin
resource by annotating the KongConsumerGroup
resource:
kubectl annotate -n kong CONSUMERGROUP_NAME konghq.com/plugins=rate-limiting-advanced
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_rate_limiting_advanced" "my_rate_limiting_advanced" {
enabled = true
config = {
limit = [300]
window_size = [1800]
window_type = "sliding"
namespace = "my-namespace"
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
consumer_group = {
id = konnect_gateway_consumer_group.my_consumer_group.id
}
}