K8s 인그레스 컨트롤러

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 Controller Kubernetes SIG-NGINX에서 관리하는 공식 오픈소스 Ingress Controller. NGINX 기반, 가장 널리 사용됨 Kubernetes SIG 관리
F5 NGINX Ingress Controller NGINX, Inc.(F5)에서 제공하는 별도 구현체. 상용 기능과 지원 제공 F5 제공
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 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}