RouteExtProc 리소스 구성 참조

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

Enterprise

이 기능은 Consul Enterprise가 필요해요. 엔터프라이즈 기능 매트릭스(enterprise feature matrix)에서 추가 정보를 확인할 수 있어요. 이 항목은 Kubernetes에서 특정 API 게이트웨이 라우트에 대해 ext-proc Envoy 확장이 어떻게 동작하는지 제어하는 RouteExtProc 커스텀 리소스에 대한 참조 정보를 제공해요.

출처: 문서

본문

Enterprise

이 기능은 Consul Enterprise가 필요합니다.

추가 정보는 엔터프라이즈 기능 매트릭스를 참조하세요.

이 항목은 Kubernetes에서 특정 API 게이트웨이 라우트에 대해 ext-proc Envoy 확장이 어떻게 동작하는지 제어하는 RouteExtProc 커스텀 리소스에 대한 참조 정보를 제공합니다. 리소스를 HTTPRoute에 ExtensionRef 필터로 연결해 해당 라우트와 일치하는 요청에 대해 ext-proc 인스턴스를 비활성화하거나 재정의합니다.

사용 정보는 ext-proc Envoy 확장으로 HTTP 트래픽 가로채기 및 처리(Intercept and process HTTP traffic with the ext-proc Envoy extension)를 참조하세요.

구성 모델 (Configuration model)

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

  • apiVersion : string | 필수 | consul.hashicorp.com/v1alpha1로 설정해야 함
  • kind : string | 필수 | RouteExtProc로 설정해야 함
  • metadata : map | 필수
    • name : string | 필수
    • namespace : string | 기본값
  • spec : map | 필수
    • statPrefix : string
    • mode : string | 필수
    • overrides : map
      • processing : map
        • request : map
          • headersMode : string | SEND
          • bodyMode : string | SKIP
          • trailersMode : string | SKIP
          • maxBodyBytes : integer
        • response : map
          • headersMode : string | SKIP
          • bodyMode : string | SKIP
          • trailersMode : string | SKIP
          • maxBodyBytes : integer

완전한 구성 (Complete configuration)

모든 필드가 정의될 때 RouteExtProc 리소스는 다음과 같은 형태를 가집니다.

apiVersion: consul.hashicorp.com/v1alpha1
kind: RouteExtProc
metadata:
  name: <name for this resource>
  namespace: <namespace>
spec:
  statPrefix: <StatPrefix of the ext-proc instance to target>
  mode: <disabled | override>
  overrides:
    processing:
      request:
        headersMode: <SEND | SKIP>
        bodyMode: <SKIP | BUFFERED | BUFFERED_PARTIAL | STREAMED>
        trailersMode: <SEND | SKIP>
        maxBodyBytes: <integer>
      response:
        headersMode: <SEND | SKIP>
        bodyMode: <SKIP | BUFFERED | BUFFERED_PARTIAL | STREAMED>
        trailersMode: <SEND | SKIP>
        maxBodyBytes: <integer>

사양 (Specification)

이 섹션은 RouteExtProc 리소스에서 구성할 수 있는 필드를 설명합니다.

apiVersion

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

값 (Values)

  • 기본값: 없음
  • 이 필드는 필수입니다.
  • 데이터 유형: consul.hashicorp.com/v1alpha1로 설정해야 하는 String 값.

kind

구현할 리소스의 유형을 지정합니다. RouteExtProc로 설정해야 합니다.

값 (Values)

  • 기본값: 없음
  • 이 필드는 필수입니다.
  • 데이터 유형: RouteExtProc로 설정해야 하는 String 값.

metadata

리소스의 임의 이름과 적용되는 네임스페이스를 포함하는 맵.

값 (Values)

  • 기본값: 없음
  • 데이터 유형: Map

metadata.name

리소스의 이름을 지정합니다. 이 이름을 HTTPRoute의 rules.filters.extensionRef.name 필드에 사용해 필터를 라우트에 연결하세요.

값 (Values)

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

metadata.namespace

리소스가 적용되는 Kubernetes 네임스페이스를 지정합니다. 자세한 내용은 네임스페이스(Namespaces)를 참조하세요.

값 (Values)

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

spec

라우트 ext-proc 필터에 대한 구성을 포함하는 맵. apiVersion, kind, metadata 필드는 spec 필드의 형제(sibling)입니다. 다른 모든 구성은 자식입니다.

값 (Values)

  • 기본값: 없음
  • 이 필드는 필수입니다.
  • 데이터 유형: Map

spec.statPrefix

EnvoyExtensions 구성에 설정된 StatPrefix 필드의 값과 일치시켜 대상으로 할 ext-proc 인스턴스를 식별합니다. 이 필드를 생략하면 리소스는 Envoy 필터 이름이 envoy.filters.http.ext_proc(접미사 없음)인 기본 인스턴스를 대상으로 합니다.

값 (Values)

  • 기본값: 없음(기본 접미사 없는 인스턴스를 대상으로 함)
  • 데이터 유형: String

spec.mode

