05-16 00:01
Recent Posts
Recent Comments
관리 메뉴

miinsun

[이론] 쿠버네티스 Ingress 본문

Infra/Kubernetes

[이론] 쿠버네티스 Ingress

miinsun 2023. 6. 13. 13:39

유튜브 강의 '따배쿠'와 책 '쿠버네티스 입문'을 정리한 자료입니다.

 


 

📌 Kubernetes Ingress란?

쿠버네티스의 인그레스는 주로 클러스터 외부에서 안에 있는 파드에 접근할 때 사용하는 방법이다. 서비스와의 차이점은 주로 L7 영역의 통신을 담당해서 처리한다는 것이다.

인그레스는 임의의 포트 또는 프로토콜을 노출시키지 않는다. HTTP와 HTTPS 이외의 서비스를 인터넷에 노출하려면 보통 Service.Type=NodePort 또는 Service.Type=LoadBalancer 유형의 서비스를 사용한다.

  • HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출
  • Service에 외부 URL을 제공
  • 트래픽을 로드밸런싱
  • SSL 인증서 처리
  • Virtual hosting을 지정

 

※ 인그레스 유의점

클라우드 서비스로 쿠버네티스를 구성하면 별다른 설정없이 자체 로드밸런서 서비스와 연동해 인그레스를 사용할 수 있다.

클라우드 서비스를 사용하지 않고 직접 쿠버네티스 클러스터를 구축한다면 인그레스 컨트롤러를 직접 인그레스와 연동해야 한다. 이때 가장 많이 사용되는 도구는 쿠버네티스에서 제공하는 ingress-nginx이다.

 


📌 ingress-nginx 컨트롤러

ingress-nginx는 NGINX를 리버스 프록시 및 로드 밸런서를 위해 사용할 수 있는 쿠버네티스용 ingress controller이다.

https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme

 

GitHub - kubernetes/ingress-nginx: Ingress-NGINX Controller for Kubernetes

Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.

github.com

nginx를 이용하는 인그레스 컨트롤러 외에도 HAProxy, Envoy, Kong 등 소프트웨어를 이용하는 인그레스 컨트롤러가 있고, Citrix, F5와 같은 로드밸런서 장비 회사에서 제공하는 인그레스 컨트롤러도 있다.

더 다양한 ingress controller은 공식 문서에서 확인 가능하다.

https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/

 

📌 인그레스를 활용한 무중단 배포

tech.kakao

※ 무중단 배포 시 주의할 점

  • 운영중인 서비스에 맞게 maxSurge와 maxUnavailable 필드 설정
  • readinessProbe 지원 확인
    • readinessProbe는 컨테이너가 서비스 요청을 처리할 준비가 보장되었을 때 트래픽 처리를 요청하는 것
    • livenessProbe 결과가 OK더라도 컨테이너가 readinessProbe를 지원하지 않으면 아직 초기화 과정이 진행되지 못한 컨테이너는 요청이 가도 응답을 제대로 하지 못할 
  • 쿠버네티스와 컨테이너 안에 그레이스풀 종료 설정
    • 그레이스 풀 종료는 컨테이너에서 SIGTERM 신호를 받았을 때 기존에 받은 요청만 처리하고 새 요청은 받지 않는 것을 의미
    • 그레이스 풀 종료 옵션을 사용할 수 없을 때는 프리스톱 훅을 이용할 수 있다.
Comments