Envoy 프록시

Envoy 프록시

Cilium과 함께 제공되는 Envoy 프록시가 어떻게 배포되고 L7 정책을 시행하는지 설명하는 문서예요. Cilium Agent 파드 안에 내장되거나 독립된 DaemonSet으로 운영될 수 있어요.

출처: Envoy

본문

Cilium과 함께 제공되는 Envoy 프록시는 최소한의 Envoy 확장과 커스텀 정책 시행 필터로 빌드됐어요. Cilium은 이 최소 배포판을 호스트 프록시로 사용해, 클러스터의 네트워크 정책에 지정된 HTTP 및 기타 L7 정책을 시행해요. Cilium 프록시는 Cilium 이미지 안에 배포돼요.

버전 호환성 매트릭스에 대한 자세한 내용은 Cilium Proxy 문서를 참고하세요.

DaemonSet으로 배포 (Deployment as DaemonSet)

배경 (Background)

Kubernetes 클러스터에서 Cilium L7 기능(Ingress, Gateway API, L7 기능이 있는 네트워크 정책, L7 프로토콜 가시성)이 활성화되거나 설치되면, Cilium 에이전트가 Cilium 에이전트 파드 안에서 별도 프로세스로 Envoy 프록시를 시작해요.

그 Envoy 프록시 인스턴스는 해당 노드의 일치하는 모든 L7 요청을 프록시하는 책임을 지게 돼요. 결과적으로, 정책의 대상이 되는 L7 트래픽은 Cilium 에이전트 파드의 가용성에 의존하게 돼요.

또는 Cilium Agent 파드 안에서 실행하는 대신, cilium-envoy라는 독립적으로 생명주기가 관리되는 DaemonSet으로 Envoy 프록시를 배포할 수도 있어요.

두 배포 모드 모두 Cilium 에이전트와 Envoy 프록시 간의 통신은 UNIX 도메인 소켓을 통해 이뤄져요. 접근 로그(예: L7 프로토콜 가시성) 스트리밍, xDS를 통한 구성 갱신, admin 인터페이스 접근 등이 모두 해당돼요.

UNIX 도메인 소켓을 사용하기 때문에, 호스트에서 SELinux가 활성화된 경우 Envoy DaemonSet과 Cilium Agent는 호환 가능한 타입을 가져야 해요. 별도로 지정하지 않으면 둘 다 매우 높은 권한의 타입 spc_t를 사용해요. SELinux는 Red Hat OpenShift Container Platform에서 기본적으로 활성화돼 있어요.

Envoy DaemonSet 활성화 및 구성 (Enable and configure Envoy DaemonSet)

전용 Envoy 프록시 DaemonSet을 활성화하려면 Helm 값 envoy.enabled를 true로 설정해 Cilium을 설치하세요. Envoy 프록시 DaemonSet을 구성하는 방법에 대한 자세한 내용은 Helm Reference(envoy.* 키)를 참고하세요.

잠재적 이점 (Potential Benefits)

  • Cilium Agent가 재시작돼도(예: 업그레이드) Envoy가 프록시하는 실시간 트래픽에는 영향이 없어요.
  • Envoy 패치 릴리스 업그레이드가 Cilium Agent에 영향을 주지 않아요.
  • 성능 격리를 위해 Envoy와 Cilium Agent에 별도의 CPU/메모리 제한을 둘 수 있어요.
  • Envoy 애플리케이션 로그가 Cilium Agent의 로그와 섞이지 않아요.
  • Envoy 프록시 전용 헬스 프로브가 있어요.
  • Cilium 설치 중 Envoy 프록시를 명시적으로 배포할 수 있어요(임베디드 모드의 요청 시 배포와 대비).

Cilium Envoy가 동작하는 모습을 보고 싶다면 eCHO episode 127: Cilium & Envoy를 확인해 보세요.

더 알아보기 (Learn more)