Advanced
Istio의 고급 기능들을 다룹니다. 이 섹션에서는 Ambient Mode, Multi-cluster, EnvoyFilter, gRPC/WebSocket 지원 등 고급 주제들을 다룹니다.
목차
- Ambient Mode
- Multi-cluster
- EnvoyFilter
- DNS Caching
- gRPC
- WebSocket
- Sidecar Injection
- Argo Rollouts Integration
- Zone-Aware Argo Rollouts
- KEDA Autoscaling
개요
이 섹션은 Istio의 고급 기능과 프로덕션 환경에서 필요한 심화 주제들을 다룹니다.
주요 주제
1. Ambient Mode
Istio 1.28+에서 도입된 새로운 데이터 플레인 아키텍처입니다.
Sidecar Mode vs Ambient Mode
| 특성 | Sidecar Mode | Ambient Mode |
|---|---|---|
| 아키텍처 | 각 파드에 Envoy 프록시 주입 | ztunnel (node-level) + waypoint (optional) |
| 리소스 사용 | 높음 (파드당 프록시) | 낮음 (노드당 프록시) |
| 배포 복잡도 | 높음 (재배포 필요) | 낮음 (투명하게 적용) |
| 성능 | 약간 느림 (hop 추가) | 빠름 (L4만 필요 시) |
| 기능 | 모든 기능 지원 | L4 기본, L7은 waypoint 필요 |
Ambient Mode 아키텍처
자세한 내용: Ambient Mode 상세 가이드
2. Multi-cluster
여러 Kubernetes 클러스터를 하나의 서비스 메시로 연결합니다.
Multi-cluster 토폴로지
사용 사례:
- 다중 리전 배포
- 재해 복구 (DR)
- Blue/Green 클러스터 배포
- 환경 분리 (dev/staging/prod)
자세한 내용: Multi-cluster 설정 가이드
3. EnvoyFilter
Envoy 프록시 구성을 직접 커스터마이즈합니다.
EnvoyFilter 사용 사례
# 커스텀 헤더 추가
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: custom-header
spec:
workloadSelector:
labels:
app: myapp
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_OUTBOUND
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.lua
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
inline_code: |
function envoy_on_request(request_handle)
request_handle:headers():add("x-custom-header", "value")
end주요 사용 사례:
- Rate Limiting
- 커스텀 인증/권한 부여
- 헤더 조작
- 요청/응답 변환
- WASM 플러그인
자세한 내용: EnvoyFilter 가이드
4. DNS Caching
DNS 조회를 캐싱하여 성능을 최적화합니다.
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: dns-cache
spec:
host: external-api.example.com
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
http:
http1MaxPendingRequests: 100이점:
- DNS 조회 지연시간 감소
- 외부 DNS 서버 부하 감소
- 일관된 DNS 응답
자세한 내용: DNS Caching 가이드
5. gRPC 지원
gRPC 프로토콜을 위한 최적화된 라우팅과 로드 밸런싱을 제공합니다.
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: grpc-service
spec:
hosts:
- grpc-service
http:
- match:
- uri:
prefix: /mypackage.MyService/
route:
- destination:
host: grpc-service
subset: v2주요 기능:
- HTTP/2 기반 로드 밸런싱
- gRPC 헬스 체크
- Deadlines 및 Retries
- 메타데이터 기반 라우팅
자세한 내용: gRPC 가이드
6. WebSocket 지원
WebSocket 연결을 위한 특별한 처리를 제공합니다.
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: websocket-service
spec:
hosts:
- ws.example.com
http:
- match:
- headers:
upgrade:
exact: websocket
route:
- destination:
host: websocket-service주요 기능:
- 장시간 연결 유지
- Connection Pool 설정
- Idle Timeout 관리
자세한 내용: WebSocket 가이드
7. Sidecar Injection
Sidecar 프록시 주입 메커니즘과 커스터마이제이션을 다룹니다.
Injection 방식
자세한 내용: Sidecar Injection 가이드
8. Argo Rollouts Integration
Argo Rollouts와 Istio를 통합하여 고급 배포 전략을 구현합니다.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: myapp
spec:
strategy:
canary:
trafficRouting:
istio:
virtualService:
name: myapp-vsvc
routes:
- primary
steps:
- setWeight: 10
- pause: {duration: 2m}
- setWeight: 50
- pause: {duration: 2m}주요 기능:
- 메트릭 기반 자동 Canary 배포
- Analysis 및 자동 롤백
- Blue/Green 배포
- Progressive Delivery
자세한 내용: Argo Rollouts 통합 가이드
9. Zone-Aware Argo Rollouts
Zone을 인식하여 가용 영역별로 Canary 배포를 수행합니다.
자세한 내용: Zone-Aware Argo Rollouts 가이드
10. KEDA Autoscaling
KEDA를 활용하여 Istio 메트릭 기반 오토스케일링을 구현합니다.
KEDA vs HPA
| 기능 | Kubernetes HPA | KEDA |
|---|---|---|
| 메트릭 소스 | CPU/Memory + Custom Metrics | 60+ Scaler (Prometheus, CloudWatch, Kafka 등) |
| Scale to Zero | ❌ 미지원 (최소 1) | ✅ 지원 (Pod 0개 가능) |
| 외부 메트릭 | ⚠️ Metrics Server 필요 | ✅ 네이티브 지원 |
| 복잡한 쿼리 | ❌ 제한적 | ✅ PromQL, CloudWatch Insights |
KEDA 아키텍처
주요 스케일링 전략
# RPS 기반 스케일링
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: reviews-rps-scaler
spec:
scaleTargetRef:
name: reviews
triggers:
- type: prometheus
metadata:
query: |
sum(rate(istio_requests_total{
destination_workload="reviews"
}[1m]))
threshold: '100'스케일링 메트릭:
- RPS (Requests Per Second): 초당 요청 수 기반
- Latency (P50/P95/P99): 지연 시간 백분위수 기반
- Error Rate: 5xx 에러율 기반
- Circuit Breaker: Circuit Breaker 상태 기반
- Composite Metrics: 복합 메트릭 조합
메트릭 소스:
- Prometheus: 실시간 Istio/Envoy 메트릭
- AWS CloudWatch: ADOT Collector를 통한 CloudWatch 메트릭
자세한 내용: KEDA Autoscaling 가이드
학습 순서
- Ambient Mode - 새로운 아키텍처 이해
- Multi-cluster - 다중 클러스터 구성
- EnvoyFilter - 고급 커스터마이제이션
- Sidecar Injection - Injection 메커니즘
- gRPC - gRPC 프로토콜 지원
- WebSocket - WebSocket 지원
- DNS Caching - 성능 최적화
- Argo Rollouts - Progressive Delivery
- Zone-Aware Argo Rollouts - 가용 영역별 배포
- KEDA Autoscaling - 메트릭 기반 오토스케일링
참고 자료
퀴즈
이 장에서 배운 내용을 테스트하려면 Istio Advanced 퀴즈를 풀어보세요.