Gateway와 VirtualService

Gateway와 VirtualService는 Istio에서 트래픽을 관리하는 핵심 리소스입니다.

목차

Gateway 개요

Gateway는 메시로 들어오는 외부 트래픽의 진입점을 정의합니다.

apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
  name: my-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway  # Ingress Gateway 파드 선택
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "myapp.example.com"
  - port:
      number: 443
      name: https
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: myapp-tls-secret
    hosts:
    - "myapp.example.com"

VirtualService 개요

VirtualService는 Gateway로 들어온 트래픽을 어떻게 라우팅할지 정의합니다.

기본 설정

HTTP 트래픽

HTTPS 트래픽

실전 예제

Path 기반 라우팅

다중 도메인 설정

고급 패턴

HTTP to HTTPS 리다이렉트

URL Rewrite

Header 추가/수정

Redirect

문제 해결

Gateway가 작동하지 않음

VirtualService 라우팅 실패

TLS 인증서 문제

모범 사례

  1. 네임스페이스 분리: Gateway는 istio-system에, VirtualService는 애플리케이션 네임스페이스에

  2. TLS 필수 사용: 프로덕션 환경에서는 항상 HTTPS 사용

  3. 명확한 호스트 지정: 와일드카드(*) 대신 명시적 도메인 사용

  4. Match 조건 순서: 구체적인 조건을 먼저, 일반적인 조건은 나중에

  5. 리소스 네이밍: 일관된 네이밍 규칙 사용

참고 자료

마지막 업데이트