DEV Community

GyeongSeon
GyeongSeon

Posted on

Istio 핵심 개념 정리

Istio 쉽게 이해하기 — DevOps / Platform 엔지니어 관점 정리

한 줄 요약

Istio는 Sidecar(Envoy)를 통해 모든 서비스 간 트래픽을 통제하고, Istiod가 정책(config)을 내려 네트워크를 코드처럼 다루게 해주는 시스템이다.


1. 먼저 구조부터 이해하자


Client → Pod(App) → Envoy → 네트워크 → 상대 Envoy → 상대 App
↑
Istiod

Enter fullscreen mode Exit fullscreen mode
  • 모든 요청은 Envoy를 통과한다
  • Istiod는 Envoy에게 “어떻게 동작할지”를 알려준다

👉 핵심

애플리케이션이 아니라 네트워크 레이어에서 제어한다


2. Sidecar / Envoy 핵심 정리

Sidecar

  • Pod 안에서 앱 옆에 붙는 컨테이너
  • 트래픽을 가로채고 처리

Envoy

  • Istio가 사용하는 실제 프록시 엔진
  • HTTP / gRPC 이해
  • 라우팅 / 보안 / 메트릭 담당

👉 관계


Istio = Control Plane
Envoy = Data Plane

Enter fullscreen mode Exit fullscreen mode


`


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"] `

📌 역할

  • namespace 기반 접근 제어
  • service account 기반 제어

4.5 PeerAuthentication — "암호화 강제"

`yaml
kind: PeerAuthentication
spec:
mtls:
mode: STRICT
`

📌 역할

  • mTLS 필수 여부 설정

5. CRD를 하나의 흐름으로 보면

👉 이게 가장 중요하다


요청 흐름 (직관적으로)

`yaml

  1. Gateway → 요청 받음
  2. VirtualService → 어디로 보낼지 결정
  3. DestinationRule → 어떻게 보낼지 결정
  4. Envoy → 실제 전달
  5. 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개

  1. Envoy는 반드시 거친다
  2. Istiod는 설정을 내려준다
  3. CRD는 “역할 기반”으로 이해해야 한다

다음 글 추천

  • Istio 디버깅 가이드 (Envoy / mTLS / iptables)
  • Istio vs Ingress 실제 차이
  • Multi-tenant 환경에서 Istio 설계

Top comments (0)