Envoy
Envoy는 Kubernetes 환경에서 널리 사용되는 고성능 프록시 서버.
Envoy는 C++로 작성된 고성능 분산 프록시로, 대규모 마이크로서비스 아키텍처를 위해 설계되었다.
주요 특징
- 다양한 프로토콜 지원: HTTP, TCP, gRPC 등을 지원한다.
- 고급 로드 밸런싱: 다양한 로드 밸런싱 알고리즘을 제공한다.
- 동적 구성: 실행 중에 설정을 변경할 수 있는 동적 구성을 지원한다.
- 관찰 가능성: 상세한 메트릭과 로그를 제공하여 시스템 모니터링을 용이하게 한다.
Kubernetes에서의 Envoy 활용
Kubernetes 환경에서 Envoy는 주로 다음과 같은 방식으로 활용된다:
- 사이드카 프록시: 각 pod에 Envoy를 사이드카 컨테이너로 배포하여 서비스 간 통신을 관리한다.
- 인그레스 컨트롤러: 클러스터 외부에서 내부 서비스로의 트래픽을 관리한다.
- 서비스 메시: Istio와 같은 서비스 메시 솔루션의 데이터 플레인으로 사용된다.
Envoy의 주요 구성 요소
Envoy의 핵심 구성 요소는 다음과 같다:
- 리스너(Listener): 수신 연결을 처리한다.
- 필터(Filter): 트래픽을 처리하고 변형한다.
- 클러스터(Cluster): 업스트림 서비스를 정의한다.
Envoy의 동작 방식
- 트래픽 수신: 리스너가 들어오는 연결을 수락한다.
- 필터 체인 처리: 연결된 필터 체인을 통해 요청을 처리한다.
- 라우팅: 구성된 규칙에 따라 요청을 적절한 업스트림 클러스터로 라우팅한다.
- 로드 밸런싱: 선택된 클러스터 내에서 로드 밸런�ing 정책에 따라 요청을 분산한다.
Kubernetes에서의 Envoy 구성
Kubernetes에서 Envoy를 구성하는 방법은 다음과 같다:
- ConfigMap 사용: Envoy 설정을 ConfigMap으로 관리하고 pod에 마운트한다.
- CRD(Custom Resource Definition) 사용: Istio와 같은 서비스 메시 솔루션을 통해 Envoy를 간접적으로 구성한다.
Envoy의 장점
- 높은 성능: C++로 작성되어 뛰어난 성능을 제공한다.
- 유연성: 다양한 프로토콜과 기능을 지원하여 다양한 사용 사례에 적용 가능하다.
- 동적 구성: 실시간으로 설정을 변경할 수 있어 운영의 유연성을 제공한다.
- 강력한 모니터링: 상세한 메트릭과 로그를 제공하여 시스템 관찰성을 향상시킨다.
용어 정리
용어 | 설명 |
---|---|