반응형
https://youtu.be/06ylMQrj0jU?si=Lcb1DcxyO0OPNC8B
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과의 연계 가능
아주 일반적인 형태.
- 외부 트래픽이 오면, Envoy Proxy를 통과해서 user app으로 전달된다.
- Envoy Proxy 관련 설정은 gateway에서 관리한다. static / dynamic
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로 관리할 수 있음.
Envoy에서 지원하는 Extension도 사용할 수 있다. 위 예시는 OAuth2Filter extension을 추가한 것.
Features
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를 적어준다.
- request / response header를 변경해주거나
- Route에 적용할 수 있는 SecurityPolicy를 생성할 수 있고, JWT Authentication을 Native하게 지원한다.
- RateLimit 설정, CORS 세팅 가능
- GRPC routing
- HTTP Redirect 지원.
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되도록 만드는 예시
- 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.
반응형
'학습일지 > 네트워크' 카테고리의 다른 글
우아콘 2024 - 배달의민족 API Gateway (3) | 2024.12.18 |
---|---|
KubeCon 2019 - The story of Why we migrate to gRPC and How we go about it (Spoti (0) | 2022.10.12 |
KubeCon 2018 - Using gRPC for long-lived and Streaming RPCs (0) | 2022.09.12 |
Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 2. 활용 (0) | 2022.06.13 |
Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 1. 기술 (0) | 2022.06.11 |