본문 바로가기

Docker & Kubenetes

쿠버네티스 서비스와 인그레스(SVC, Ingress)

서비스 (Service)

파드는 컨트롤러가 관리하므로 한 곳에 고정되지 않고 클러스터 안을 옳겨 다닙니다.

이 과정에서 노드를 옮기면서 실행되기도 하고 파드의 IP가 변경 되기도 하는데, 동적으로 변하는 파드들에 고정적으로 접근하기 위해 사용하는 것이 서비스(Service)입니다.

 

서비스를 사용하면 파드가 클러스터 안 어디에 있든 고정 주소를 통해 접근할 수 있으며, 클러스터 외부에서 내부의 파드에 접근할 수도 있습니다.

 

서비스는 주로 L4 영역에서 통신할 때 사용하고 인그레스는 L7 영역에서 통신할 때 사용한다는 차이가 있습니다.

 

서비스 타입

- ClusterIP : 클러스터 내부에서만 사용할 수 있으며 클러스터IP를 이용하여 서비스에 연결된 파드에 접근한다.

- NodePort : 서비스 하나에 모든 노드의 포트를 할당, 지정된 포트 번호를 사용하여 파드에 접근할 수 있으며 외부에서도 접근할 수 있다.

- LoadBalancer : 클라우드에서 제공하는 로드밸런서와 파드를 연결한 후 로드밸런서 IP를 이용하여 클러스터 외부에서 접근 할 수 있도록 한다.

- ExternalName : 클러스터 안에서 외부로 접근할 때 주로 사용, 외부에서 접근하면 설정해둔 CNAME값을 이용하여 클러스터 외부에 접근할 수 있다.

인그레스 (Ingress)

클러스터 외부에서 내부로 접근하는 요청들을 어떻게 처리할 지 정해둔 규칙의 모음으로, 사용자가 로드밸런싱을 편리하게 구성할 수 있도록 한다.

외부에서 접근할 URL, 로드밸런싱, SSL 인증서 처리, 도메인 기반 가상 호스팅도 제공한다.

 

인그레스 자체는 이를 정의해둔 자원일 뿐이며, 실제로 동작 시키는 것은 인그레스 컨트롤러이다.

인그레스 컨트롤러

인그레스 컨트롤러를 인그레스와 연동하면 리소스를 사용할 수 있다.

대부분 nginx에서 제공하는 인그레스(ingress-nginx)를 사용하고 이 외에도 여러 로드밸런서 장비 회사에서 제공하거나 GCP에서 제공하는 인그레스 컨트롤러(ingress-gce)도 있다.