인그레스
본 서비스가 제공하는 내용 및 자료가 사실임을 보증하지 않습니다. 시스템은 언제나 실수를 할 수 있습니다. 중요한 의사결정 및 법리적 해석, 금전적 의사결정에 사용하지 마십시오.
인그레스(Ingress)는 쿠버네티스 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이다. 주로 HTTP와 HTTPS 트래픽을 관리하며, 클러스터 외부의 요청을 내부 서비스로 연결하는 라우팅 규칙을 정의한다. 부하 분산, SSL 종료, 이름 기반 가상 호스팅 등의 기능을 제공하여 복잡한 네트워크 트래픽을 효율적으로 제어하는 역할을 수행한다.
개요
인그레스는 쿠버네티스 API를 통해 정의한 규칙에 기반하여 외부 트래픽을 클러스터 내부의 백엔드 서비스에 매핑한다. 이는 URI, 호스트네임, 경로 등 웹 개념을 이해하는 프로토콜 인지형(protocol-aware) 설정 메커니즘을 이용한다. 인그레스는 클러스터 외부에서 접근 가능한 URL을 서비스에 제공하고, 트래픽을 로드 밸런싱하며, SSL/TLS를 종료하고, 이름 기반의 가상 호스팅을 구성하는 데 사용된다.
인그레스 컨트롤러
인그레스 리소스 자체는 라우팅 규칙을 정의하는 선언적 객체일 뿐이며, 이를 실제로 실행하기 위해서는 인그레스 컨트롤러(Ingress Controller)가 필요하다. 클러스터 내에서 적어도 하나의 인그레스 컨트롤러가 실행 중이어야 인그레스가 정상적으로 동작한다.
주요 인그레스 컨트롤러의 종류는 다음과 같다.
- 공식 지원: AWS, GCE(Google Cloud Engine) 인그레스 컨트롤러
- 서드파티: NGINX, Traefik, Apache APISIX, AKS 애플리케이션 게이트웨이 등
서비스 노출 방식 비교
애플리케이션을 외부로 노출하는 방법에는 인그레스 외에도 여러 옵션이 존재한다.
| 방식 | 특징 |
|---|---|
| ClusterIP | 클러스터 내부 IP를 사용하여 내부에서만 접근 가능함 |
| NodePort | 각 노드의 특정 포트를 통해 서비스를 외부로 노출함 |
| LoadBalancer | 클라우드 공급자의 로드 밸런서를 사용하여 외부 IP를 할당함 |
| Ingress | 하나의 IP로 여러 서비스를 노출하며, L7 영역의 지능형 라우팅을 제공함 |
현재 상태 및 향후 전망
인그레스 API는 쿠버네티스 v1.19 버전에서 안정화(Stable) 단계에 도달하였다. 현재 인그레스 API는 동결(Frozen)된 상태로, 안정성은 보장되나 향후 새로운 기능 추가나 변경은 이루어지지 않는다. 쿠버네티스 프로젝트는 인그레스를 제거할 계획은 없으나, 보다 확장된 기능을 제공하는 게이트웨이 API(Gateway API) 사용을 권장하고 있다.