GRPCRoute
GRPCRoute는 "부모(parent)" 리소스(예: Service)에 붙어 그 리소스로 향하는 gRPC 요청을 매칭하는 규칙 집합을 정의하는 Kubernetes 리소스예요. 이 규칙들은 경로(path), 메서드(method), 헤더, 기타 gRPC 요청의 여러 측면 같은 파라미터를 기준으로 삼을 수 있어요.
본문
GRPCRoute는 Linkerd 동작의 다양한 측면을 구성하는 데 사용되며, Gateway API에 대한 Linkerd 지원의 일부를 이뤄요.
참고
GRPCRoute 리소스는 Gateway API의 일부이며 Linkerd 전용이 아니에요. 정식 참조 문서는 Gateway API GRPCRoute 문서예요. 이 페이지는 그 문서의 보충 자료로, Linkerd가 이 유형을 구체적으로 어떻게 사용하는지 자세히 설명해요.
인바운드 vs 아웃바운드 GRPCRoute
Linkerd에서 GRPCRoute 사용은 두 범주로 나뉘어요: 인바운드 동작 구성과 아웃바운드 동작 구성.
인바운드 동작. Server가 부모 리소스인 GRPCRoute는 그 Server로 트래픽을 받는 파드로 향하는 인바운드 트래픽에 대한 정책을 구성해요. 인바운드 GRPCRoute는 세밀한 라우트별 인가·인증 정책을 구성하는 데 사용돼요.
아웃바운드 동작. Service가 부모 리소스인 GRPCRoute는 그 Service의 클라이언트인 파드 안 아웃바운드 프록시에 대한 정책을 구성해요. 아웃바운드 정책에는 동적 요청 라우팅, 요청 헤더 추가, 요청 경로 수정, 타임아웃 같은 신뢰성 기능이 포함돼요.
경고
아웃바운드 GRPCRoute와 ServiceProfile은 겹치는 구성을 제공해요. 하위 호환성 이유로 ServiceProfile이 같은 Service를 구성하는 GRPCRoute보다 우선해요. GRPCRoute의 부모 Service에 ServiceProfile이 정의되어 있다면, ServiceProfile이 존재하는 한 프록시는 GRPCRoute 구성이 아니라 ServiceProfile 구성을 사용해요.
실제 사용
Gateway API 문서에서 이러한 유형을 실제로 사용할 때의 중요 사항(유형의 소유권과 호환 버전 포함)을 확인하세요.
GRPCRoute 예제
이 예제는 두 백엔드 간 트래픽을 나누는 방법을 보여줘요. 요청 일부는 smiley2 백엔드 Service로 보내지고, 나머지는 smiley 백엔드 Service로 가요.
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: GRPCRoute
metadata:
name: smiley-a-b
namespace: faces
spec:
parentRefs:
- name: smiley
kind: Service
group: core
port: 50051
rules:
- backendRefs:
- name: smiley
port: 50051
weight: 40
- name: smiley2
port: 80
weight: 50051