Istio Gateway만 사용하면 Kubernetes Ingress Controller가 필요 없다.
Istio 자체가 Envoy 기반의 Ingress Gateway를 제공하므로, 별도의 kubernetes/ingress-nginx 같은 Ingress Controller 없이도 외부 트래픽을 관리할 수 있다.
Istio의 Gateway 리소스는 Istio의 Envoy 기반 Ingress Controller로 동작한다. Istio 1.20부터 새로운 Gateway API(Kubernetes Gateway API) 를 기본적으로 지원하면서, 기존의 Gateway 리소스를 대체하는 방향으로 발전하고 있다. 기존의 Istio Gateway(kind: Gateway) 는 여전히 사용 가능하며, Istio 1.20에서도 공식적으로 지원된다.
Istio 1.20부터 Kubernetes Gateway API를 공식 지원하면서 Istio의 기존 Gateway 리소스를 사용하지 않고도 Istio의 Ingress Gateway 기능을 활용할 수 있다. 다만, Istio의 고유 기능 일부는 Kubernetes Gateway API에서 완전히 지원되지 않을 수도 있다.
| 비교 항목 | 기존 Istio Gateway (networking.istio.io/v1beta1) | Kubernetes Gateway API (gateway.networking.k8s.io/v1) |
|---|---|---|
| API 그룹 | networking.istio.io | gateway.networking.k8s.io |
| 사용 방식 | Istio 전용 API (Istio CRD 필요) | Kubernetes 공식 Gateway API |
| 트래픽 제어 | Istio VirtualService와 함께 사용 | HTTPRoute, TCPRoute, TLSRoute 등과 함께 사용 |
| 지원하는 Istio 기능 | mTLS, AuthorizationPolicy, Istio VirtualService | mTLS, AuthorizationPolicy(제한적 지원), 일부 Istio 기능 미지원 |
| 벤더 중립성 | Istio 전용 | Istio, Cilium, Linkerd 등 다양한 서비스 메쉬 지원 |
| 권장 사항 | Istio 환경에서 기본적으로 사용 | Istio 1.20+에서는 이 방식이 권장됨 |
단순한 L7 HTTP/HTTPS 트래픽 관리라면 Kubernetes Gateway API를 사용하는 것이 더 표준적이고 미래 지향적이다.
Istio의 고급 기능(트래픽 분할, Fault Injection, AuthorizationPolicy 등)을 사용해야 한다면 기존 Istio Gateway를 유지하는 것이 좋다.
| 추가 기능 | Istio Gateway 지원 여부 | Kubernetes Gateway API 지원 여부 |
|---|---|---|
| mTLS | 지원 | 지원 |
| AuthorizationPolicy (RBAC) | 지원 | 제한적 지원 |
| Fault Injection (지연, 오류 테스트) | 지원 | 미지원 |
| Weight-based Routing (가중치 기반 라우팅) | 지원 | 일부 지원 |
| Header 기반 라우팅 | 지원 | 지원 |
| Session Affinity | 지원 | 일부 지원 |
Kubernetes Gateway API는 Kubernetes 클러스터 내에서 L4 및 L7 트래픽 라우팅을 관리하기 위한 공식 프로젝트로, 기존 Ingress API의 한계를 보완하고자 설계되었다.
Kubernetes Gateway API 컴포넌트
ingress 보다 아래 기능이 향상된다.