Istio 개요

Istio 개요

1️⃣ Istio란? (서비스 메쉬 개념과 필요성)

1 서비스 메쉬란?

서비스 메쉬(Service Mesh)는 마이크로서비스 간의 통신을 제어하고 최적화하는 계층입니다. 이는 네트워크를 통해 서비스 간 트래픽을 관리하는 역할을 하며, 다음과 같은 기능을 제공합니다.

  • 트래픽 관리: 서비스 간 부하 분산, 라우팅, 페일오버
  • 보안 강화: TLS를 통한 서비스 간 암호화, 인증 및 권한 부여
  • 관찰 가능성(Observability): 서비스 간 트래픽 모니터링 및 로깅
  • 정책 적용: 트래픽 제한, 인증 정책, 네트워크 격리

Istio는 이러한 서비스 메쉬 개념을 구현하는 대표적인 오픈소스 프로젝트입니다.

2 Istio가 필요한 이유

마이크로서비스 아키텍처에서는 수십~수백 개의 서비스가 상호작용하며, 다음과 같은 문제들이 발생할 수 있습니다.

서비스 간 트래픽 제어 어려움: A 서비스가 B 서비스를 호출하는 방식이 고정적일 경우, 장애 발생 시 대체 경로를 설정하기 어렵습니다.
보안 문제: 마이크로서비스 간 통신이 암호화되지 않으면, 데이터가 노출될 위험이 큽니다.
로깅 및 모니터링 부족: 장애 발생 시 어느 서비스에서 문제가 발생했는지 파악하기 어렵습니다.

Istio는 이러한 문제를 해결하는 강력한 서비스 메쉬 솔루션입니다.


2️⃣ Istio vs Kubernetes Ingress vs API Gateway 비교

1 Kubernetes Ingress란?

  • Kubernetes에서 외부 트래픽을 클러스터 내부 서비스로 전달하는 역할
  • Ingress Controller(예: Nginx, Traefik)를 사용하여 트래픽을 라우팅
  • 기본적인 L7 라우팅 기능 제공 (도메인 기반 라우팅, TLS termination 등)

2 API Gateway란?

  • 클라이언트 요청을 여러 백엔드 서비스로 분산하는 중앙 집중식 엔트리 포인트
  • 인증, 요청 변환, 속도 제한(Rate Limiting), 캐싱 등의 기능 제공
  • 예: Kong, Apigee, AWS API Gateway

3 Istio와의 차이점

기능 Istio (Service Mesh) Kubernetes Ingress API Gateway
주요 목적 서비스 간 통신 제어 외부 트래픽 관리 API 관리
트래픽 라우팅 고급 라우팅 (A/B 테스트, Canary 배포) 기본 L7 라우팅 API 버전 관리, 요청 변환
보안 서비스 간 mTLS 인증 TLS Termination 지원 JWT, OAuth 인증
모니터링 & 로깅 강력한 Observability (Tracing, Metrics) 기본 로깅 제공 API 요청 로깅
정책 적용 서비스 간 Rate Limit, RBAC 없음 API 별 Rate Limit

Istio는 서비스 간 통신을 세밀하게 제어하는 반면, Ingress는 외부 트래픽을 관리하는 역할을 수행합니다. API Gateway는 API 수준에서 보안 및 요청 관리를 제공합니다.


3️⃣ Istio 주요 기능 및 특징 (트래픽 관리, 보안, 모니터링 등)

1 트래픽 관리 (Traffic Management)

가중치 기반 라우팅: 특정 버전에 트래픽을 더 많이 할당 가능
Canary 배포: 새로운 버전을 점진적으로 배포하며 성능 테스트 가능
A/B 테스트: 특정 사용자 그룹에게만 새로운 기능 제공

예제:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
    - my-service.default.svc.cluster.local
  http:
    - route:
        - destination:
            host: my-service
            subset: v1
          weight: 80
        - destination:
            host: my-service
            subset: v2
          weight: 20

2 보안(Security)

mTLS (Mutual TLS): 서비스 간 암호화된 통신
RBAC (Role-Based Access Control): 역할 기반 접근 제어
JWT 인증 지원

3 모니터링 & 로깅 (Observability)

Distributed Tracing (분산 추적): Jaeger, Zipkin과 연동하여 요청 흐름 분석
Metrics & Logging: Grafana, Prometheus로 서비스 상태 시각화
Service Graph: 서비스 간 트래픽 흐름 시각화


4️⃣ Istio 아키텍처 개요 (Control Plane & Data Plane)

1 Istio 아키텍처 개요

Istio는 **Control Plane(제어 평면)**과 **Data Plane(데이터 평면)**으로 구성됩니다.

  • Control Plane: 정책을 설정하고 트래픽을 관리
  • Data Plane: 실제 트래픽을 처리하고 요청을 라우팅

2 구성 요소

🟢 Control Plane (제어 평면)

  • Pilot: 서비스 디스커버리 및 트래픽 정책 관리
  • Citadel: 보안 및 인증 관리 (mTLS, RBAC)
  • Galley: 구성 검증 및 관리
  • Mixer: 모니터링 및 정책 적용

🟡 Data Plane (데이터 평면)

  • Envoy Proxy: 각 서비스에 사이드카(Sidecar)로 배포되어 트래픽을 제어

5️⃣ Istio 주요 컴포넌트 (Envoy, Pilot, Galley, Citadel, Mixer)

1 Envoy

  • Istio의 사이드카 프록시 역할
  • 트래픽 라우팅, 부하 분산, 보안 처리
  • 서비스 간 TLS 암호화 및 인증 수행

2 Pilot

  • 서비스 디스커버리 및 트래픽 정책을 Envoy에게 전달
  • A/B 테스트, Canary 배포 등을 관리

3 Galley

  • Istio의 설정 데이터를 검증 및 관리
  • Kubernetes의 CRD를 수집하여 Istio 설정에 반영

4 Citadel

  • 서비스 간 인증 및 암호화(mTLS) 관리
  • JWT 토큰 및 서비스 인증서 발급

5 Mixer

  • 모니터링 및 정책 적용 담당
  • Prometheus, Grafana와 연동하여 서비스 상태 시각화
RSS Feed
마지막 수정일자