연결된 라우트와 일치하는 요청에 대해 대상 ext-proc 인스턴스가 어떻게 동작하는지 지정합니다.

  • disabled : 라우트와 일치하는 요청에 대해 대상 인스턴스를 완전히 건너뜁니다. 처리 서비스가 호출되지 않으며 헤더, 본문, 트레일러가 전달되지 않습니다.
  • override : 라우트에서 대상 인스턴스를 활성 상태로 유지하고 spec.overrides 필드에 정의된 라우트별 처리 설정을 적용합니다.

값 (Values)

  • 기본값: 없음
  • 이 필드는 필수입니다.
  • 데이터 유형: 다음 중 하나로 설정된 String 값: disabled, override

spec.overrides

spec.mode가 override로 설정될 때 인스턴스 수준 구성을 재정의하는 라우트별 처리 설정을 포함합니다. 이 필드는 mode가 disabled일 때는 효과가 없습니다.

값 (Values)

  • 기본값: 없음
  • 데이터 유형: Map

spec.overrides.processing

이 라우트와 일치하는 요청에 대해 Envoy가 처리 서비스로 전달하는 요청 및 응답 수명 주기의 단계를 지정합니다.

값 (Values)

  • 기본값: 없음
  • 데이터 유형: Map

spec.overrides.processing.request

Envoy가 요청 방향에 적용하는 라우트별 처리 모드를 지정합니다.

값 (Values)

  • 기본값: 없음
  • 데이터 유형: Map

다음 표는 request 필드에서 구성할 수 있는 매개변수를 설명합니다.

매개변수 설명 데이터 유형 기본값
headersMode Envoy가 요청 헤더를 처리 서비스로 보내는지 제어합니다. SEND 또는 SKIP로 설정합니다. String SEND
bodyMode Envoy가 요청 본문을 처리 서비스로 보내는지와 어떻게 보내는지 제어합니다. SKIP, BUFFERED, BUFFERED_PARTIAL 또는 STREAMED로 설정합니다. String SKIP
trailersMode Envoy가 요청 트레일러를 처리 서비스로 보내는지 제어합니다. SEND 또는 SKIP로 설정합니다. String SKIP
maxBodyBytes bodyMode가 BUFFERED 또는 BUFFERED_PARTIAL일 때 Envoy가 버퍼링하는 본문 바이트의 최대 수를 지정합니다. Integer 없음

spec.overrides.processing.response

Envoy가 응답 방향에 적용하는 라우트별 처리 모드를 지정합니다.

값 (Values)

  • 기본값: 없음
  • 데이터 유형: Map

다음 표는 response 필드에서 구성할 수 있는 매개변수를 설명합니다.

매개변수 설명 데이터 유형 기본값
headersMode Envoy가 응답 헤더를 처리 서비스로 보내는지 제어합니다. SEND 또는 SKIP로 설정합니다. String SKIP
bodyMode Envoy가 응답 본문을 처리 서비스로 보내는지와 어떻게 보내는지 제어합니다. SKIP, BUFFERED, BUFFERED_PARTIAL 또는 STREAMED로 설정합니다. String SKIP
trailersMode Envoy가 응답 트레일러를 처리 서비스로 보내는지 제어합니다. SEND 또는 SKIP로 설정합니다. String SKIP
maxBodyBytes bodyMode가 BUFFERED 또는 BUFFERED_PARTIAL일 때 Envoy가 버퍼링하는 본문 바이트의 최대 수를 지정합니다. Integer 없음

예시 (Examples)

특정 라우트에 대해 ext-proc 비활성화 (Disable ext-proc for a specific route)

다음 예시는 /static 경로 접두사와 일치하는 요청에 대해 route-decider 통계 접두사로 식별된 ext-proc 인스턴스를 비활성화합니다. 다른 모든 라우트는 구성된 대로 인스턴스를 계속 사용합니다.

apiVersion: consul.hashicorp.com/v1alpha1
kind: RouteExtProc
metadata:
  name: disable-route-decider
  namespace: default
spec:
  statPrefix: route-decider
  mode: disabled
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: static-route
  namespace: default
spec:
  parentRefs:
    - name: api-gateway
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /static
      filters:
        - type: ExtensionRef
          extensionRef:
            group: consul.hashicorp.com
            kind: RouteExtProc
            name: disable-route-decider
      backendRefs:
        - kind: Service
          name: service-a
          namespace: default
          port: 8080

특정 라우트에 대해 처리 모드 재정의 (Override processing modes for a specific route)

다음 예시는 override 모드를 사용해 route-decider 인스턴스를 활성 상태로 유지하면서 일치하는 요청에 대한 처리 설정을 변경합니다 — 요청 헤더뿐만 아니라 전체 버퍼링된 요청 본문을 처리 서비스로 보냅니다.

apiVersion: consul.hashicorp.com/v1alpha1
kind: RouteExtProc
metadata:
  name: override-route-decider
  namespace: default
spec:
  statPrefix: route-decider
  mode: override
  overrides:
    processing:
      request:
        headersMode: SEND
        bodyMode: BUFFERED

더 알아보기 (Learn more)