1 개요[ | ]
- k8s Ingress Controller
- k8s 인그레스 컨트롤러
- k8s Ingress 리소스가 동작하도록 해주는 컨트롤러
- 쿠버네티스 Ingress 리소스를 해석하고, 클러스터 외부의 HTTP/HTTPS 트래픽을 내부 Service로 라우팅하기 위해 로드밸런서를 구성하는 컨트롤러
- Ingress 리소스는 추상화 수준의 규칙만 정의하므로, 실제 동작은 Ingress Controller 구현체에 의해 결정된다.
- 쿠버네티스 클러스터에는 기본 Ingress Controller가 포함되어 있지 않으며, 사용자가 선택하여 설치해야 한다.
2 동작 원리[ | ]
- Ingress Controller는 API 서버에서 Ingress 리소스를 감시(watch)한다.
- 새 Ingress가 생성되거나 수정되면, 로드밸런서(소프트웨어 또는 클라우드 네이티브 서비스)의 설정을 갱신한다.
- TLS 종료, 가상 호스트 기반 라우팅, 경로 기반 라우팅 등을 구현할 수 있다.
- 일부 구현체는 Ingress 외에도 고급 기능(예: Web Application Firewall, 인증, 레이트 리미팅)을 제공한다.
3 구현체[ | ]
구현체 | 특징 | 비고 |
---|---|---|
Ingress-NGINX | 가장 널리 쓰이는 오픈소스 Ingress Controller. NGINX를 기반으로 하며, 풍부한 annotation 지원 | Kubernetes SIG-NGINX 관리 |
HAProxy Ingress | HAProxy 기반, 성능 중심 | 커뮤니티 주도 |
Traefik | Ingress Controller이자 독립형 리버스 프록시. 자동 서비스 탐색 및 대시보드 제공 | CNCF Incubating |
Contour | Envoy Proxy 기반, 고성능 L7 라우팅 | VMware 주도 |
AWS Load Balancer Controller | Kubernetes Ingress/Service를 AWS ALB, NLB로 매핑. WAF, Shield, ACM 인증서 연동 등 AWS 특화 기능 지원 | AWS 제공 |
GKE Ingress Controller | Google Cloud Load Balancer와 통합 | Google 제공 |
Azure Application Gateway Ingress Controller | Azure Application Gateway와 통합 | Microsoft 제공 |
4 IngressClass[ | ]
- 쿠버네티스 v1.18부터 IngressClass 리소스가 도입되어, 여러 Ingress Controller가 동일 클러스터 내에서 공존할 수 있다.
- Ingress 리소스는
spec.ingressClassName
필드를 통해 특정 컨트롤러를 지정할 수 있다.
5 한계와 대안[ | ]
- Ingress는 주로 L7(HTTP/HTTPS) 트래픽만 지원하며, L4/TCP/UDP는 사양 범위 밖이다.
- 일부 구현체에서 비표준 확장 기능으로 TCP/UDP를 지원하기도 한다.
- 구현체별 annotation에 의존하기 때문에 이식성이 떨어진다.
- Gateway API가 차세대 표준으로 개발되고 있으며, Ingress의 제약을 보완한다.
6 같이 보기[ | ]
7 참고[ | ]
로그인하시면 댓글을 쓸 수 있습니다.