쿠버네티스 ingress (1)

greenTea·2023년 8월 29일
0

쿠버네티스 ingress

Kubernetes Ingress란?

🫠Kubernetes Ingress는 클러스터 외부에서 클러스터 내부의 서비스로 HTTP와 HTTPS 트래픽을 라우팅하는 API 오브젝트입니다. Ingress를 사용하면, URL 경로, 호스트 이름, SSL/TLS 인증서, 로드 밸런싱, 리다이렉트 등과 같은 규칙을 정의하여 외부 요청을 처리할 수 있습니다.

Ingress의 주요 구성요소

  • Ingress 리소스: 사용자가 정의하는 라우팅 규칙을 포함하는 Kubernetes 리소스입니다.
  • Ingress 컨트롤러: Ingress 리소스의 규칙을 실제로 구현하는 컴포넌트. 주요 Ingress 컨트롤러로는 NGINX Ingress Controller, Traefik, HAProxy Ingress 등이 있습니다.

Ingress의 장점

호스트 기반 라우팅: 다양한 도메인 이름을 사용하여 여러 서비스로 트래픽을 라우팅할 수 있습니다.
경로 기반 라우팅: URL 경로를 기반으로 트래픽을 다양한 서비스로 라우팅할 수 있습니다.
SSL/TLS 종료: Ingress에서 SSL/TLS 연결을 종료하고, 클러스터 내부로는 암호화되지 않은 트래픽을 전송할 수 있습니다.
로드 밸런싱: 여러 파드 또는 서비스로의 트래픽을 균등하게 분산할 수 있습니다.

Ingress와 NodePort의 차이

🧐위의 그림처럼 인그레스를 통해 로드밸런서의 역할과 함께 라우터의 역할도 하고 있는 것을 확인 할 수 있습니다.

🤔그런데 왜 ingress를 할 바에는 nodePort서비스를 만들어서 사용하는 것이 더 편하지 않나라는 생각이 들 수 있습니다. 둘은 무슨 차이가 있는 지를 확인해보면 왜 Ingress를 쓰는지 왜 NodePort를 쓰는지 알 수 있습니다. 아래는 IngressNoderPort의 차이입니다.

NodePort

기능

  • 각 노드의 포트를 오픈하여 사용합니다.(ClusterIp + port 오픈)

장점

  • 설정이 간단합니다.
  • 추가적인 컴포넌트나 설정 없이 외부에서 서비스에 접근할 수 있습니다.

단점

  • 포트 관리의 문제가 발생할 수 있습니다.
  • 고급 라우팅 규칙, SSL/TLS 종료, 경로 기반 라우팅 등의 기능이 제한적입니다.

Ingress

기능

  • HTTP/HTTPS 트래픽을 처리하기 위한 고급 라우팅 규칙을 제공합니다.

장점

  • 하나의 진입점(entry point)를 통해 여러 서비스로 트래픽을 라우팅할 수 있습니다.
  • 경로 기반 라우팅, 도메인 기반 라우팅, SSL/TLS 종료, 리다이렉트, 리라이트 등의 고급 기능을 제공합니다.
  • 여러 TLS 인증서를 관리할 수 있습니다.

단점
Ingress 컨트롤러를 설정하고 관리해야 합니다.
초기 설정이 NodePort보다 복잡할 수 있습니다.

Ingress 요청 과정

1. 외부 요청
사용자 또는 클라이언트가 특정 URL 또는 도메인을 통해 요청을 보냅니다. (예: http://example.com/products)

2. Ingress IP 및 포트
요청은 Ingress Controller가 있는 노드 (또는 클라우드 제공자의 로드 밸런서)의 IP 주소와 특정 포트로 들어옵니다. (예: ingress-ip:80)

3. Ingress 규칙 확인
Ingress ControllerIngress 리소스에 정의된 라우팅 규칙을 확인합니다.
요청 URL, 경로, 호스트 등의 정보를 기반으로 적절한 서비스로 라우팅할 대상을 결정합니다.

4. 서비스로 라우팅
Ingress Controller는 요청을 해당하는 Kubernetes 서비스로 라우팅합니다.

5. 적절한 파드로 이동
서비스는 연결된 파드 중 하나로 트래픽을 전달합니다.

마무리

🥳ingress를 통해 라우팅 규칙을 설정하고 로드밸런서의 역할도 수행해 낼 수 있는데 다음 글에서는 실제로 ingress를 이용하는 방법에 대해서 다루어 보겠습니다.

profile
greenTea입니다.

0개의 댓글