본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout
TechProjectsBooksAbout
© 2026 Kreath. All rights reserved.
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 3장: Istio 심층 분석 - 아키텍처와 핵심 기능
2026년 4월 16일·인프라·

3장: Istio 심층 분석 - 아키텍처와 핵심 기능

Istio의 내부 아키텍처, Ambient 모드와 사이드카 모드의 비교, 설치와 기본 설정까지 Istio의 핵심을 깊이 있게 분석합니다.

10분485자6개 섹션
kubernetesinfrastructureobservabilitysecurityperformance
공유
service-mesh3 / 10
12345678910
이전2장: 서비스 메시 아키텍처 - 데이터 플레인과 컨트롤 플레인다음4장: Istio 트래픽 관리 - 라우팅, 로드 밸런싱, 카나리 배포

Istio는 2017년 Google, IBM, Lyft가 공동으로 발표한 이후 서비스 메시의 대명사로 자리 잡았습니다. CNCF Graduated 프로젝트로서 가장 풍부한 기능 세트와 가장 큰 커뮤니티를 보유하고 있습니다. 이 장에서는 Istio의 아키텍처를 심층 분석하고, 2024년 GA에 도달한 Ambient 모드를 중심으로 현대적인 Istio 활용법을 살펴보겠습니다.

Istio 아키텍처 개요

Istio의 아키텍처는 컨트롤 플레인과 데이터 플레인으로 나뉘며, 두 가지 운영 모드를 제공합니다.

사이드카 모드 (레거시)

전통적인 방식으로, 각 Pod에 Envoy 사이드카를 자동 주입합니다. Istiod가 모든 Envoy에 xDS 설정을 푸시합니다.

Ambient 모드 (권장)

2024년 11월 GA에 도달한 새로운 방식입니다. 사이드카를 제거하고 두 계층으로 분리합니다.

Ambient 모드 심층 분석

ztunnel: L4 보안 프록시

ztunnel(Zero Trust Tunnel)은 Rust로 작성된 경량 프록시로, 각 노드에 DaemonSet으로 배포됩니다.

핵심 기능:

  • mTLS 암호화/복호화 (SPIFFE 아이덴티티 기반)
  • TCP 레벨 트래픽 라우팅
  • L4 인가 정책 적용
  • TCP 메트릭 및 로그 수집

제공하지 않는 기능:

  • HTTP 라우팅, 헤더 기반 분기
  • 재시도, 타임아웃 (L7)
  • HTTP 레벨 인가 정책
  • 요청 수준 메트릭
네임스페이스를 Ambient 메시에 등록
yaml
apiVersion: v1
kind: Namespace
metadata:
  name: my-app
  labels:
    istio.io/dataplane-mode: ambient  # Ambient 모드 활성화

이 라벨 하나로 해당 네임스페이스의 모든 Pod 트래픽이 자동으로 ztunnel을 통과하며, mTLS가 적용됩니다. 애플리케이션 Pod를 재시작할 필요도 없습니다.

Waypoint Proxy: 선택적 L7 처리

L7 기능이 필요한 서비스에만 웨이포인트 프록시를 배포합니다. 네임스페이스 단위 또는 서비스 단위로 생성할 수 있습니다.

bash
# 네임스페이스 단위 Waypoint 생성
istioctl waypoint apply -n my-app
 
# 특정 서비스에만 Waypoint 적용
istioctl waypoint apply -n my-app --name reviews-waypoint

Waypoint 프록시는 Kubernetes Gateway API를 사용하여 배포됩니다.

Waypoint Gateway 리소스
yaml
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-app-waypoint
  namespace: my-app
  labels:
    istio.io/waypoint-for: service
spec:
  gatewayClassName: istio-waypoint
  listeners:
    - name: mesh
      port: 15008
      protocol: HBONE

성능 비교: 사이드카 vs Ambient

벤치마크 결과에 따르면 Ambient 모드는 사이드카 대비 극적인 성능 개선을 보여줍니다.

지표사이드카 모드Ambient (L4만)Ambient (L4+L7)
mTLS 지연 오버헤드166%8%~40%
Pod당 메모리~50MB0 (공유)Waypoint 공유
Pod 시작 시간 영향+2~5초없음없음
초당 쿼리 (QPS/코어)기준값+56%+20%
Info

Ambient 모드의 핵심 가치는 "점진적 도입"입니다. 모든 서비스에 mTLS를 무비용으로 적용하고(L4), HTTP 라우팅이나 인가 같은 고급 기능이 필요한 서비스에만 Waypoint를 추가하면 됩니다.

Istio 핵심 CRD

Istio는 Kubernetes CRD(Custom Resource Definition)를 통해 트래픽 관리, 보안, 관측 정책을 선언적으로 정의합니다.

VirtualService

서비스로 들어오는 트래픽의 라우팅 규칙을 정의합니다.

VirtualService 예시
yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
    - match:
        - headers:
            end-user:
              exact: jason
      route:
        - destination:
            host: reviews
            subset: v2
    - route:
        - destination:
            host: reviews
            subset: v1

이 예시는 end-user: jason 헤더가 있는 요청을 v2로, 나머지를 v1으로 라우팅합니다.

DestinationRule

대상 서비스에 대한 트래픽 정책(로드 밸런싱, 서킷 브레이커, 서브셋)을 정의합니다.

