Hunny's Daily

개발과 일상에서의 달콤한 순간들을 기록하며, 유용한 팁과 인사이트를 공유합니다.

Kubernetes Service와 Ingress 역할 차이 정리

내부 통신과 외부 트래픽은 어떻게 나뉘는가

Kubernetes에서 애플리케이션을 배포하면 반드시 Service와 Ingress를 접하게 된다. 두 리소스 모두 트래픽을 전달하는 역할을 하지만, 목적과 사용 위치는 명확히 다르다. 이 글에서는 Kubernetes Service와 Ingress의 역할 차이를 중심으로, 각각 언제 사용해야 하는지 정리한다.


Kubernetes Service의 역할

Service는 Pod 집합에 대한 안정적인 접근 지점을 제공하는 리소스다.
Pod는 언제든지 재생성될 수 있고 IP가 변경되기 때문에, Pod에 직접 접근하는 방식은 적합하지 않다.

Service의 주요 역할은 다음과 같다.

  • Pod IP 변경과 무관한 고정 엔드포인트 제공
  • 여러 Pod에 대한 로드밸런싱
  • 서비스 간 내부 통신 표준화

Service는 기본적으로 클러스터 내부 통신을 책임진다.


Kubernetes Ingress의 역할

Ingress는 외부에서 들어오는 HTTP/HTTPS 트래픽을 내부 Service로 전달하기 위한 규칙을 정의한다.
Ingress 자체는 트래픽을 처리하지 않으며, 실제 처리는 Ingress Controller가 수행한다.

Ingress의 주요 역할은 다음과 같다.

  • 외부 트래픽의 진입 지점 제공
  • 도메인 및 경로 기반 라우팅
  • TLS(HTTPS) 종료 지점 제공

Ingress는 외부 요청을 클러스터 내부로 연결하는 역할을 한다.


Service와 Ingress의 근본적인 차이

두 리소스의 가장 큰 차이는 트래픽이 들어오는 위치다.

  • Service
    • 클러스터 내부 기준
    • Pod 앞단의 접근 지점
  • Ingress
    • 클러스터 외부 기준
    • 외부 트래픽의 진입 지점

Ingress는 Service 위에서 동작하며, Pod를 직접 대상으로 삼지 않는다.


트래픽 흐름으로 보는 차이

실제 트래픽 흐름은 다음과 같다.

  • 외부 사용자 → Ingress → Service → Pod
  • 내부 서비스 → Service → Pod

Ingress는 외부 요청에만 관여하며, 내부 통신은 Service만으로 충분하다.


왜 Service와 Ingress를 분리했는가

Kubernetes는 네트워크 역할을 명확히 분리했다.

  • Service는 연결 안정성로드밸런싱 담당
  • Ingress는 라우팅 정책외부 노출 담당

이 분리를 통해 각 역할을 단순화하고, 확장성과 운영성을 확보한다.


Service만으로 충분한 경우

다음과 같은 경우에는 Ingress 없이 Service만 사용해도 된다.

  • 내부 서비스 간 통신
  • 배치 작업이나 백그라운드 서비스
  • 외부 노출이 필요 없는 시스템

이 경우 대부분 ClusterIP Service를 사용한다.


Ingress가 필요한 경우

다음과 같은 경우에는 Ingress가 필요하다.

  • 외부 사용자가 접근하는 웹 서비스
  • 여러 서비스를 하나의 도메인으로 운영
  • URL 경로 기반 라우팅이 필요한 경우
  • HTTPS 인증서를 중앙에서 관리하고 싶은 경우

Ingress는 외부 트래픽 관리에 최적화된 구조다.


Service 타입과 Ingress의 관계

Ingress는 일반적으로 ClusterIP Service와 함께 사용된다.

  • Service는 내부 접근용
  • Ingress는 외부 접근용

NodePort나 LoadBalancer Service를 직접 사용하는 방식보다 Ingress를 사용하는 것이 운영과 비용 측면에서 유리한 경우가 많다.


자주 발생하는 오해

다음과 같은 오해가 자주 발생한다.

  • Ingress가 Pod로 직접 트래픽을 보낸다
  • Service와 Ingress는 대체 관계다
  • Ingress만 있으면 Service가 필요 없다

Ingress와 Service는 대체 관계가 아니라 보완 관계다.


언제 무엇을 선택해야 하는가

선택 기준을 단순화하면 다음과 같다.

  • Pod에 안정적으로 접근해야 하는가 → Service
  • 외부에서 HTTP/HTTPS로 접근해야 하는가 → Ingress

이 기준을 바탕으로 네트워크 구조를 설계하면 된다.


정리

Kubernetes Service와 Ingress는 서로 다른 문제를 해결하는 리소스다. Service는 Pod 앞단의 안정적인 접근 지점 역할을 하고, Ingress는 외부 트래픽을 내부 Service로 라우팅한다. 두 리소스의 역할 차이를 이해하면 Kubernetes 네트워크 구조를 훨씬 명확하게 설계할 수 있다.