Kubernetes에서 서비스 간 통신을 관리하는 가장 대표적인 방식은 Ingress였습니다. 하지만 Ingress는 시간이 지나면서 확장성, 유연성 부족 등의 한계를 드러냈습니다. 이를 해결하기 위해 등장한 것이 바로 Kubernetes Gateway API입니다. 이번 글에서는 Gateway API가 무엇인지, 기존 Ingress와의 차이점, 그리고 이를 활용하는 방법을 살펴보겠습니다.
Gateway API란?
Gateway API는 Kubernetes에서 서비스 네트워킹을 보다 강력하고 유연하게 정의하기 위한 새로운 API 표준입니다. 기존 Ingress가 기본적인 L7 트래픽 관리에 초점을 맞췄다면, Gateway API는 L4~L7 레벨의 트래픽을 세밀하게 조정할 수 있도록 설계되었습니다.
이 API는 다양한 네트워크 구성 요소(예: 로드밸런서, 프록시, 서비스 메시)와의 원활한 통합을 목표로 하며, 대규모 멀티테넌트 환경에서도 강력한 기능을 제공합니다.
Ingress vs. Gateway API
특징IngressGateway API
주요 역할 | L7 레벨에서 트래픽 라우팅 | L4~L7 전반에 걸친 트래픽 관리 |
리소스 모델 | 단일 Ingress 리소스 사용 | Gateway, HTTPRoute, TCPRoute 등 다중 리소스 구조 |
멀티테넌트 지원 | 제한적 | 네임스페이스 기반의 강력한 멀티테넌트 지원 |
확장성 | 제한적 | 플러그인 및 컨트롤러 확장이 용이 |
구현 방식 | 특정 컨트롤러 의존 | 다양한 구현체와 연동 가능 |
기본적으로 Gateway API는 Ingress의 진화된 형태라고 볼 수 있습니다. 보다 유연한 트래픽 제어 기능을 제공하며, 확장성을 고려한 설계를 통해 기업 환경에서도 안정적인 운영이 가능합니다.
주요 개념 및 리소스
1. Gateway
- 클러스터 내에서 외부 트래픽을 내부 서비스로 전달하는 진입점 역할을 합니다.
- Ingress의 로드밸런서와 유사하지만, L4~L7의 다양한 트래픽 유형을 관리할 수 있습니다.
2. HTTPRoute / TCPRoute / UDPRoute
- 특정 요청을 적절한 서비스로 라우팅하는 역할을 합니다.
- HTTPRoute는 L7 트래픽을 다루고, TCPRoute와 UDPRoute는 각각 L4 트래픽을 처리합니다.
3. GatewayClass
- 여러 개의 Gateway 리소스를 관리하는 템플릿 역할을 합니다.
- 특정한 네트워크 제공자(예: Istio, Traefik, Cilium 등)에 맞게 정의될 수 있습니다.
Gateway API 사용 예시
아래는 Gateway API를 활용하여 간단한 HTTP 라우팅을 구성하는 예제입니다.
1. Gateway 정의
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: example-gateway
namespace: default
spec:
gatewayClassName: my-gateway-class
listeners:
- protocol: HTTP
port: 80
name: http
2. HTTPRoute 정의
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: example-route
namespace: default
spec:
parentRefs:
- name: example-gateway
rules:
- matches:
- path:
type: Prefix
value: "/app"
backendRefs:
- name: my-service
port: 8080
이러한 설정을 통해 example-gateway를 통해 들어오는 HTTP 요청을 /app 경로 기준으로 my-service:8080으로 전달할 수 있습니다.
Gateway API의 장점
- 더 나은 확장성: 다양한 리소스로 역할을 분리하여 관리 부담을 줄일 수 있습니다.
- 멀티테넌트 지원: 네임스페이스 기반 격리 기능이 강화되어 보안성이 높아집니다.
- L4~L7 네트워크 정책 지원: 단순한 HTTP 트래픽뿐만 아니라 TCP/UDP 트래픽까지 세밀하게 제어할 수 있습니다.
- 다양한 구현체 지원: Istio, Contour, Gloo Gateway, Cilium 등과의 통합이 가능합니다.
Kubernetes Gateway API는 기존 Ingress의 한계를 극복하고, 더욱 확장 가능하고 유연한 네트워크 제어 기능을 제공합니다. 기업 환경에서 멀티테넌트 아키텍처를 구축하거나, 보다 정교한 트래픽 제어가 필요한 경우 Gateway API를 도입해보는 것이 좋습니다.
앞으로도 Kubernetes 네트워크의 핵심 요소로 자리 잡을 Gateway API에 대한 지속적인 발전을 기대해 봅니다.
참고
https://gateway-api.sigs.k8s.io/
Introduction - Kubernetes Gateway API
Introduction Gateway API is an official Kubernetes project focused on L4 and L7 routing in Kubernetes. This project represents the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. From the outset, it has been designed to be gen
gateway-api.sigs.k8s.io
https://blog.nginx.org/blog/5-reasons-to-try-the-kubernetes-gateway-api