WorkloadEntry

지원 버전: Istio 1.28+ 마지막 업데이트: 2026년 2월 19일

WorkloadEntry는 Virtual Machine (VM)이나 베어메탈 서버를 Istio 서비스 메시에 등록하기 위한 리소스입니다. 이를 통해 Kubernetes 외부의 워크로드도 메시의 트래픽 관리, 보안, 관찰성 기능을 활용할 수 있습니다.

목차

개요

WorkloadEntry란?

WorkloadEntry는 Istio Custom Resource Definition (CRD)으로, 메시 외부에 있는 워크로드(VM, 베어메탈)를 Istio 서비스 메시에 등록합니다.

사용 시나리오

spinner

주요 사용 사례:

  1. 점진적 마이그레이션: 레거시 애플리케이션을 단계적으로 Kubernetes로 이전

  2. 하이브리드 아키텍처: VM과 컨테이너를 동시에 운영

  3. 데이터베이스 통합: 외부 데이터베이스를 메시에 포함

  4. 고성능 워크로드: GPU 서버 등 특수 하드웨어 활용

WorkloadEntry vs Kubernetes Pod

비교표

특성
Kubernetes Pod
WorkloadEntry (VM)

배포 위치

클러스터 내부

클러스터 외부

Envoy 주입

자동 (사이드카)

수동 설치

서비스 디스커버리

자동 (Service)

수동 (WorkloadEntry)

IP 관리

Kubernetes CNI

수동 지정

mTLS

자동

자동 (인증서 배포 필요)

헬스체크

자동 (Liveness/Readiness)

수동 구성

스케일링

HPA

수동

운영 복잡도

낮음

높음

사용 시나리오

클라우드 네이티브 앱

레거시 앱, 특수 하드웨어

트래픽 흐름 비교

spinner

아키텍처

VM 워크로드 아키텍처

spinner

주요 구성 요소

  1. WorkloadEntry: VM 정보 등록 (IP, 포트, 레이블)

  2. ServiceEntry: 서비스 정의 및 WorkloadEntry 참조

  3. Envoy Proxy: VM에 수동 설치된 사이드카

  4. istiod: 구성 배포 및 인증서 관리

  5. Service Account: VM의 신원 인증

기본 사용법

WorkloadEntry 리소스 정의

필수 필드 설명

필드
설명
예시

address

VM의 IP 주소 (필수)

192.168.1.100

labels

ServiceEntry 매칭용 레이블

app: legacy-api

serviceAccount

mTLS 인증용 SA

legacy-api-sa

ports

노출할 포트 맵

http: 8080

여러 VM 등록

ServiceEntry 통합

WorkloadEntry는 항상 ServiceEntry와 함께 사용됩니다.

기본 통합 패턴

동작 흐름

spinner

로드 밸런싱

여러 WorkloadEntry가 있을 때 자동 로드 밸런싱됩니다:

VM 등록 실전 가이드

사전 요구사항

  1. VM 요구사항:

    • 네트워크: Kubernetes 클러스터와 통신 가능

    • OS: Linux (Ubuntu 20.04+ 권장)

    • 포트: Envoy 포트 개방 (15012, 15017 등)

  2. Kubernetes 준비:

    • Istio 설치 완료

    • VM이 사용할 네임스페이스 생성

    • ServiceAccount 생성

1단계: ServiceAccount 생성

2단계: WorkloadGroup 생성 (선택적)

WorkloadGroup은 여러 WorkloadEntry의 템플릿 역할을 합니다:

3단계: VM에 Envoy 설치

자동 설치 스크립트 생성

VM에서 설치 실행

4단계: WorkloadEntry 등록

자동 등록이 활성화되어 있으면 Envoy 시작 시 자동 생성됩니다. 수동 등록:

5단계: ServiceEntry 생성

6단계: 연결 테스트

보안 설정 (mTLS)

mTLS 자동 활성화

WorkloadEntry는 자동으로 mTLS를 지원합니다:

VM 신원 확인

접근 제어 (AuthorizationPolicy)

mTLS 검증

헬스체크 및 모니터링

헬스체크 구성

WorkloadEntry는 자동 헬스체크를 지원하지 않으므로 수동 구성이 필요합니다:

VM 헬스체크 엔드포인트

VM 애플리케이션에 헬스체크 엔드포인트를 추가하세요:

Prometheus 메트릭 수집

Grafana 대시보드 쿼리

고급 구성

멀티 네트워크 환경

서로 다른 네트워크에 있는 VM 등록:

Locality-aware 로드 밸런싱

Canary 배포

WorkloadEntry에서도 Canary 배포를 적용할 수 있습니다:

문제 해결

WorkloadEntry가 등록되지 않음

증상: kubectl get workloadentry에 리소스가 보이지만 트래픽이 라우팅되지 않음

확인 사항:

해결 방법:

VM에서 mTLS 연결 실패

증상: connection refused 또는 TLS handshake failed

확인 사항:

해결 방법:

헬스체크 실패로 트래픽이 가지 않음

증상: Envoy가 WorkloadEntry를 UNHEALTHY로 표시

확인 사항:

해결 방법:

DNS 조회 실패

증상: 파드에서 postgres.vm.internal 조회 실패

확인 사항:

해결 방법:

모범 사례

1. 네이밍 규칙

2. 레이블 전략

3. ServiceAccount 관리

4. 모니터링 및 알림

5. 문서화

각 WorkloadEntry에 대한 문서를 유지하세요:

6. 백업 및 재해 복구

7. 점진적 마이그레이션 전략

spinner

1단계: VM 메시 등록

2단계: 트래픽 분할 (100% VM)

3단계: Kubernetes 배포

4단계: 점진적 트래픽 전환

5단계: VM 제거

참고 자료

공식 문서

관련 문서

추가 자료

마지막 업데이트