본문 바로가기
개발/개발공부

Kubernetes Ingress / 쿠버네티스 인그레스 정리

by 치킨개발자 2022. 12. 25.
728x90

Kubernets Ingress


클러스터 외부에서 서비스에 접근할 수 있는 방법은 NodePort, LoadBalancer, Ingress 등이 존재

- ClusterIP

cluster-internal IP를 노출
외부와 통신하기 위해서는 추가적인 netfilter설정이 필요

- NodePort

고정 포트로 각 노드의 IP를 서비스에 노출
노드가 사라졌을 때 자동으로 다른 노드를 통해 접근 불가능
변경사항 발생시 직접 반영

- LoadBalancer

LB통해서 서비스를 외부에 노출
각 서비스별 자체 IP주소와 LB연결이 필요
서비스별로 LB를 붙여야해서 비용이 증가

- Ingress

여러 서비스를 하나의 Ingress로 노출 가능
request 받아서 어느 서비스로 보낼지 결정

(참고)각각 차이에 대해 이해하기 쉽게 정리된 글입니다.
https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0

Ingress 구조 (https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting)

 

Ingress, Ingress Controller


Ingress는 클러스터 내 서비스에 대한 외부 접근을 관리하는 API 오브젝트
Ingress resource를 통해 서비스를 외부에 노출시킴
Ingress controller가 필요한 이유는?
- Ingress는 단지 규칙을 정의하는 선언적 Object
- Ingress controller를 통해 적용되어야만 사용 가능
- Ingress controller가 외부로부터 네트워크 요청을 받았을때 Object규칙을 통해 처리함
- 각각 다양한 Kubernertes(GCP, AWS 등)에 따라 제공하는 controller를 사용하거나 직접 구동 가능

Ingress를 통해 서비스로 연결되는 순서
1. client가 DNS look up, Ingress controller의 ip를 받음
2. Ingress controller에 host정보를 담은 request를 보냄
3. 컨트롤러에서 어느 서비스에 접근하려는지 확인, Ingress에서 각 service 의 endpoints를 갖고 있음
4. 서비스에 연결된 파드에 직접 요청을 보냄

Ingress, Ingress Controller 동작 구조



이외에도 readiness probe, headless-service, TLS적용 등 학습이 필요합니다.

반응형

댓글