Istio는 Kubernetes 환경에서 서비스 간 통신을 제어하는 오픈소스 서비스 메시다. 코드 변경 없이 트래픽 관리, 상호 TLS 인증, 관찰 가능성, 서킷 브레이킹 등을 인프라 레벨에서 구현한다.
아키텍처
컨트롤 플레인 (istiod):
- Pilot: 서비스 디스커버리, 트래픽 규칙 배포
- Citadel: 인증서 관리 (mTLS)
- Galley: 설정 검증
데이터 플레인:
- 각 Pod에 Envoy 사이드카 자동 주입
- 모든 인바운드/아웃바운드 트래픽 가로채기
트래픽 관리
yaml
# VirtualService: 카나리 배포
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: test-user
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1
weight: 90
- destination:
host: reviews
subset: v2
weight: 10
---
# DestinationRule: 서킷 브레이킹
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
trafficPolicy:
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
baseEjectionTime: 30s
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
namespace: production
spec:
mtls:
mode: STRICT
관련 개념