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: stringmode: string | 필수overrides: mapprocessing: maprequest: mapheadersMode: string |SENDbodyMode: string |SKIPtrailersMode: string |SKIPmaxBodyBytes: integer
response: mapheadersMode: string |SKIPbodyMode: string |SKIPtrailersMode: string |SKIPmaxBodyBytes: 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