공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/네트워크

EnvoyCon 2023 - Envoy Gateway: An In-Depth Guide of its benefits, Use cases, and Features

inspirit941 2025. 1. 8. 15:09
반응형

 

https://youtu.be/06ylMQrj0jU?si=Lcb1DcxyO0OPNC8B

 

 

 

스크린샷 2025-01-08 오후 12 58 37스크린샷 2025-01-08 오후 1 06 46스크린샷 2025-01-08 오후 1 10 55

 

Envoy Gateway: gateway which is actually managing envoy proxies.

  • xDS Control Plane to dynamically manage a fleet of Envoys
  • provides "Batteries included" envoy proxy experience.
  • Extensibility to support a multitude of application gateway usecases.
    • mesh 형태의 기능도 지원할 예정이라고 함.

본인들이 꼽는 장점

  • Application Gateway에 필요한 usecase 대부분이 가능
  • High Performance, Extensibility
  • Dynamic Configuration
  • Security
  • Protocol Support (http, TCP, UDP, gRPC...)
  • 다른 service mesh 또는 Orchestration platform과의 연계 가능

스크린샷 2025-01-08 오후 1 13 24

 

아주 일반적인 형태.

  • 외부 트래픽이 오면, Envoy Proxy를 통과해서 user app으로 전달된다.
  • Envoy Proxy 관련 설정은 gateway에서 관리한다. static / dynamic

스크린샷 2025-01-08 오후 1 13 33

 

Architecture Overview

  • Provider: listen to all static / dynamic configurations -> translator에게 전달
  • translator: configuration 읽어서 infra IR, xDS IR로 변환.
  • infra Manager: 설정한 infra IR 정보를 개별 envoy config로 밀어넣는 역할.

N개의 envoy가 떠 있을 때, envoy별로 config 조정이 가능하다. 얼마나 많은 envoy가 있건 상관없이, 하나의 gateway로 관리할 수 있음.

스크린샷 2025-01-08 오후 1 19 59

 

Envoy에서 지원하는 Extension도 사용할 수 있다. 위 예시는 OAuth2Filter extension을 추가한 것.

Features

스크린샷 2025-01-08 오후 1 38 38

 

스크린샷 2025-01-08 오후 1 38 29스크린샷 2025-01-08 오후 1 39 18스크린샷 2025-01-08 오후 1 41 40

 

HTTP Routing

  • GatewayClass를 먼저 만들어준다. spec.controllerName에 gatewayclass-controller를 명시한다.
  • GatewayClass를 reference로 하는 Gateway 리소스를 생성한다.
    • spec.gatewayClassName 명시
    • listener를 expose
      • name, protocol, port 명시
  • Gateway를 reference로 하는 HTTPRoute 리소스를 생성한다
    • parentRefs에 gateway 이름 명시
    • rules에 route로 넘길 backend Ref를 적어준다.

스크린샷 2025-01-08 오후 1 44 34스크린샷 2025-01-08 오후 1 44 43스크린샷 2025-01-08 오후 1 46 42스크린샷 2025-01-08 오후 1 47 43스크린샷 2025-01-08 오후 1 48 36스크린샷 2025-01-08 오후 1 48 48

 

  • request / response header를 변경해주거나
  • Route에 적용할 수 있는 SecurityPolicy를 생성할 수 있고, JWT Authentication을 Native하게 지원한다.
  • RateLimit 설정, CORS 세팅 가능
  • GRPC routing
  • HTTP Redirect 지원.

스크린샷 2025-01-08 오후 1 49 56스크린샷 2025-01-08 오후 1 52 14

 

Multi Cluster의 service Routing 기능

  • multi cluster service API of k8s 활용해서, cluster A의 서비스를 export -> cluster B에서 import할 수 있음.
  • yaml 예시는
    • cluster B에서 배포한 HTTPRoutes.
    • cluster A에서 특정 서비스 + path로 요청이 들어올 경우 cluster B로 routing되도록 만드는 예시

스크린샷 2025-01-08 오후 2 55 11스크린샷 2025-01-08 오후 2 56 17스크린샷 2025-01-08 오후 2 56 42

 

  • request mirroring: 특정 요청이 들어오면, backendRef에 정의된 리소스에도 동일한 요청 전달
  • traffic spliting
  • Observability: 그동안 안됐던 건데 이제 지원됨. envoy Access Log / grafana Loki

Q&A

Q. istio 같은 다른 솔루션 대신 envoy Gateway를 써야 하는 이유라면?

  • istio의 service mesh 기능이 필요없는 org에서 / traffic split이나 routing 위주의 옵션이 필요하다면 envoy Gateway가 적절한 선택.
  • lightweight, extensible, 필요한 기본기능은 다 있음

Q. Contour와의 차이는?

  • istio와 마찬가지로, envoy proxy의 또 다른 wrapper. envoy proxy외에도 이런저런 설정이 추가로 필요한 애들이다.
  • envoy gateway는 보다 Natively Supported, lightweight.
반응형