우선 GKE란 뭘까? Google Cloud에 들어가면 간단하게 설명되어 있다.
Google Kubernetes Engine (이하 GKE)
간단하게 Kubernetes를 자동으로 배포, 확장, 관리할 수 있습니다.
설명 내용만큼이나 설명도 간단하게 적어두었다. 이 것 만으로 이해하기엔 너무 벅차다!
(이 글을 작성중인 나도! 이 글을 읽고있는 당신도! 세상엔 모르는게 너무 많은 배울게 많은 개발자이니까)
그래서 좀 더 자세하고 알기쉽게 설명을 정리해보려고 한다.
더 자세한 내용은 공식문서를 첨부한다 ==> 바로가기
GKE는 완전 관리형 서비스로 CPU사용률 또는 커스텀 측정항목을 기준으로 수평형 Pod 자동확장을 실행할 수 있다. 즉 서비스에 사용자가 많아 트래픽이 몰리는 경우 쿠버네티스는 자동으로 Pod를 확장해서 트래픽을 감당하고 트래픽이 줄어들면 다시 Pod의 숫자를 감소시킨다.
쿠버네티스는 Ingress와 Service Controller 설정을 통해 Load Balancing을 자동으로 생성해준다.
Ingress및 Service Controller는 GKE 네트워크 리소스를 감시하고 부하 분산(Load Balancing)을 배포한다. 컨트롤러는 환경 및 트래픽 변경사항을 기준으로 부하 분산기와 백엔드를 계속 관리하게 된다.
따라서 GKE는 부하 분산은 개발자 중심의 단순한 인터페이스로 동적 부하 분산 역할을 하게 된다.
위에서 설명한 Load BAlancing에서 어떻게 부하분산이 처리되는지 알아보자.
Ingress는 클러스터 외부의 HTTP 혹은 HTTPS 호출에 대해 클러스터 내의 서비스로 routing rule에 의해 연결해주는 기능을 담당하고 있다.
Ingress에 외부에서 연결할 수 있는 URL을 통해 load balancer에서 트래픽 부하를 부산하고 SSL/TLS처리 등을 하고 있다.
위 그림을 보면 GKE 의 Ingress로 Nginx를 사용하도록 설정할 수 있다. Github 저장소