Ingress NGINX 아키텍처
Ingress NGINX는 Kubernetes 클러스터 내에서 HTTP(S) 트래픽을 관리하는 API 게이트웨이로 동작한다. Kubernetes Ingress 리소스를 감시하여 호스트 기반 라우팅, 경로 기반 라우팅, TLS/SSL 종료를 지원한다. 컨트롤러는 Ingress 리소스 변경 시 /etc/nginx/nginx.conf 설정 파일을 재작성하고, Lua 기반의 동적 로드 밸런싱 서브시스템(OpenResty Lua 런타임)을 통해 설정 재로드 없이 업스트림 엔드포인트 추가·제거를 처리한다.
Envoy 프록시 아키텍처
Envoy는 C++로 작성된 L3/L4 핵심 프록시이며, HTTP L7 필터 레이어를 추가로 지원하는 범용 데이터 플레인이다. xDS API를 통한 동적 구성 업데이트로 프록시 재시작 없이 리스너, 클러스터, 라우트를 즉시 적용한다. 멀티스레드 아키텍처(관리 스레드 + 워커 스레드)로 각 신규 연결을 워커 스레드에 할당하여 확장성을 극대화한다.
핵심 운영 차이점
설정 관리: NGINX는 ConfigMap과 Annotation 기반의 선언형 설정을 Ingress 리소스로 관리하며, Envoy는 제어 평면(Istio Istiod, Contour 등)으로부터 런타임에 구성을 수신한다. 헬스 체크: NGINX는 Kubernetes Endpoints API를 1~2초 주기로 폴링하여 엔드포인트 동기화를 수행하고, Envoy는 액티브/패시브 헬스 체킹과 아웃라이어 감지를 통해 최종 일관성 방식을 구현한다. 필터 모델: NGINX는 프로토콜별 고정 필터 세트를 제공하고, Envoy는 TCP/UDP/HTTP 필터 체인과 WebAssembly 확장을 통해 광범위한 프로토콜 지원 및 커스터마이제이션을 가능하게 한다.