Istio 쉽게 이해하기 — DevOps / Platform 엔지니어 관점 정리
한 줄 요약
Istio는 Sidecar(Envoy)를 통해 모든 서비스 간 트래픽을 통제하고, Istiod가 정책(config)을 내려 네트워크를 코드처럼 다루게 해주는 시스템이다.
1. 먼저 구조부터 이해하자
Client → Pod(App) → Envoy → 네트워크 → 상대 Envoy → 상대 App
↑
Istiod
- 모든 요청은 Envoy를 통과한다
- Istiod는 Envoy에게 “어떻게 동작할지”를 알려준다
👉 핵심
애플리케이션이 아니라 네트워크 레이어에서 제어한다
2. Sidecar / Envoy 핵심 정리
Sidecar
- Pod 안에서 앱 옆에 붙는 컨테이너
- 트래픽을 가로채고 처리
Envoy
- Istio가 사용하는 실제 프록시 엔진
- HTTP / gRPC 이해
- 라우팅 / 보안 / 메트릭 담당
👉 관계
Istio = Control Plane
Envoy = Data Plane
`
3. Istiod의 “정책”은 무엇인가?
👉 핵심
Kubernetes CRD로 정의된 설정을 Envoy가 이해할 수 있는 config로 변환해서 내려준다
4. CRD를 “역할 중심”으로 이해하기
CRD를 하나씩 외우면 헷갈린다.
👉 역할 기준으로 보면 바로 이해된다.
4.1 Gateway — "입구"
👉 외부에서 들어오는 요청을 받는 지점
`yaml
kind: Gateway
spec:
servers:
- port:
number: 80
protocol: HTTP
hosts:
- "*"
- "*"
📌 비유
Nginx / LoadBalancer
4.2 VirtualService — "어디로 보낼지 결정"
👉 요청을 어떤 서비스로 보낼지 정의
`yaml
kind: VirtualService
spec:
hosts:
- my-service http:
- route:
- destination: host: my-service subset: v1 weight: 90
- destination:
host: my-service
subset: v2
weight: 10
`
📌 비유
API Gateway 라우팅 규칙
📌 역할
- Canary 배포
- A/B 테스트
- Path 기반 라우팅
4.3 DestinationRule — "어떻게 보낼지 결정"
👉 선택된 서비스에 대해 전송 방식 정의
`yaml
kind: DestinationRule
spec:
host: my-service
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
tls:
mode: ISTIO_MUTUAL
`
📌 역할
- 로드밸런싱 방식
- mTLS 적용
- connection pool / retry
4.4 AuthorizationPolicy — "접근 가능한지 검사"
👉 요청을 허용할지 차단할지 결정
`yaml
kind: AuthorizationPolicy
spec:
rules:
- from:
- source:
namespaces: ["frontend"]
`
- source:
namespaces: ["frontend"]
📌 역할
- namespace 기반 접근 제어
- service account 기반 제어
4.5 PeerAuthentication — "암호화 강제"
`yaml
kind: PeerAuthentication
spec:
mtls:
mode: STRICT
`
📌 역할
- mTLS 필수 여부 설정
5. CRD를 하나의 흐름으로 보면
👉 이게 가장 중요하다
요청 흐름 (직관적으로)
`yaml
- Gateway → 요청 받음
- VirtualService → 어디로 보낼지 결정
- DestinationRule → 어떻게 보낼지 결정
- Envoy → 실제 전달
- AuthorizationPolicy → 허용 여부 검사
`
6. 트래픽 가로채기 (iptables)
👉 중요 포인트
- 앱이 Envoy로 보내는 것이 아님
- OS가 강제로 Envoy로 보냄
`plaintext
App → iptables → Envoy → 외부
`
👉 결과
Envoy를 절대 우회할 수 없음
7. TLS / mTLS
TLS
`plaintext
Client → 암호화 → Server
`
mTLS
`plaintext
Client ↔ Server (서로 인증)
`
👉 Istio에서는
- 인증서 자동 발급
- Envoy가 처리
8. 배포 전략 (Istio 활용)
Canary 배포
`plaintext
v1 → 90%
v2 → 10%
`
A/B 테스트
`yaml
User A → v1
User B → v2
`
👉 핵심
코드 수정 없이 트래픽 분배
9. 전체 흐름 다이어그램 (핵심)
10. 한 번에 정리
`yaml
Istio =
- Envoy → 트래픽 처리
- Istiod → 정책 전달
- iptables → 강제 라우팅
- TLS → 암호화
- RBAC → 접근 제어
`
11. 실무 관점 핵심
👉 Istio는 단순 네트워크 도구가 아니라
"서비스 간 통신을 코드 없이 제어하는 플랫폼"
12. 이 글에서 중요한 포인트 3개
- Envoy는 반드시 거친다
- Istiod는 설정을 내려준다
- CRD는 “역할 기반”으로 이해해야 한다
다음 글 추천
- Istio 디버깅 가이드 (Envoy / mTLS / iptables)
- Istio vs Ingress 실제 차이
- Multi-tenant 환경에서 Istio 설계

Top comments (0)