새소식

인기 검색어

Service_Mesh/Istio

[Istio-2주차] Istio Gateway (이론)

  • -

1. Ingress

  • 외부에서 인입되는 트래픽을 내부 서비스에 효과적으로 라우팅하기 위해 Kubernetes(이하 k8s)는 Ingress라는 오브젝트를 제공한다.

Ingress Points

  • 네트워킹 관점에서 인그레스 포인트(Ingress Point)는 네트워크 내부로 향하는 트래픽을 최초로 수신하는 진입점 역할을 한다.
  • 외부로부터 유입된 모든 트래픽은 먼저 이 문지기 역할을 하는 Ingress Points에서 처리된다.
  • Ingress Point는 어떤 트래픽을 로컬 네트워크로 허용할지 결정하는 규칙과 정책을 적용한다.
  • 허용된 트래픽은 이후 내부 네트워크의 정확한 목적지(엔드포인트)로 프록시되고, 정책에 맞지 않는 트래픽은 거부한다.

Virtual IPs

  • 서비스 외부 노출 과정
    • 서비스(api.istioinaction.io/v1/products)를 외부 시스템이 호출하려면, 먼저 도메인 이름(api.istioinaction.io)을 IP 주소로 변환하는 과정이 필요하다.
    • 이 과정은 클라이언트의 네트워킹 스택이 DNS 서버에 도메인 이름의 IP 주소를 질의하는 방식으로 수행된다.
  • DNS에서 IP 주소를 매핑할 때 주의점
    • DNS를 통해 도메인을 단일 서비스 인스턴스의 실제 IP에 직접 대응시키는 방식은 매우 취약하다.
    • 해당 서비스 인스턴스가 다운되면 DNS가 갱신되기 전까지 클라이언트가 지속적으로 오류를 경험하게 된다.
    • 이는 느리고, 가용성 및 안정성이 떨어지는 방식이다.
  • 안정적인 서비스 노출 방법
    • 가상 IP(virtual IP) 를 도메인에 대응시켜 사용하는 것이 권장된다.
    • 가상 IP는 특정 서비스가 아니라 중간 계층 역할의 리버스 프록시(Reverse Proxy)와 연결된다.
    • 리버스 프록시는 트래픽을 여러 서비스 인스턴스로 분산 처리하고, 로드 밸런싱 기능을 제공해 개별 백엔드의 과부하를 방지할 수 있다. 
    • 이를 통해 높은 가용성과 안정적인 서비스를 제공할 수 있다.

 

Virtual Hosting

  • 서비스와 가상 IP 구성
    • 여러 개의 서비스 인스턴스가 각각의 자체 IP를 가질 수 있지만, 외부 클라이언트는 가상 IP 하나만 사용해 접근한다.
    • 이 방식은 여러 서비스가 동일한 가상 IP를 공유할 수 있게 해준다.
    • 예시: prod.istioinaction.io, api.istioinaction.io 두 도메인이 동일한 가상 IP로 대응될 수 있다.
  • 리버스 프록시의 요청 처리 방식

    • 클라이언트가 동일한 가상 IP로 전송한 요청은 단일 리버스 프록시로 들어온다.
    • 리버스 프록시는 요청을 분석해 적절한 서비스로 라우팅한다.
      • HTTP 요청이라면, 리버스 프록시는 요청 헤더(ex. bar.example.com) 를 확인 후 어떤 요청이 어느 서비스로 향해야 하는지(3.3.3.3, 4.4.4.4) 판단하여 라우팅한다.

 

 

  • 가상 호스팅
    • 단일 진입점(인그레스 포인트)에서 여러 다른 서비스들을 함께 제공하는 방식이다.
    • 이를 위해 HTTP/1.1은 Host 헤더, HTTP/2는 :authority 헤더를 사용해 요청이 향하는 서비스를 판단한다.
    • TLS 기반의 TCP 연결에서는 SNI(Server Name Indication)를 통해 요청을 라우팅한다.
  • Istio의 인그레스와 가상 호스팅
    • Istio는 이와 같은 가상 IP 라우팅과 가상 호스팅 방식을 결합해, 외부 요청을 내부 서비스로 효율적으로 라우팅한다.
    • Istio의 에지 인그레스(Edge Ingress)는 클러스터 외부에서 들어오는 요청을 내부 서비스로 전달하는 데 있어, 위의 기술들을 사용한다.

2. Istio - Ingress Gateways

Ingress Gateway

  • 클러스터 외부 → 내부로 유입되는 트래픽의 진입점이다.
  • 기능
    • 보안 제어 (트래픽 필터링)
    • 로드 밸런싱
    • 가상 호스트 기반 라우팅 (도메인에 따라 내부 서비스 분기)

동작

  • Envoy 프록시를 사용해 Reverse Proxy 역할도 수행 (클러스터 외부 트래픽을 받아서 내부 서비스로 적절하게 분배)
  • Istio는 단일 Envoy 인스턴스로 Ingress Gateway 구성

[구성 요소]

  • 인그레스 게이트웨이는 Istio의 컨트롤 플레인의 설정을 기반으로 작동한다.
  • 컨트롤 플레인은 Envoy에 설정을 동적으로 전달하고, 보안 정책이나 라우팅 규칙 등을 관리한다.

 

Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.