Rate limit the whole mesh
Simplify your per service configuration, by configuring the ratelimit service backend for the whole mesh.
Configuration
apiVersion: kuma.io/v1alpha1
kind: MeshGlobalRateLimit
metadata:
name: ratelimit-backend
namespace: kong-mesh-system
labels:
kuma.io/mesh: default
spec:
targetRef:
kind: Mesh
from:
- targetRef:
kind: Mesh
default:
http:
onRateLimit:
status: 423
headers:
set:
- name: x-kuma-rate-limited
value: 'true'
mode: Limit
backend:
rateLimitService:
url: http://kong-mesh-ratelimit-service:10003
timeout: 25ms
Copied!
type: MeshGlobalRateLimit
name: ratelimit-backend
mesh: default
spec:
targetRef:
kind: Mesh
from:
- targetRef:
kind: Mesh
default:
http:
onRateLimit:
status: 423
headers:
set:
- name: x-kuma-rate-limited
value: 'true'
mode: Limit
backend:
rateLimitService:
url: http://kong-mesh-ratelimit-service:10003
timeout: 25ms
Copied!
Please adjust konnect_mesh_control_plane.my_meshcontrolplane.id and konnect_mesh.my_mesh.name according to your current configuration.
resource "konnect_mesh_global_rate_limit" "ratelimit_backend" {
provider = konnect-beta
type = "MeshGlobalRateLimit"
name = "ratelimit-backend"
spec = {
target_ref = {
kind = "Mesh"
}
from = [
{
target_ref = {
kind = "Mesh"
}
default = {
http = {
on_rate_limit = {
status = "423"
headers = {
set = [
{
name = "x-kuma-rate-limited"
value = "true"
}
]
}
}
}
mode = "Limit"
backend = {
rate_limit_service = {
url = "http://kong-mesh-ratelimit-service:10003"
timeout = "25ms"
}
}
}
}
]
}
labels = {
"kuma.io/mesh" = konnect_mesh.my_mesh.name
}
cp_id = konnect_mesh_control_plane.my_meshcontrolplane.id
mesh = konnect_mesh.my_mesh.name
}
Copied!