Ssoon
2주차 : Istio gateways > 클러스터로 트래픽 유입 : 트래픽 유입 개념 본문
CloudNet@ 가시다님이 진행하는 Istio Hands-on Study [1기]
🚀 Istio와 서비스 간 통신: 외부에서 내부로
Istio는 클러스터 내부 또는 클러스터 간 **서비스 간 통신(Intra-service Communication)**의 복잡한 문제를 해결하는 데 탁월한 도구입니다. 하지만 이러한 통신이 시작되기 위해서는 외부에서 클러스터 내부로 트래픽이 들어와야 합니다.
Istio는 서비스 간 통신을 최적화하며, 외부 트래픽을 클러스터 내부로 연결하는 역할을 합니다.
🛠️ 클러스터 내부의 서비스: 흥미로운 애플리케이션
우리의 클러스터 안에는 다양한 서비스와 애플리케이션이 실행되고 있습니다. 이러한 서비스들은 서로 통신하며 복잡한 작업을 수행합니다. Istio는 이 서비스 간 통신에서 발생하는 도전 과제를 해결하는 데 강점을 발휘합니다. 예를 들어, 서비스 간 데이터 교환을 안전하고 효율적으로 처리할 수 있습니다.
클러스터 내부의 서비스들은 Istio를 통해 효율적인 서비스 간 통신을 구현합니다.
🌐 통신의 시작: 외부 트리거
서비스 간 통신은 보통 외부에서 시작되는 트리거에 의해 촉발됩니다. 예를 들어, 사용자가 웹사이트에서 물건을 구매하거나, 클라이언트가 API를 호출하는 경우가 이에 해당합니다. 이러한 트리거는 모두 클러스터 외부에서 발생하며, 외부 요청을 클러스터 내부로 전달해야 합니다.
서비스 간 통신은 사용자 구매, API 호출 같은 외부 트리거로 시작됩니다.
🔌 외부 트래픽 연결: 클러스터로의 입구
외부에서 클러스터 내부로 트래픽을 연결하려면 어떻게 해야 할까요? Istio는 클러스터 외부의 클라이언트가 내부 서비스에 안전하게 연결할 수 있도록 **엔트리 포인트(Entry Point)**를 제공합니다. 이를 통해 외부 트래픽이 클러스터 내부의 서비스로 원활히 전달됩니다.
Istio는 외부 클라이언트가 클러스터 내부 서비스에 연결할 수 있는 엔트리 포인트를 만듭니다.
📝 요약: Istio로 외부 트래픽을 클러스터 내부로
Istio는 클러스터 내부의 서비스 간 통신을 최적화하는 데 강점을 가지며, 외부 트래픽을 클러스터 내부로 연결하는 중요한 역할을 합니다. 클러스터 안에서 실행되는 서비스들은 Istio를 통해 효율적으로 통신하며, 사용자 구매나 API 호출 같은 외부 트리거로 통신이 시작됩니다. Istio는 외부 클라이언트가 내부 서비스에 안전하게 연결할 수 있도록 엔트리 포인트를 제공합니다.
🚀 트래픽 인그레스란 무엇인가?
네트워크 세계에서 외부 트래픽을 내부 네트워크로 연결하는 개념을 Ingress라고 부릅니다. Istio와 같은 서비스 메시에서는 이 Ingress가 클러스터 외부에서 내부로 들어오는 트래픽을 관리하는 핵심 역할을 합니다.
Ingress는 외부에서 내부 네트워크로 들어오는 트래픽을 관리하는 연결 지점입니다.
🌐 Ingress: 네트워크의 입구
Ingress는 외부 네트워크에서 발생한 트래픽이 내부 네트워크의 특정 엔드포인트로 들어오는 과정을 의미합니다. 이 트래픽은 먼저 Ingress Point라는 잘 정의된 입구를 통해 라우팅됩니다. Ingress Point는 외부 트래픽이 내부 네트워크로 들어오는 첫 번째 관문 역할을 합니다.
Ingress는 외부 트래픽이 내부 엔드포인트로 들어오는 과정이며, Ingress Point가 이를 관리합니다.
🛡️ Ingress Point: 트래픽의 문지기
Ingress Point는 네트워크로 들어오는 트래픽을 관리하는 게이트키퍼(Gatekeeper) 역할을 합니다. 이 지점에서 트래픽에 대한 **규칙(Rules)**과 **정책(Policies)**을 적용해 어떤 트래픽을 허용할지 결정합니다. 허용된 트래픽은 내부 네트워크의 올바른 엔드포인트로 프록시되고, 허용되지 않은 트래픽은 거부됩니다.
Ingress Point는 트래픽을 검사하고 규칙 및 정책에 따라 허용 또는 거부합니다.
🔄 트래픽 처리: 프록시와 거부
Ingress Point가 트래픽을 허용하면, 트래픽은 내부 네트워크의 적절한 엔드포인트로 전달됩니다. 예를 들어, 특정 서비스로 트래픽을 프록시해 요청을 처리할 수 있습니다. 반대로, 규칙에 맞지 않는 트래픽은 Ingress Point에서 차단되어 내부 네트워크로 들어오지 못합니다.
허용된 트래픽은 내부 엔드포인트로 프록시되고, 비허용 트래픽은 거부됩니다.
📝 요약: 트래픽 인그레스의 핵심
Ingress는 외부에서 내부 네트워크로 들어오는 트래픽을 관리하는 개념으로, Ingress Point가 이를 제어합니다. Ingress Point는 게이트키퍼로서 트래픽에 규칙과 정책을 적용해 허용 여부를 결정합니다. 허용된 트래픽은 내부 엔드포인트로 프록시되고, 그렇지 않은 트래픽은 거부됩니다.
🚀 가상 IP란 무엇인가?
클러스터 외부에서 내부로 트래픽을 연결할 때, **Virtual IP(VIP)**는 서비스 접근을 단순화하고 안정성을 높이는 핵심 요소입니다. Istio와 같은 서비스 메시 환경에서 Virtual IP는 외부 클라이언트가 내부 서비스에 쉽게 접근하도록 돕습니다.
Virtual IP는 서비스 접근을 단순화하고 안정성을 높이는 네트워크 주소입니다.
🌐 서비스 접근: DNS와 IP 매핑
예를 들어, 외부 시스템이 api.istioinaction.io/v1/products 엔드포인트를 통해 제품 목록을 조회하려고 합니다. 클라이언트는 먼저 도메인 이름(api.istioinaction.io)을 DNS 서버를 통해 IP 주소로 변환합니다. 이 과정에서 도메인 이름을 서비스의 IP 주소에 매핑해야 합니다. 공용 주소의 경우 Amazon Route 53이나 Google Cloud DNS 같은 서비스를, 내부 데이터센터에서는 내부 DNS 서버를 사용할 수 있습니다.
DNS는 도메인 이름을 서비스의 IP 주소로 매핑해 외부 접근을 가능하게 합니다.
⚠️ 단일 IP의 한계: 취약한 연결
도메인 이름을 서비스의 특정 인스턴스나 엔드포인트(단일 IP)에 직접 매핑하는 것은 위험합니다. 만약 해당 인스턴스가 다운되면 클라이언트는 오류를 겪고, DNS 매핑을 새로운 IP로 변경할 때까지 서비스가 중단됩니다. 이 방식은 느리고 오류가 발생하기 쉬우며, **가용성(Availability)**이 낮습니다.
단일 IP에 직접 매핑하면 인스턴스 장애 시 가용성이 낮아지고 오류가 발생합니다.
🔄 Virtual IP와 Reverse Proxy: 안정성과 유연성
이 문제를 해결하기 위해 도메인 이름을 **Virtual IP(VIP)**에 매핑하는 방식이 사용됩니다. Virtual IP는 실제 서비스 인스턴스가 아닌 Reverse Proxy에 연결됩니다. Reverse Proxy는 요청을 백엔드 서비스 인스턴스에 분배하며, Load Balancing 같은 기능을 제공해 특정 인스턴스가 과부하되지 않도록 합니다. 이를 통해 가용성과 유연성이 크게 향상됩니다.
Virtual IP는 Reverse Proxy에 매핑되어 Load Balancing으로 가용성과 유연성을 높입니다.
📝 요약: Virtual IP로 서비스 접근 단순화
**Virtual IP(VIP)**는 외부 클라이언트가 클러스터 내부 서비스에 쉽게 접근하도록 돕는 네트워크 주소입니다. DNS를 통해 도메인 이름을 IP 주소로 매핑하며, 단일 인스턴스에 직접 매핑하는 대신 Virtual IP를 Reverse Proxy에 연결해 Load Balancing을 구현합니다. 이를 통해 장애 시에도 가용성을 유지하고, 서비스 접근을 단순화합니다.
🚀 가상 호스팅이란 무엇인가?
Virtual Hosting은 단일 **Virtual IP(VIP)**를 통해 여러 서비스를 관리하는 강력한 네트워크 기술입니다. Istio에서는 이를 활용해 외부 트래픽을 효율적으로 클러스터 내부의 다양한 서비스로 라우팅합니다.
Virtual Hosting은 단일 Virtual IP로 여러 서비스를 관리하는 기술입니다.
🌐 단일 Virtual IP로 여러 호스트 관리
앞서 Virtual IP가 여러 서비스 인스턴스를 단일 주소로 추상화하는 방법을 배웠습니다. 가상 호스팅은 이를 한 단계 더 발전시켜, 여러 Hostname(예: prod.istioinaction.io, api.istioinaction.io)을 단일 Virtual IP에 매핑합니다. 이 경우, 모든 요청은 동일한 Virtual IP로 전달되며, Reverse Proxy가 이를 처리합니다.
여러 Hostname이 단일 Virtual IP에 매핑되어 Reverse Proxy로 라우팅됩니다.
🛠️ Reverse Proxy의 역할: 요청 분배
Reverse Proxy는 단일 Virtual IP로 들어오는 요청을 적절한 서비스로 분배합니다. 이를 위해 요청의 Host HTTP Header를 확인해 어느 서비스로 보낼지 결정합니다. 예를 들어, prod.istioinaction.io와 api.istioinaction.io 요청은 동일한 Virtual IP로 들어오지만, Reverse Proxy가 Host Header를 보고 올바른 서비스로 라우팅합니다.
Reverse Proxy는 Host Header를 사용해 요청을 적절한 서비스로 분배합니다.
🔍 프로토콜별 헤더 활용: HTTP와 TLS
가상 호스팅은 사용하는 프로토콜에 따라 다른 헤더를 활용합니다:
- HTTP/1.1: Host Header를 사용해 요청의 대상 호스트를 식별합니다.
- HTTP/2: :authority Header를 사용합니다.
- TCP/TLS: **Server Name Indication(SNI)**를 통해 호스트를 구분합니다.
Istio는 이러한 헤더를 활용해 Edge Ingress 기능을 구현하며, 트래픽을 클러스터 내부로 정확히 라우팅합니다.
HTTP/1.1, HTTP/2, TLS는 각각 Host, :authority, SNI를 사용해 가상 호스팅을 지원합니다.
📝 요약: 가상 호스팅으로 서비스 관리 간소화
Virtual Hosting은 단일 Virtual IP를 통해 여러 Hostname(예: prod.istioinaction.io, api.istioinaction.io)을 관리하는 기술입니다. Reverse Proxy는 Host Header(HTTP/1.1), :authority Header(HTTP/2), 또는 SNI(TLS)를 사용해 요청을 올바른 서비스로 라우팅합니다. Istio는 이를 Edge Ingress에 활용해 외부 트래픽을 클러스터 내부로 효율적으로 전달합니다.
'Istio Hands-on Study [1기]' 카테고리의 다른 글
2주차 : Istio gateways > 클러스터로 트래픽 유입 : gateways 트래픽 보안 (0) | 2025.04.15 |
---|---|
2주차 : Istio gateways > 클러스터로 트래픽 유입 : Istio ingress gateways (0) | 2025.04.15 |
2주차 : Istio 데이터 플레인 > The Envoy proxy : Envoy와 Istio의 사용 방법 (0) | 2025.04.15 |
2주차 : Istio 데이터 플레인 > The Envoy proxy : Envoy in action (0) | 2025.04.15 |
2주차 : Istio 데이터 플레인 > The Envoy proxy : Envoy 구성 (0) | 2025.04.15 |