🔹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를 기반으로 동작하며, 다음과 같은 관계
- Service:
- 클러스터 내부 Pod와 연결(예: example-service)하여 트래픽을 전달.
- Ingress:
- 클러스터 외부에서 들어오는 HTTP/HTTPS 요청을 Ingress Controller가 처리
- 설정된 규칙에 따라 Service로 전달.
🎯 결론
- Service는 Pod와 클러스터 내부 통신을 담당하며, 외부 접근도 가능하지만 제한적.
- Ingress는 HTTP/HTTPS 트래픽을 외부에서 내부로 라우팅하며, 경로와 도메인 기반 설정 가능.
- Ingress와 Service는 함께 사용되며, Ingress는 Service를 통해 Pod로 트래픽을 전달.
LIST