아키텍처

아키텍처 (Architecture)

Istio 서비스 메시는 논리적으로 데이터 플레인(data plane) 과 컨트롤 플레인(control plane) 으로 나뉘어요.

출처: Istio 문서

본문

  • 데이터 플레인은 사이드카로 배포되는 지능형 프록시(Envoy)들의 집합이에요. 이 프록시들은 마이크로서비스 사이의 모든 네트워크 통신을 중재하고 제어해요. 또한 메시 전체 트래픽에 대한 텔레메트리를 수집하고 보고해요.
  • 컨트롤 플레인은 프록시들을 관리하고 트래픽을 라우팅하도록 구성해줘요.

다음 다이어그램은 각 플레인을 구성하는 다양한 컴포넌트들을 보여줘요.

컴포넌트 (Components)

Envoy

Istio는 확장된 버전의 Envoy 프록시를 사용해요. Envoy는 서비스 메시의 모든 서비스를 위한 인바운드/아웃바운드 트래픽을 중재하도록 C++로 개발된 고성능 프록시예요. Envoy 프록시는 데이터 플레인 트래픽과 상호작용하는 유일한 Istio 컴포넌트예요.

Envoy 프록시는 서비스에 사이드카로 배포되어, Envoy의 다양한 내장 기능으로 서비스를 논리적으로 확장해줘요. 예를 들어:

  • 동적 서비스 디스커버리 (Dynamic service discovery)
  • 로드 밸런싱 (Load balancing)
  • TLS 종료 (TLS termination)
  • HTTP/2와 gRPC 프록시
  • 서킷 브레이커 (Circuit breakers)
  • 헬스 체크 (Health checks)
  • % 기반 트래픽 분할을 통한 단계적 배포 (Staged rollouts)
  • 장애 주입 (Fault injection)
  • 풍부한 메트릭 (Rich metrics)

이런 사이드카 배포 덕분에 Istio는 정책 결정을 강제하고, 모니터링 시스템으로 보내 메시 전체의 동작 정보를 제공할 수 있는 풍부한 텔레메트리를 추출할 수 있어요.

사이드카 프록시 모델은 또한 코드를 재설계하거나 다시 작성할 필요 없이 기존 배포에 Istio 기능을 추가할 수 있게 해줘요.

Envoy 프록시가 가능하게 하는 Istio 기능과 태스크로는 다음이 있어요:

  • 트래픽 제어 기능: HTTP, gRPC, WebSocket, TCP 트래픽에 대한 풍부한 라우팅 규칙으로 세밀한 트래픽 제어 강제.
  • 네트워크 복원력 기능: 재시도, 장애 조치(failover), 서킷 브레이커, 장애 주입 설정.
  • 보안 및 인증 기능: 보안 정책 강제, 구성 API를 통해 정의된 접근 제어와 레이트 리밋 강제.
  • WebAssembly 기반 플러그형 확장 모델: 메시 트래픽에 대한 커스텀 정책 강제와 텔레메트리 생성 가능.

Istiod

Istiod는 서비스 디스커버리, 구성, 인증서 관리를 제공해요.

Istiod는 트래픽 동작을 제어하는 높은 수준의 라우팅 규칙을 Envoy 전용 구성으로 변환하고, 런타임에 사이드카로 전파해요. 플랫폼 특정 서비스 디스커버리 메커니즘을 추상화해서, Envoy API를 준수하는 어떤 사이드카든 사용할 수 있는 표준 형식으로 통합해요.

Istio는 Kubernetes나 VM 같은 여러 환경에 대한 디스커버리를 지원할 수 있어요.

Istio의 트래픽 관리 API를 사용해 Istiod에 지시해서 Envoy 구성을 다듬고, 메시의 트래픽에 대해 더 세밀한 제어를 행사할 수 있어요.

Istiod의 보안 기능은 내장된 신원 및 자격 증명 관리로 강력한 서비스 간 및 최종 사용자 인증을 가능하게 해요. Istio를 사용해 메시의 암호화되지 않은 트래픽을 암호화로 업그레이드할 수 있어요. 운영자는 상대적으로 불안정한 3계층 또는 4계층 네트워크 식별자 대신 서비스 신원에 기반한 정책을 강제할 수 있어요. 또한 Istio의 인가 기능을 사용해 누가 여러분의 서비스에 접근할 수 있는지 제어할 수 있어요.

Istiod는 인증 기관(CA) 역할을 하며 데이터 플레인에서 안전한 mTLS 통신을 허용하는 인증서를 생성해줘요.

더 알아보기 (Learn more)