🔹Kubernetes

kubernetes Service vs Ingress 비교

terranbin 2025. 2. 2. 15:20
728x90
SMALL

 

kubectl get ingress와 kubectl get service의 차이점 정리

 

항목 ingress Sevice
역할 클러스터 외부 트래픽(HTTP/HTTPS)을 여러 서비스로 라우팅. 클러스터 내부에서 특정 Pod들에 트래픽을 전달하는 네트워크 리소스.
트래픽 처리 클러스터 외부에서 들어오는 HTTP/HTTPS 요청을 처리. 클러스터 내부의 Pod(애플리케이션) 간 통신을 처리.
외부 접속 도메인(예: example.com)이나 경로(예: /api) 기반으로 외부 접속. External IP, NodePort 등을 통해 클러스터 외부에 노출 가능.
설치 필요 여부 Ingress Controller 필요 (예: NGINX, Traefik). Kubernetes 기본 리소스라 추가 컨트롤러 설치 불필요.
사용 주요 리소스 - Ingress 리소스
- IngressClass (Controller 정의).
- Service 리소스
- Endpoints (Pod과 연결).
HTTP/HTTPS 지원 HTTP/HTTPS 기본 지원 + TLS(SSL) 인증 가능. HTTP/HTTPS 직접 지원은 아님 (추가 설정 필요).
주요 사용 사례 클러스터 내부 여러 서비스를 외부에 경로/도메인 기반으로 노출. 특정 Pod로 트래픽 전달 (ClusterIP, NodePort, LoadBalancer).
관련 명령어 kubectl get ingress kubectl get servicesd
Layer L7 L4

🔹 상황별 비교

상황 Ingress 사용 Service 사용
클러스터 외부에서 웹 애플리케이션에 접속하려는 경우. 적합 (HTTP/HTTPS 트래픽 처리 + 도메인 경로 기반 라우팅). 가능 (단일 서비스 접근, NodePort/LoadBalancer 필요).
여러 서비스에 대해 경로 또는 도메인 기반으로 노출. 적합 (도메인 기반 트래픽 분배 가능). 불가능.
내부 서비스 간 통신 (Pod-to-Pod). 불필요. 적합 (ClusterIP 서비스 사용).
TLS 인증서(HTTPS)를 적용하려는 경우. 적합 (Ingress에서 통합 관리 가능). 불가능 (외부 인증서 처리 필요).

🔹 Ingress와 Service가 함께 동작하는 방식

Ingress는 Service를 기반으로 동작하며, 다음과 같은 관계

  1. Service:
    • 클러스터 내부 Pod와 연결(예: example-service)하여 트래픽을 전달.
  2. Ingress:
    • 클러스터 외부에서 들어오는 HTTP/HTTPS 요청을 Ingress Controller가 처리
    • 설정된 규칙에 따라 Service로 전달.

🎯 결론

  1. Service는 Pod와 클러스터 내부 통신을 담당하며, 외부 접근도 가능하지만 제한적.
  2. Ingress는 HTTP/HTTPS 트래픽을 외부에서 내부로 라우팅하며, 경로와 도메인 기반 설정 가능.
  3. Ingress와 Service는 함께 사용되며, Ingress는 Service를 통해 Pod로 트래픽을 전달.
LIST