RouteRetryFilter 리소스 구성 참조

RouteRetryFilter 리소스 구성 참조 (RouteRetryFilter resource configuration reference)

이 주제에서는 API 게이트웨이 리스너에서 Consul 서비스 메시의 대상 서비스로의 특정 라우트에 대한 재시도 설정을 정의하는 RouteRetryFilter 리소스에 대한 구성 참조 정보를 제공해요.

출처: 문서

본문

이 주제에서는 API 게이트웨이 리스너에서 Consul 서비스 메시의 대상 서비스로의 특정 라우트에 대한 재시도 설정을 정의하는 RouteRetryFilter 리소스에 대한 구성 참조 정보를 제공합니다.

소개 (Introduction)

spec에서 하나 이상의 구성을 정의하여 라우트의 재시도 로직을 정의합니다. 자세한 내용은 재시도 로직 예제 구성을 참조하세요.

HTTPRoute에 재시도 설정을 적용하려면 라우트의 rules.filters.type 매개변수를 extensionRef로 설정하고 rules.filters.extensionRef.name 필드에 필터의 이름을 지정하세요. 자세한 내용은 Route resource configuration reference를 참조하세요.

구성 모델 (Configuration Model)

다음 목록은 RouteRetryFilter 리소스의 필드 계층 구조, 데이터 유형 및 요구 사항을 설명합니다. 속성 이름을 클릭하면 기본값을 포함한 추가 정보를 볼 수 있습니다.

완전한 구성 (Complete configuration)

모든 필드가 정의되면 이 리소스는 다음과 같은 형식을 갖습니다:

apiVersion: consul.hashicorp.com/v1alpha1
kind: RouteRetryFilter
metadata:
  name: <name for the retry filter>
spec:
  requestTimeout: <amount of time to wait before retrying>
  numRetries: <number of times to retry>
  retryOnConnectFailure: false
  retryOn: ['<condition types that trigger retries>']

사양 (Specification)

이 섹션에서는 리소스에서 구성할 수 있는 필드에 대한 세부 정보를 제공합니다.

apiVersion

Kubernetes와 통합하기 위한 Consul API 버전을 지정합니다. 값은 consul.hashicorp.com/v1alpha1이어야 합니다.

값 (Values)

  • 기본값: None
  • 필수 필드입니다.
  • consul.hashicorp.com/v1alpha1로 설정해야 하는 문자열 값.

kind

구현할 구성 항목의 유형을 지정합니다. RouteRetryFilter로 설정해야 합니다.

값 (Values)

  • 기본값: None
  • 필수 필드입니다.
  • 데이터 유형: RouteRetryFilter로 설정해야 하는 문자열 값.

metadata

리소스의 임의 이름과 적용되는 namespace를 포함하는 맵입니다.

값 (Values)

  • 기본값: None
  • 데이터 유형: Map

metadata.name

리소스의 이름을 지정합니다. 이름은 특정 클러스터에 리소스를 적용하는 등 Consul 작업을 수행할 때 리소스를 참조하는 데 사용할 수 있는 메타데이터입니다.

값 (Values)

  • 기본값: None
  • 필수 필드입니다.
  • 데이터 유형: String

metadata.namespace

구성이 적용되는 namespace를 지정합니다. 자세한 내용은 namespaces를 참조하세요.

값 (Values)

  • 기본값: None
  • 데이터 유형: String

spec

게이트웨이 정책에 대한 세부 정보를 포함하는 맵입니다. apiVersion, kind, metadata 필드는 spec 필드의 형제입니다. 다른 모든 구성은 자식입니다.

spec.numRetries

재시도 조건이 발생할 때 요청을 재시도할 횟수를 지정합니다.

값 (Values)

  • 기본값: 1
  • 데이터 유형: Integer

spec.retryOnConnectFailure

연결이 실패하면 Consul이 요청을 재시도하도록 활성화합니다. 라우트의 재시도 로직을 정의하려면 하나 이상의 재시도 구성을 정의하세요.

값 (Values)

  • 기본값: false
  • 데이터 유형: Boolean

spec.retryOn

업스트림 서비스의 응답을 기반으로 Consul이 요청을 재시도하는 조건 목록을 지정합니다. 다음 재시도 조건이 지원됩니다:

Conditions Description
5xx 업스트림이 5xx 오류 코드로 응답하거나 전혀 응답하지 않으면 Consul이 요청을 재시도합니다.
gateway-error 업스트림이 502, 503 또는 504 오류로 응답하면 Consul이 요청을 재시도합니다.
reset 업스트림이 전혀 응답하지 않으면 Consul이 요청을 재시도합니다.
connect-failure 업스트림에 대한 연결이 실패하면 Consul이 요청을 재시도합니다.
envoy-ratelimited x-envoy-ratelimited 헤더가 있으면 Consul이 요청을 재시도합니다.
retriable-4xx 업스트림이 재시도 가능한 4xx 코드로 응답하면 Consul이 요청을 재시도합니다.
refused-stream 업스트림이 REFUSED_STREAM 오류 코드로 스트림을 재설정하면 Consul이 요청을 재시도합니다.
cancelled 응답 헤더의 gRPC 상태 코드가 cancelled이면 Consul이 요청을 재시도합니다.
deadline-exceeded 응답 헤더의 gRPC 상태 코드가 deadline-exceeded이면 Consul이 요청을 재시도합니다.
internal 응답 헤더의 gRPC 상태 코드가 internal이면 Consul이 요청을 재시도합니다.
resource-exhausted 응답 헤더의 gRPC 상태 코드가 resource-exhausted이면 Consul이 요청을 재시도합니다.
unavailable 응답 헤더의 gRPC 상태 코드가 unavailable이면 Consul이 요청을 재시도합니다.

값 (Values)

spec.retryOnStatusCodes

재시도 요청을 트리거하는 HTTP 응답 상태 코드의 정수 목록을 지정합니다.

값 (Values)

  • 기본값: None
  • 데이터 유형: 정수 목록

예제 (Example)

다음 예제는 연결이 실패할 때 15초 후에 라우트를 5번 재시도하도록 Consul을 구성합니다.

apiVersion: consul.hashicorp.com/v1alpha1
kind: RouteRetryFilter
metadata:
  name: orders
spec:
  numRetries: 5
  retryOnConnectFailure: true
  retryOn: ['reset']
  
  ---
  
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: example-route
  namespace: default
spec:
  parentRefs:
    - name: gateway
  rules:
     - backendRefs:
          - name: example-service
            kind: Service
            port: 80
       filters:
        - type: ExtensionRef
          extensionRef:
            group: consul.hashicorp.com
            kind: RouteRetryFilter
            name: orders

더 알아보기 (Learn more)