HTTP 쿼리 파라미터 매칭¶
확장 지원 기능: HTTPRouteQueryParamMatching
이 기능은 확장 지원(Extended Support)의 일부이다. 지원 수준에 대한 자세한 내용은 적합성 가이드를 참고한다.
HTTPRoute 리소스를 사용하면 쿼리 파라미터를 기반으로 요청을 매칭할 수 있다. 이 가이드에서는 이 기능의 사용 방법을 설명한다.
단일 쿼리 파라미터를 기반으로 요청 매칭¶
다음 HTTPRoute는 animal 쿼리 파라미터의 값에 따라 두 백엔드로 트래픽을
분할한다.
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: query-param-matching
namespace: gateway-conformance-infra
spec:
parentRefs:
- name: same-namespace
rules:
- matches:
- queryParams:
- name: animal
value: whale
backendRefs:
- name: infra-backend-v1
port: 8080
- matches:
- queryParams:
- name: animal
value: dolphin
backendRefs:
- name: infra-backend-v2
port: 8080
- 쿼리 파라미터
animal=whale을 포함한/경로에 대한 요청은infra-backend-v1로 라우팅된다. - 쿼리 파라미터
animal=dolphin을 포함한/경로에 대한 요청은infra-backend-v2로 라우팅된다.
다중 쿼리 파라미터를 기반으로 요청 매칭¶
규칙(rule)은 여러 쿼리 파라미터에 대해 매칭할 수도 있다. 다음 규칙은
쿼리 파라미터 animal=dolphin과 color=blue가 모두 존재하는 경우
트래픽을 infra-backend-v3로 라우팅한다.
- matches:
- queryParams:
- name: animal
value: dolphin
- name: color
value: blue
backendRefs:
- name: infra-backend-v3
port: 8080
OR 매칭¶
규칙에 여러 matches가 있는 경우, 요청이 그 중 하나라도 만족하면 라우팅된다.
다음 규칙은 아래 조건 중 하나를 만족하면 트래픽을 infra-backend-v3로 라우팅한다.
- 쿼리 파라미터
animal=dolphin과color=blue가 모두 존재하는 경우 - 또는(OR) 쿼리 파라미터
ANIMAL=Whale이 존재하는 경우
- matches:
- queryParams:
- name: animal
value: dolphin
- name: color
value: blue
- queryParams:
- name: ANIMAL
value: Whale
backendRefs:
- name: infra-backend-v3
port: 8080
다른 매칭 타입과의 조합¶
쿼리 파라미터 매칭은 경로(path) 매칭이나 헤더(header) 매칭과 같은 다른 매칭 타입과 조합하여 사용할 수 있다. 다음 규칙들은 이러한 조합을 보여준다.
- matches:
- path:
type: PathPrefix
value: /path1
queryParams:
- name: animal
value: whale
backendRefs:
- name: infra-backend-v1
port: 8080
- matches:
- headers:
- name: version
value: one
queryParams:
- name: animal
value: whale
backendRefs:
- name: infra-backend-v2
port: 8080
- matches:
- path:
type: PathPrefix
value: /path2
headers:
- name: version
value: two
queryParams:
- name: animal
value: whale
backendRefs:
- name: infra-backend-v3
port: 8080