본문 바로가기
오픈소스/ServiceMesh

[ISTIO] ISTIO Architecture

by sangyeon 2022. 11. 24.
728x90

■ ISTIO 아키텍쳐
: Istio 서비스메쉬는 논리적으로 데이터플레인과 컨트롤프레인으로 나뉜다.


⒧ 데이터플레인은 사이드카로 배포된 Envoy-Proxy의 집합으로 구성된다. 이러한 프록시는 마이크로서비스 간의 모든 네트워크 통신을 조정하고 제어한다.  또한 모든 Mesh Traffic에 대한 원격 분석을 수집하고 보고한다.

⑵ 컨트롤 플레인은 트래픽을 라우트하도록 프록시를 구성하고 관리한다.

https://istio.io/latest/docs/ops/deployment/architecture/

 

■ 각 영역(Data/Control)별 핵심구성 요소에 대한 설명

 

⑴ Envoy(Proxy)

Envoy Proxy는 service mesh안의 모든 서비스들에 대한 모든 in/out bound 트래픽을 중재하기 위해 C++로 개발된 고성능 프록시 서버이다.

Envoy Proxy들은 데이터플레인 트래픽과 상호작용하는 유일한 Istio 컴포넌트이다. 또한 Envoy Proxy는 서비스에 대한 사이드카로 배포되어 다음과 같이 Envoy 기본 기능을 제공한다.

 

º Dynamic Service discovery

º Load Balancing

º TLS termination

º HTTP/2 and gRPC proxies

º Circuit breakers

º Health checks

º Staged rollouts with %-based traffic split

º Fault injection

º Many metrics

º 동적 Configuration API 제공

º 네트워크의 투명성을 목표

º 다양한 필터체인 지원

º L3/L4 필터

º HTTP L4 필터

 

 

(2) istio-proxy (sidecar, DataPlane)

º Golang으로 짜여져 있는 envoy를 래핑한 프록시

º envoy를 활용해 서비스앱의 사이드카 컨테이너로 활용

º 중앙 컨트롤플레인인 istiod와 통신하고 서비스 앱의 트래픽을 정해진 정책/필터에 따라 처리

º 관찰가시성을 위한 메트릭 제공

º 래핑 아이템으로 envoy를 택한 이유

  - API 기반 Hot reload 기능

  - 다양한 기능(L4, L7 필터 등)

  - 친절한 네트워크 메트릭 제공(투명한 네트워크)

º Pod 내 네트워크 인터페이스를 컨테이너끼리 공유하여 iptables를 조작하여 inbound/outbound 트래픽 모두 istio-proxy가 처리

º 서비스 앱의 세밀한 네트워킹 설정에 대한 책임을 가져옴

 

 

(3) istiod (Control-Plane)

Istiod는 서비스 검색, 구성 및 인증서 관리를 제공한다.

Istiod는 트래픽 동작을 제어하는 고급 라우팅 규칙을 Envoy-Specific Configurations로 변환하고 런타임에 사이드카로 동기화 및 전파한다.(Sync)

또한 Istiod의 Pilot은 플랫폼별 서비스 검색 메커니즘을 추상화하고 Envoy API를 준수하는 모든 사이드카가 사용할 수 있는 표준 형식으로 통합한다.

 

728x90

'오픈소스 > ServiceMesh' 카테고리의 다른 글

[ISTIO] ISTIO란(1)  (0) 2022.11.08