• GitHub
  • Slack
  • Linkerd Forum

Rate Limiting

Linkerd’s rate limiting functionality is configured via HTTPLocalRateLimitPolicy resources, which should point to a Server reference. Note that a Server can only be referred by a single HTTPLocalRateLimitPolicy.

Note

Server’s default accessPolicy config is deny. This means that if you don’t have AuthorizationPolicies pointing to a Server, it will deny traffic by default. If you want to set up rate limit policies for a Server without being forced to also declare authorization policies, make sure to set accessPolicy to a permissive value like all-unauthenticated.

HTTPLocalRateLimitPolicy Spec

fieldvalue
targetRefA reference to the Server this policy applies to.
total.requestsPerSecondOverall rate limit for all traffic sent to the targetRef. If unset no overall limit is applied.
identity.requestsPerSecondFairness for individual identities; each separate client, grouped by identity, will have this rate limit. If total.requestsPerSecond is also set, identity.requestsPerSecond cannot be greater than total.requestsPerSecond.
overridesAn array of overrides for traffic from specific client.

Overrides

fieldvalue
requestsPerSecondThe number of requests per second allowed from clients matching clientRefs. If total.requestsPerSecond is also set, the requestsPerSecond for each overrides entry cannot be greater than total.requestsPerSecond.
clientRefs.kindKind of the referent. Currently only ServiceAccount is supported.
clientRefs.namespaceNamespace of the referent. When unspecified (or empty string), this refers to the local namespace of the policy.
clientRefs.nameName of the referent.

Example

In this example, the policy targets the web-http Server, for which a total rate limit of 100RPS is imposed, with a limit of 20RPS per identity, and an override of 25RPS for the “special-client” ServiceAccount in the emojivoto namespace:

apiVersion: policy.linkerd.io/v1alpha1
kind: HTTPLocalRateLimitPolicy
metadata:
  namespace: emojivoto
  name: web-rl
spec:
  targetRef:
    group: policy.linkerd.io
    kind: Server
    name: web-http
  total:
    requestsPerSecond: 100
  identity:
    requestsPerSecond: 20
  overrides:
  - requestsPerSecond: 25
    clientRefs:
    - kind: ServiceAccount
      namespace: emojivoto
      name: special-client