Istio, Service Mesh
· 2분 읽기
마이크로서비스 아키텍처에서 서비스 간 통신은 빠르게 복잡해진다. Istio는 이 복잡성을 인프라 레벨에서 해결하는 서비스 메시(Service Mesh) 플랫폼이다.
Service Mesh?
서비스 메시는 마이크로서비스 간의 통신을 인프라 계층에서 투명하게 관리하는 전용 레이어이다.
Traceability 를 위한 레이어이다.
MSA 에서 애플리케이션이 증가하면 다음 문제가 발생한다:
-
서비스 간 통신 복잡성: N개의 서비스는 최대 N*(N-1)개의 통신 경로를 만든다
-
보안: 서비스 간 암호화, 인증, 인가를 각 서비스에서 개별 구현해야 한다
-
관측 어려움: 분산된 서비스에서 요청 추적과 장애 원인 파악이 어렵다
-
일관성: 재시도, 타임아웃, 서킷브레이커 등의 정책을 각 서비스에서 따로 구현하면 일관성이 깨진다
서비스 메시는 이 모든 것을 애플리케이션 코드 밖으로 분리한다.
Architecture
Istio는 데이터 플레인과 컨트롤 플레인으로 구성된다.
flowchart TB
subgraph "Control Plane"
Istiod["Istiod<br/>(Pilot + Citadel + Galley)"]
end
subgraph "Data Plane"
subgraph "Pod A"
AppA[App Container]
ProxyA[Envoy Sidecar]
end
subgraph "Pod B"
AppB[App Container]
ProxyB[Envoy Sidecar]
end
end
Istiod -->|설정 배포| ProxyA
Istiod -->|인증서 발급| ProxyB
ProxyA <-->|mTLS| ProxyB
AppA --> ProxyA
ProxyB --> AppB
데이터 플레인
-
Envoy Proxy가 각 Pod에 사이드카로 주입된다
-
모든 인바운드/아웃바운드 트래픽을 가로채어 처리한다
-
트래픽 제어, 정책 적용, 텔레메트리 수집을 수행한다
컨트롤 플레인 (Istiod)
-
기존에 분리되어 있던 Pilot, Citadel, Galley를 단일 바이너리(Istiod) 로 통합했다
-
서비스 디스커버리: 서비스 레지스트리 관리
-
설정 관리: 라우팅 규칙을 Envoy 설정으로 변환 및 배포
-
인증서 관리: mTLS용 인증서 자동 발급/갱신
참고로 Istio는 Gateway API를 완전 지원한다.