라우팅 규칙 맵 개요

이 문서는 부하 분산 API를 사용하는 Cloud Service Mesh에만 적용됩니다. 서비스 라우팅 API를 사용하는 것이 좋습니다.

라우팅 규칙 맵은 다음과 같이 구성됩니다.

Cloud Service Mesh용으로 이러한 리소스를 만들고 구성할 때 Cloud Service Mesh는 이 값을 사용하여 데이터 영역으로 전송되는 구성을 만들며, 여기에는 Envoy 프록시 및 프록시리스 gRPC 애플리케이션과 같은 xDS 클라이언트가 포함됩니다. 그러면 데이터 영역에서 이 구성에 따라 트래픽을 처리합니다.

전달 규칙은 대상 프록시를 참조하고 IP 주소와 포트가 포함됩니다. Cloud Service Mesh 배포의 경우 전달 규칙의 부하 분산 스키마를 INTERNAL_SELF_MANAGED로 설정해야 합니다. 그러면 대상 프록시가 URL 맵을 참조합니다. 이 3가지 리소스가 결합되어 라우팅 규칙 맵을 구성합니다.

validateForProxyless 필드가 TRUE로 설정된 대상 gRPC 프록시를 참조하는 전달 규칙의 IP 주소는 0.0.0.0로 설정되어야 합니다. validateForProxylessTRUE로 설정되면 0.0.0.0 이외의 IP 주소로 지정된 구성이 거부됩니다.

라우팅 규칙 맵은 클라이언트에서 서비스 메시 내부의 서버로 트래픽을 전달하는 방법을 정의합니다.

지원되는 대상 프록시 유형

Cloud Service Mesh는 다음과 같은 대상 프록시 유형을 지원합니다.

  • 클라이언트와 서버가 HTTP 또는 HTTP/2 트래픽을 주고받을 때 구성하는 대상 HTTP 프록시입니다.
  • 클라이언트와 서버가 HTTPS 트래픽을 주고받을 때 구성하는 대상 HTTPS 프록시입니다. 이는 Envoy 프록시로 서비스 보안을 설정할 때 필요합니다.
  • 클라이언트와 서버가 TCP 트래픽을 주고받을 때 구성하는 대상 TCP 프록시입니다.
  • 클라이언트와 서버가 gRPC 트래픽을 주고받을 때 구성하는 대상 gRPC 프록시입니다. 대상 gRPC 프록시에는 프록시리스 gRPC 서비스를 배포할 때 TRUE로 설정되는 validateForProxyless 필드가 포함됩니다.

Envoy 사이드카 프록시로 트래픽 라우팅

Envoy 사이드카 프록시에 Cloud Service Mesh를 사용하는 경우 클라이언트 요청이 다음과 같이 라우팅됩니다.

  • 네트워크 스택은 요청을 가로채서 이를 Envoy 사이드카 프록시로 리디렉션합니다.
  • Envoy 사이드카 프록시는 요청의 IP 주소와 포트를 확인합니다.
  • IP 주소와 포트 쌍은 부하 분산 스키마가 INTERNAL_SELF_MANAGED로 설정된 모든 전달 규칙에 지정된 IP 주소 및 포트에서 확인됩니다.
  • 일치하는 IP 주소 및 포트가 있는 전달 규칙이 발견되면 Envoy는 전달 규칙이 참조하는 대상 HTTP 또는 gRPC 프록시를 찾습니다.
  • Envoy는 대상 프록시가 참조하는 URL 맵을 확인합니다.
  • Envoy는 URL 맵에 지정된 규칙에 따라 요청을 라우팅합니다.

대상 TCP 프록시로 트래픽을 라우팅하는 방법은 Cloud Service Mesh로 TCP 트래픽 라우팅을 참조하세요.

프록시리스 gRPC 애플리케이션을 사용한 트래픽 라우팅

이 동작은 프록시리스 gRPC 애플리케이션의 경우 서로 다릅니다. gRPC 클라이언트를 구성할 때 클라이언트가 연결해야 하는 서비스의 대상 URI를 지정합니다. 이 URI는 xds 이름 리졸버 스키마와 hostname:port 형식을 사용합니다(예: xds:///example.hostname:8080).

프록시리스 gRPC 클라이언트가 Cloud Service Mesh에 연결할 때 Cloud Service Mesh는 다음과 같이 서비스에 따라 정보를 전송합니다.

  • Cloud Service Mesh는 INTERNAL_SELF_MANAGED로 설정된 부하 분산 스키마가 있는 전달 규칙을 찾아 포트가 대상 URI에 지정된 포트와 일치하는 전달 규칙을 찾습니다.
  • Cloud Service Mesh는 이러한 각 전달 규칙의 대상 gRPC 프록시 또는 대상 HTTP 프록시를 찾습니다.
  • Cloud Service Mesh는 이러한 대상 gRPC 프록시 또는 대상 HTTP 프록시에서 참조하는 URL 맵을 찾습니다.
  • Cloud Service Mesh는 URL 맵에서 hostname[:port] 형식도 있는 호스트 규칙을 확인하고 일치하는 항목을 찾습니다.
  • 일치하는 항목을 찾으면 Cloud Service Mesh는 gRPC 클라이언트에 라우팅 규칙 및 서비스 정보를 반환합니다.

또한 일치하는 항목이 두 개 이상 발견되면 동작이 정의되지 않고 예기치 않은 동작이 발생할 수 있습니다. 이는 일반적으로 다음 두 가지 조건이 모두 충족되는 경우에 발생합니다.

  • 여러 URL 맵에서 동일한 호스트 이름이 사용됩니다.
  • 부하 분산 스키마 INTERNAL_SELF_MANAGED를 사용하는 여러 전달 규칙이 동일한 포트를 지정합니다.

따라서 동일한 포트를 지정하는 전달 규칙이 참조하는 여러 URL 맵에서 동일한 호스트 이름을 다시 사용하지 않는 것이 좋습니다.

다음 단계