DestinationRule 예시
yaml
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        h2UpgradePolicy: DEFAULT
        http1MaxPendingRequests: 100
    outlierDetection:
      consecutive5xxErrors: 5
      interval: 30s
      baseEjectionTime: 30s
  subsets:
    - name: v1
      labels:
        version: v1
    - name: v2
      labels:
        version: v2

AuthorizationPolicy

서비스 간 접근 제어 정책을 정의합니다.

AuthorizationPolicy 예시
yaml
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: reviews-policy
  namespace: my-app
spec:
  selector:
    matchLabels:
      app: reviews
  action: ALLOW
  rules:
    - from:
        - source:
            principals: ["cluster.local/ns/my-app/sa/productpage"]
      to:
        - operation:
            methods: ["GET"]
            paths: ["/reviews/*"]

이 정책은 productpage 서비스 어카운트에서 오는 GET 요청만 reviews 서비스에 허용합니다.

PeerAuthentication

mTLS 모드를 설정합니다.

PeerAuthentication - 메시 전체 Strict mTLS
yaml
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT  # 모든 트래픽에 mTLS 강제

Istio 설치와 프로파일

Istio는 istioctl을 통해 설치하며, 용도에 따른 설치 프로파일을 제공합니다.

bash
# Ambient 프로파일로 설치 (권장)
istioctl install --set profile=ambient -y
 
# 설치 확인
istioctl verify-install
kubectl get pods -n istio-system

주요 설치 프로파일:

프로파일구성용도
ambientIstiod + ztunnel + istio-cniAmbient 모드 (권장)
defaultIstiod + Ingress Gateway사이드카 모드 기본
demo모든 컴포넌트 + 트레이싱데모/학습
minimalIstiod만커스텀 구성의 시작점

Istio와 Kubernetes Gateway API

Istio는 전통적인 자체 CRD(VirtualService, Gateway) 외에도 Kubernetes Gateway API를 지원합니다. Gateway API는 Kubernetes 표준으로 자리 잡고 있어, 향후 Istio CRD보다 Gateway API가 주된 설정 방식이 될 전망입니다.

Gateway API를 사용한 HTTP 라우팅
yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: reviews-route
spec:
  parentRefs:
    - name: my-gateway
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /reviews
      backendRefs:
        - name: reviews-v1
          port: 8080
          weight: 90
        - name: reviews-v2
          port: 8080
          weight: 10
Tip

신규 프로젝트에서는 Gateway API를 우선 사용하는 것을 권장합니다. Istio의 VirtualService/DestinationRule은 Gateway API로 표현하기 어려운 고급 기능(세밀한 폴트 인젝션, 미러링 등)에만 보조적으로 사용하세요.

핵심 요약

  • Istio는 Istiod(컨트롤 플레인)와 Envoy/ztunnel(데이터 플레인)로 구성됩니다
  • Ambient 모드는 사이드카 없이 ztunnel(L4) + Waypoint(L7) 구조로 운영하며, GA에 도달하여 신규 배포의 권장 방식입니다
  • mTLS 오버헤드가 166%에서 8%로 극적으로 감소합니다
  • VirtualService, DestinationRule, AuthorizationPolicy 등 CRD로 선언적 설정이 가능합니다
  • Kubernetes Gateway API가 점차 Istio 자체 CRD를 대체하는 추세입니다

다음 장에서는 Istio의 트래픽 관리 기능을 실전 시나리오와 함께 깊이 있게 다루겠습니다.

이 글이 도움이 되셨나요?

관련 글

인프라

4장: Istio 트래픽 관리 - 라우팅, 로드 밸런싱, 카나리 배포

Istio의 트래픽 관리 기능을 실전 시나리오로 살펴봅니다. 가중치 기반 라우팅, 카나리 배포, 서킷 브레이커, 폴트 인젝션, 트래픽 미러링까지.

2026년 4월 18일·12분
인프라

2장: 서비스 메시 아키텍처 - 데이터 플레인과 컨트롤 플레인

서비스 메시의 핵심 구성요소인 데이터 플레인과 컨트롤 플레인의 역할, Envoy 프록시의 내부 구조, 그리고 다양한 배포 모델을 분석합니다.

2026년 4월 13일·14분
인프라

5장: Linkerd - 경량 서비스 메시의 철학과 실전

Linkerd의 설계 철학, Rust 기반 마이크로 프록시 아키텍처, 설치와 운영, 그리고 Istio와의 비교를 통해 Linkerd의 강점을 분석합니다.

2026년 4월 21일·13분
이전 글2장: 서비스 메시 아키텍처 - 데이터 플레인과 컨트롤 플레인
다음 글4장: Istio 트래픽 관리 - 라우팅, 로드 밸런싱, 카나리 배포

댓글

목차

약 10분 남음
  • Istio 아키텍처 개요
    • 사이드카 모드 (레거시)
    • Ambient 모드 (권장)
  • Ambient 모드 심층 분석
    • ztunnel: L4 보안 프록시
    • Waypoint Proxy: 선택적 L7 처리
    • 성능 비교: 사이드카 vs Ambient
  • Istio 핵심 CRD
    • VirtualService
    • DestinationRule
    • AuthorizationPolicy
    • PeerAuthentication
  • Istio 설치와 프로파일
  • Istio와 Kubernetes Gateway API
  • 핵심 요약