🫠
Kubernetes Ingress
는 클러스터 외부에서 클러스터 내부의서비스
로 HTTP와 HTTPS 트래픽을 라우팅하는 API 오브젝트입니다.Ingress
를 사용하면, URL 경로, 호스트 이름, SSL/TLS 인증서, 로드 밸런싱, 리다이렉트 등과 같은 규칙을 정의하여 외부 요청을 처리할 수 있습니다.
- Ingress 리소스: 사용자가 정의하는 라우팅 규칙을 포함하는
Kubernetes
리소스입니다.- Ingress 컨트롤러:
Ingress
리소스의 규칙을 실제로 구현하는 컴포넌트. 주요Ingress 컨트롤러
로는 NGINX Ingress Controller, Traefik, HAProxy Ingress 등이 있습니다.
호스트 기반 라우팅: 다양한 도메인 이름을 사용하여 여러 서비스로 트래픽을 라우팅할 수 있습니다.
경로 기반 라우팅: URL 경로를 기반으로 트래픽을 다양한 서비스로 라우팅할 수 있습니다.
SSL/TLS 종료:Ingress
에서 SSL/TLS 연결을 종료하고, 클러스터 내부로는 암호화되지 않은 트래픽을 전송할 수 있습니다.
로드 밸런싱: 여러파드
또는서비스
로의 트래픽을 균등하게 분산할 수 있습니다.
🧐위의 그림처럼
인그레스
를 통해 로드밸런서의 역할과 함께라우터
의 역할도 하고 있는 것을 확인 할 수 있습니다.🤔그런데 왜
ingress
를 할 바에는nodePort
로서비스
를 만들어서 사용하는 것이 더 편하지 않나라는 생각이 들 수 있습니다. 둘은 무슨 차이가 있는 지를 확인해보면 왜Ingress
를 쓰는지 왜NodePort
를 쓰는지 알 수 있습니다. 아래는Ingress
와NoderPort
의 차이입니다.
기능
- 각 노드의 포트를 오픈하여 사용합니다.(ClusterIp + port 오픈)
장점
- 설정이 간단합니다.
- 추가적인 컴포넌트나 설정 없이 외부에서 서비스에 접근할 수 있습니다.
단점
- 포트 관리의 문제가 발생할 수 있습니다.
- 고급 라우팅 규칙, SSL/TLS 종료, 경로 기반 라우팅 등의 기능이 제한적입니다.
기능
- HTTP/HTTPS 트래픽을 처리하기 위한 고급 라우팅 규칙을 제공합니다.
장점
- 하나의 진입점(entry point)를 통해 여러 서비스로 트래픽을 라우팅할 수 있습니다.
- 경로 기반 라우팅, 도메인 기반 라우팅, SSL/TLS 종료, 리다이렉트, 리라이트 등의 고급 기능을 제공합니다.
- 여러 TLS 인증서를 관리할 수 있습니다.
단점
Ingress 컨트롤러
를 설정하고 관리해야 합니다.
초기 설정이NodePort
보다 복잡할 수 있습니다.
1. 외부 요청
사용자 또는 클라이언트가 특정 URL 또는 도메인을 통해 요청을 보냅니다. (예: http://example.com/products)2. Ingress IP 및 포트
요청은Ingress Controller
가 있는 노드 (또는 클라우드 제공자의 로드 밸런서)의 IP 주소와 특정 포트로 들어옵니다. (예: ingress-ip:80)3. Ingress 규칙 확인
Ingress Controller
는Ingress
리소스에 정의된 라우팅 규칙을 확인합니다.
요청 URL, 경로, 호스트 등의 정보를 기반으로 적절한 서비스로 라우팅할 대상을 결정합니다.4. 서비스로 라우팅
Ingress Controller
는 요청을 해당하는Kubernetes 서비스
로 라우팅합니다.5. 적절한 파드로 이동
서비스
는 연결된파드
중 하나로 트래픽을 전달합니다.
🥳
ingress
를 통해 라우팅 규칙을 설정하고로드밸런서
의 역할도 수행해 낼 수 있는데 다음 글에서는 실제로ingress
를 이용하는 방법에 대해서 다루어 보겠습니다.