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와 연동하여 서비스 상태 시각화