apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.13.0 name: meshglobalratelimits.kuma.io spec: group: kuma.io names: categories: - kuma kind: MeshGlobalRateLimit listKind: MeshGlobalRateLimitList plural: meshglobalratelimits singular: meshglobalratelimit scope: Namespaced versions:
- additionalPrinterColumns:
- jsonPath: .spec.targetRef.kind name: TargetRef Kind type: string
- jsonPath: .spec.targetRef.name
name: TargetRef Name
type: string
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: ‘APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources’
type: string
kind:
description: ‘Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds’
type: string
metadata:
type: object
spec:
description: Spec is the specification of the Kuma MeshGlobalRateLimit
resource.
properties:
from:
description: From list makes a match between clients and corresponding
configurations
items:
properties:
default:
description: Default is a configuration specific to the group
of clients referenced in ‘targetRef’
properties:
backend:
description: Backend defines location of rate limit backend
service.
properties:
rateLimitService:
properties:
limitOnServiceFail:
description: LimitOnServiceFail will pass limit
requests if ratelimit service is not reachable.
type: boolean
timeout:
description: Timeout for rate limit request made
form Data Plane Proxy to rate limit service.
type: string
url:
description: Url defines address of rate limit service.
type: string
required:
- timeout
- url
type: object
required:
- rateLimitService
type: object
http:
properties:
disabled:
description: Define if rate limiting should be disabled.
type: boolean
onRateLimit:
description: Describes the actions to take on a rate
limit event
properties:
headers:
description: The Headers to be added to the HTTP
response on a rate limit event
properties:
add:
items:
properties:
name:
maxLength: 256
minLength: 1
pattern: ^[a-z0-9!#$%&’+-.^_\x60|~]+$
type: string
value:
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
set:
items:
properties:
name:
maxLength: 256
minLength: 1
pattern: ^[a-z0-9!#$%&’+-.^_\x60|~]+$
type: string
value:
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
type: object
status:
description: The HTTP status code to be set on a
rate limit event
format: int32
type: integer
type: object
ratelimitOnRequest:
description: Defines rate limit based on request content
items:
properties:
kind:
description: ‘Kind defines type of rate limit
config. Possible options: OnHeader.’
enum:
- OnHeader
type: string
limits:
description: Limits defines limit configuration.
items:
properties:
requestRate:
description: Defines how many requests are
allowed per interval.
properties:
interval:
description: The interval the number
of units is accounted for. Only 1s,
1m, 1h or 24h can be configured.
type: string
num:
description: Number of units per interval
(depending on usage it can be a number
of requests, or a number of connections).
format: int32
type: integer
required:
- interval
- num
type: object
value:
description: Value of the request element
on which rate limit should apply. E.g.
header value.
type: string
required:
- requestRate
- value
type: object
type: array
name:
description: Name of the request element on which
rate limit should apply. E.g. header name.
type: string
required:
- kind
- limits
- name
type: object
type: array
requestRate:
description: Defines how many requests are allowed per
interval.
properties:
interval:
description: The interval the number of units is
accounted for. Only 1s, 1m, 1h or 24h can be configured.
type: string
num:
description: Number of units per interval (depending
on usage it can be a number of requests, or a
number of connections).
format: int32
type: integer
required:
- interval
- num
type: object
type: object
mode:
description: ‘Mode defines rate limit behavior when limits
are reached. Possible options: Limit and Shadow. Setting
Shadow will not block over the limit requests but will
update metrics. This is useful for testing rate limit
configuration.’
enum:
- Limit
- Shadow
type: string
required:
- backend
- http
type: object
targetRef:
description: TargetRef is a reference to the resource that represents
a group of clients.
properties:
kind:
description: Kind of the referenced resource
enum:
- Mesh
- MeshSubset
- MeshGateway
- MeshService
- MeshServiceSubset
- MeshHTTPRoute
type: string
mesh:
description: Mesh is reserved for future use to identify
cross mesh resources.
type: string
name:
description: ‘Name of the referenced resource. Can only
be used with kinds:
MeshService
,MeshServiceSubset
andMeshGatewayRoute
’ type: string tags: additionalProperties: type: string description: Tags used to select a subset of proxies by tags. Can only be used with kindsMeshSubset
andMeshServiceSubset
type: object type: object required: - targetRef type: object type: array targetRef: description: TargetRef is a reference to the resource the policy takes an effect on. The resource could be either a real store object or virtual resource defined inplace. properties: kind: description: Kind of the referenced resource enum: - Mesh - MeshSubset - MeshGateway - MeshService - MeshServiceSubset - MeshHTTPRoute type: string mesh: description: Mesh is reserved for future use to identify cross mesh resources. type: string name: description: ‘Name of the referenced resource. Can only be used with kinds:MeshService
,MeshServiceSubset
andMeshGatewayRoute
’ type: string tags: additionalProperties: type: string description: Tags used to select a subset of proxies by tags. Can only be used with kindsMeshSubset
andMeshServiceSubset
type: object type: object required: - targetRef type: object type: object served: true storage: true subresources: {}