개요

Envoy는 Lyft가 개발한 고성능 오픈소스 L7 프록시 및 서비스 메시 데이터플레인. 마이크로서비스 간 통신을 투명하게 처리하며 Istio의 사이드카 프록시로 가장 널리 사용.


핵심 개념

아키텍처

클라이언트
  → Listener (수신 포트/프로토콜)
    → Filter Chain (L4/L7 필터 파이프라인)
      → Route (요청 경로 매핑)
        → Cluster (업스트림 서버 그룹)
          → Endpoint (실제 인스턴스)

주요 구성 요소

구성요소설명
Listener수신 포트·프로토콜 설정
FilterHTTP 필터, 인증, 속도제한 등
RouteURL·헤더 기반 트래픽 라우팅
Cluster업스트림 서비스 그룹 (LB 설정)
Endpoint개별 서비스 인스턴스

xDS API (동적 설정)

Envoy는 정적 YAML 대신 xDS API로 실시간 설정 업데이트 가능:

API역할
LDSListener Discovery Service
RDSRoute Discovery Service
CDSCluster Discovery Service
EDSEndpoint Discovery Service
ADSAggregated Discovery Service (통합)

정적 설정 예시

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 8080
    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
          stat_prefix: ingress_http
          route_config:
            virtual_hosts:
            - name: backend
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                route: { cluster: service_cluster }
          http_filters:
          - name: envoy.filters.http.router
 
  clusters:
  - name: service_cluster
    type: STATIC
    load_assignment:
      cluster_name: service_cluster
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 8081

주요 기능

기능설명
로드 밸런싱Round Robin, Least Request, Ring Hash
서킷 브레이커연속 실패 시 트래픽 차단
재시도실패 요청 자동 재시도
타임아웃연결·요청 타임아웃 설정
TLSmTLS 지원 (서비스 메시)
관찰성Prometheus 메트릭, Zipkin/Jaeger 트레이싱

서비스 메시에서의 역할

[Pod A]                    [Pod B]
  App ↔ Envoy ──────── Envoy ↔ App
         ↑                  ↑
         └── Istio Control Plane (xDS)

Istio가 Envoy 사이드카를 자동 주입·설정 관리


관련 항목