본문 바로가기
WIKI 기술 지식 베이스

비율 제한

원문 보기 위키 갱신

비율 제한 (Rate Limiting)

Linkerd의 비율 제한 기능은 HTTPLocalRateLimitPolicy 리소스로 구성하며, 대상 Server를 참조하는 방식으로 동작해요.

출처: Linkerd Rate Limiting

본문

Linkerd의 비율 제한 기능은 HTTPLocalRateLimitPolicy 리소스를 통해 구성하며, 이 리소스는 Server 참조를 가리켜야 해요. 참고로 하나의 Server는 단 하나의 HTTPLocalRateLimitPolicy에서만 참조될 수 있어요.

참고

Server의 기본 accessPolicy 설정은 deny예요. 즉 AuthorizationPolicy가 해당 Server를 가리키지 않으면 기본적으로 트래픽을 거부하게 돼요. 별도의 인증 정책을 선언하지 않고도 Server에 비율 제한 정책을 설정하고 싶다면, accessPolicy를 all-unauthenticated처럼 허용적인 값으로 설정해 주세요.

HTTPLocalRateLimitPolicy 스펙

필드 값
targetRef 이 정책이 적용되는 Server에 대한 참조
total.requestsPerSecond targetRef로 전송되는 모든 트래픽에 대한 전체 비율 제한. 미설정 시 전체 제한은 적용되지 않음
identity.requestsPerSecond 개별 identity에 대한 공정성. identity별로 그룹화된 각 클라이언트는 이 비율 제한을 적용받음. total.requestsPerSecond도 설정되어 있다면 identity.requestsPerSecond는 total.requestsPerSecond보다 클 수 없음
overrides 특정 클라이언트에서 오는 트래픽에 대한 오버라이드 배열

Overrides

필드 값
requestsPerSecond clientRefs에 해당하는 클라이언트에 허용되는 초당 요청 수. total.requestsPerSecond도 설정되어 있다면 각 overrides 항목의 requestsPerSecond는 total.requestsPerSecond보다 클 수 없음
clientRefs.kind 참조 대상의 종류. 현재는 ServiceAccount만 지원
clientRefs.namespace 참조 대상의 네임스페이스. 미지정(또는 빈 문자열) 시 정책의 로컬 네임스페이스를 의미
clientRefs.name 참조 대상의 이름

예시

이 예시에서 정책은 web-http Server를 대상으로 하며, 전체 비율 제한 100RPS, identity별 제한 20RPS, 그리고 emojivoto 네임스페이스의 "special-client" ServiceAccount에 대해 25RPS의 오버라이드를 적용해요.

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

더 알아보기 (Learn more)