
🫠
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를 이용하는 방법에 대해서 다루어 보겠습니다.