Envoy
고성능 L7 프록시
Envoy
Envoy는 고성능 L7 프록시로, 서비스 간 통신을 중계, 제어, 관찰하는 역할을 함.
원래 Lyft에서 개발되었으며, Istio를 비롯한 다양한 서비스 메쉬에서 사이드카 프록시로 사용됨.
Envoy is an L7 proxy and communication bus designed for large modern service oriented architectures.
비슷한 개념과 비교:
- Envoy vs NGINX: Envoy는 동적 설정, gRPC 지원, 메트릭 내장 등 클라우드 네이티브에 최적화됨.
- HAProxy vs Envoy: HAProxy는 L4/L7 모두 지원하지만 설정이 정적임. Envoy는 컨트롤 플레인과의 통합에 유리.
사용이 적합한 환경:
- 마이크로서비스 간 트래픽을 정교하게 제어해야 하는 경우.
- 서비스 메쉬 구성에서 프록시로 자동 주입되거나 API 게이트웨이로 활용할 때.
- 다양한 프로토콜(gRPC, HTTP/2 등)을 동시에 처리해야 할 때.
사용 방법:
단독 실행 (예: 로컬 테스트용)
1
envoy -c envoy.yaml
Istio 내 사이드카로 동작
Istio가 자동으로 생성하는 Envoy는 설정 파일 없이 제어 플레인(Pilot)을 통해 동적으로 설정됨.
Envoy 설정 예시 (envoy.yaml):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 10000 }
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
codec_type: AUTO
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: some_service }
http_filters:
- name: envoy.filters.http.router
This post is licensed under CC BY 4.0 by the author.