ServiceEntry

ServiceEntry는 Istio 서비스 메시에 외부 서비스를 등록하여 메시 내부 서비스처럼 관리할 수 있게 합니다.

목차

Why ServiceEntry?

외부 서비스 관리의 필요성

Istio 메시는 기본적으로 외부 서비스에 대한 트래픽을 제어하지 않습니다. ServiceEntry를 사용하면:

spinner

주요 이점

기능
ServiceEntry 없이
ServiceEntry 사용

모니터링

블랙홀

전체 메트릭 수집

트래픽 제어

불가능

Timeout, Retry, Circuit Breaker

보안

제한적

mTLS, 인증서 관리

Egress Control

모든 외부 트래픽 허용

명시적 허용/차단

서비스 디스커버리

수동 관리

자동 DNS 조회

ServiceEntry 개요

ServiceEntry는 외부 서비스를 Istio 서비스 레지스트리에 추가합니다.

spinner

기본 구조

Resolution 모드

ServiceEntry는 4가지 주소 해석 모드를 지원합니다.

1. DNS Resolution

가장 일반적인 모드로, DNS를 통해 IP 주소를 동적으로 해석합니다.

사용 사례:

  • 공개 API (AWS S3, Google Cloud Storage)

  • SaaS 서비스 (Stripe, SendGrid)

  • 클라우드 관리 서비스

2. STATIC Resolution

고정 IP 주소를 명시적으로 지정합니다.

사용 사례:

  • 레거시 시스템 (DNS 없음)

  • 고정 IP가 필요한 규정 준수

  • 내부 데이터센터 서비스

3. NONE Resolution

주소 해석을 수행하지 않고, 클라이언트가 제공한 주소를 그대로 사용합니다.

사용 사례:

  • 와일드카드 도메인

  • 클라이언트 측 로드 밸런싱

  • TCP/TLS 프록시

4. DNS_ROUND_ROBIN Resolution (Deprecated)

DNS 라운드 로빈을 사용합니다 (현재는 DNS 모드로 통합).

Location 설정

MESH_EXTERNAL (외부 서비스)

메시 외부의 서비스를 등록합니다.

특징:

  • mTLS가 적용되지 않음

  • Egress Gateway를 통해 나갈 수 있음

  • 외부 트래픽으로 분류

MESH_INTERNAL (내부 서비스)

메시 내부 서비스로 취급합니다 (드물게 사용).

사용 사례:

  • VM 워크로드를 메시에 포함

  • Multi-cluster 환경

  • Hybrid cloud 구성

실전 예제

1. 외부 REST API 등록

시나리오: 결제 게이트웨이 API

2. 외부 데이터베이스 등록

시나리오: AWS RDS MySQL

3. 와일드카드 도메인 등록

시나리오: AWS S3 버킷 접근

4. 여러 엔드포인트가 있는 외부 서비스

시나리오: 멀티 리전 API

5. TCP 서비스 등록

시나리오: 외부 Redis 클러스터

Egress Gateway와 조합

Egress Gateway를 통해 외부 트래픽을 중앙에서 제어합니다.

기본 Egress Gateway 설정

TLS Origination (메시 내부는 HTTP, 외부는 HTTPS)

보안 및 TLS

mTLS to External Service

SNI Routing

모니터링 및 제어

메트릭 수집

Prometheus 쿼리

Egress 트래픽 차단

모범 사례

1. 명시적 ServiceEntry 등록

2. Circuit Breaker 필수 적용

3. Timeout 설정

4. Egress Gateway 사용 (프로덕션)

5. 네임스페이스별 격리

6. 문서화 템플릿

참고 자료

마지막 업데이트