Istio, Service Mesh

· 2분 읽기

마이크로서비스 아키텍처에서 서비스 간 통신은 빠르게 복잡해진다. Istio는 이 복잡성을 인프라 레벨에서 해결하는 서비스 메시(Service Mesh) 플랫폼이다.

Service Mesh?

서비스 메시는 마이크로서비스 간의 통신을 인프라 계층에서 투명하게 관리하는 전용 레이어이다.

Traceability 를 위한 레이어이다.

MSA 에서 애플리케이션이 증가하면 다음 문제가 발생한다:

  1. 서비스 간 통신 복잡성: N개의 서비스는 최대 N*(N-1)개의 통신 경로를 만든다

  2. 보안: 서비스 간 암호화, 인증, 인가를 각 서비스에서 개별 구현해야 한다

  3. 관측 어려움: 분산된 서비스에서 요청 추적과 장애 원인 파악이 어렵다

  4. 일관성: 재시도, 타임아웃, 서킷브레이커 등의 정책을 각 서비스에서 따로 구현하면 일관성이 깨진다

서비스 메시는 이 모든 것을 애플리케이션 코드 밖으로 분리한다.

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를 완전 지원한다.

References