Istio Service Mesh Reference
Istio VirtualService, DestinationRule, Gateway CRD 레퍼런스
Istio Service Mesh Reference 소개
Istio Service Mesh 레퍼런스는 Kubernetes 서비스 메시를 운영하는 엔지니어를 위한 실전 치트 시트입니다. 트래픽 관리(VirtualService, DestinationRule, Gateway, ServiceEntry, Timeout, Retry, Fault Injection), 보안(PeerAuthentication, AuthorizationPolicy, RequestAuthentication), 관측성(Kiali, Jaeger, Prometheus), 설정(Sidecar, EnvoyFilter)의 네 가지 카테고리로 구성되어 있으며, 모든 항목에 바로 사용할 수 있는 YAML 예제가 포함되어 있습니다.
이 레퍼런스는 Kubernetes 클러스터에서 Istio를 구성하고 문제를 해결하는 DevOps 엔지니어, 플랫폼 엔지니어, SRE를 대상으로 합니다. 비율 기반 트래픽 분산, 가중 로드 밸런싱, 이상 감지를 통한 서킷 브레이킹, 장애 주입을 통한 복원력 테스트 등 실무에서 자주 사용하는 패턴이 모두 포함되어 있습니다.
트래픽, 보안, 관측성, 설정의 네 가지 카테고리로 필터링할 수 있어 필요한 영역으로 바로 이동할 수 있습니다. STRICT mTLS로 메시를 강화하거나, Jaeger로 레이턴시를 디버깅하거나, DestinationRule에서 커넥션 풀을 튜닝하는 등 일반적인 모든 작업이 복사 가능한 구체적인 예제와 함께 제공됩니다.
주요 기능
- URI 접두사 매칭과 가중 목적지를 사용하는 VirtualService 트래픽 라우팅 규칙
- DestinationRule의 커넥션 풀, 이상 감지(서킷 브레이킹), 로드 밸런싱 정책 예제
- 수신 트래픽을 위한 TLS 자격 증명 참조가 포함된 Gateway HTTPS 설정
- PeerAuthentication mTLS 모드: STRICT, PERMISSIVE, DISABLE과 네임스페이스 범위
- AuthorizationPolicy 소스 주체 및 HTTP 메서드 접근 제어 규칙
- JWT 발급자와 JWKS URI 설정을 포함한 RequestAuthentication 토큰 검증
- 비율 기반 대상 지정을 통한 지연 및 중단 시나리오의 장애 주입 YAML
- 메시 관측성을 위한 Kiali, Jaeger, Prometheus 통합 명령어
자주 묻는 질문
Istio의 VirtualService란 무엇인가요?
VirtualService는 메시 내 서비스의 트래픽 라우팅 규칙을 정의합니다. URI 접두사, HTTP 헤더, 가중치 등의 기준으로 트래픽을 분할하여 특정 목적지 서브셋으로 라우팅할 수 있습니다. VirtualService가 없으면 Istio는 기본 라운드 로빈 라우팅을 사용합니다.
PeerAuthentication과 AuthorizationPolicy의 차이는 무엇인가요?
PeerAuthentication은 서비스 간 상호 TLS 요구 여부를 제어합니다(암호화 및 신원 확인). AuthorizationPolicy는 어떤 서비스 신원이나 외부 클라이언트가 어떤 작업을 호출할 수 있는지를 제어합니다(인가). 두 리소스는 보통 함께 사용하여 서비스 간 통신을 보호합니다.
Istio의 장애 주입은 어떻게 동작하나요?
장애 주입은 VirtualService의 fault 필드를 통해 설정합니다. 요청의 일정 비율에 인위적인 지연(예: 10% 요청에 5초 지연)이나 HTTP 중단(예: 5% 요청에 503 응답)을 주입하여 애플리케이션 코드 수정 없이 다운스트림 서비스의 장애 처리를 테스트할 수 있습니다.
DestinationRule은 무엇을 하나요?
DestinationRule은 라우팅 후 트래픽에 적용되는 정책을 정의합니다. 일반적인 사용 사례로는 커넥션 풀 크기 설정, 이상 감지(서킷 브레이킹), 로드 밸런싱 알고리즘, 목적지 서비스의 TLS 설정이 있습니다.
ServiceEntry는 언제 사용해야 하나요?
ServiceEntry는 메시 외부의 서비스(외부 API, 데이터베이스 등)를 Istio 서비스 레지스트리에 등록합니다. 파드가 외부 API를 호출해야 하고 그 트래픽에 Istio 정책, 재시도, 타임아웃을 적용하고 싶을 때 사용합니다.
Istio의 재시도 정책은 어떻게 동작하나요?
재시도 정책은 VirtualService의 retries 필드에 정의합니다. 시도 횟수, 시도당 타임아웃, 재시도 조건(예: 5xx 오류, 연결 실패)을 지정합니다. Istio가 애플리케이션 변경 없이 투명하게 재시도를 처리합니다.
Sidecar 리소스는 무엇에 사용하나요?
Sidecar 리소스는 사이드카 프록시가 알아야 하는 서비스 집합을 제한하여 대규모 메시에서 메모리 사용량과 설정 푸시 지연 시간을 줄입니다. 기본적으로 사이드카는 전체 메시 토폴로지를 학습하지만, Sidecar 리소스로 실제 필요한 이그레스 호스트만으로 제한할 수 있습니다.
EnvoyFilter는 어떻게 사용하나요?
EnvoyFilter는 패치 작업을 통해 Envoy 프록시 설정에 직접 접근합니다. 사용자 정의 connect 타임아웃 설정, Lua 필터 추가, 클러스터 설정 수정 등 상위 수준 Istio API로 처리할 수 없는 고급 시나리오를 위한 탈출구입니다.