이 문서에서는 Google Kubernetes Engine (GKE) 내에서 멀티 클러스터 게이트웨이가 작동하는 방식을 설명합니다. 멀티 클러스터 게이트웨이는 여러 GKE 클러스터에 배포된 서비스의 트래픽을 관리할 수 있는 강력한 네트워킹 솔루션입니다.
이 문서는 조직의 네트워크를 설계하는 클라우드 설계자 및 네트워킹 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 태스크를 참고하세요.
개요
멀티 클러스터 게이트웨이는 Kubernetes Gateway API 리소스를 사용하여 구성됩니다. GKE 게이트웨이 컨트롤러는 이러한 리소스(게이트웨이, HTTPRoute)를 감시하고 필요한Google Cloud 전역 부하 분산 인프라를 자동으로 프로비저닝하고 유지관리합니다. 이 인프라는 Fleet 내의 여러 GKE 클러스터에 배포된 서비스에 고급 트래픽 관리를 제공합니다. 멀티 클러스터 게이트웨이는 Google Cloud의 전역 부하 분산 인프라를 사용하여 애플리케이션에 단일 통합 진입점을 제공합니다. 이 방식에는 다음과 같은 이점이 있습니다.
- 관리 간소화
- 안정성 개선
- 고급 트래픽 관리 기능을 사용 설정합니다.
트래픽 관리 기능
멀티 클러스터 게이트웨이는 여러 클러스터 간에 트래픽을 관리할 수 있는 고급 기능을 제공합니다. 단계적 출시 및 블루-그린 전략과 같은 정교한 라우팅 전략을 구현하여 변경사항을 안전하게 배포할 수 있습니다. 세부적인 제어를 위해 헤더 기반 일치를 사용하여 소량의 트래픽으로 변경사항을 테스트하거나 가중치별로 트래픽을 분할하여 서로 다른 클러스터 백엔드 간에 요청을 점진적으로 이동할 수 있습니다.
멀티 클러스터 게이트웨이를 사용하면 트래픽을 미러링할 수도 있습니다. 트래픽 미러링은 사용자에게 영향을 주지 않고 성능을 테스트하기 위해 실시간 사용자 요청의 사본을 새 서비스로 전송합니다. 신뢰성을 보장하고 과부하를 방지하기 위해 멀티 클러스터 게이트웨이는 상태 기반 장애 조치 및 용량 기반 부하 분산을 지원하며, 이는 서비스의 정의된 용량에 따라 요청을 분산합니다.
멀티 클러스터 게이트웨이 작동 방식
멀티 클러스터 게이트웨이 설정에 참여하는 모든 GKE 클러스터는 Fleet에 등록되어야 합니다. Fleet은 클러스터의 논리적 그룹을 제공하여 클러스터 간에 일관된 관리와 통신을 지원합니다. 플릿 내의 하나의 GKE 클러스터가 구성 클러스터로 지정됩니다.
구성 클러스터는 멀티 클러스터 게이트웨이 구성의 중앙 집중식 제어 지점 역할을 합니다. Gateway, HTTPRoute과 같은 모든 멀티 클러스터 게이트웨이 API 리소스는 지정된 클러스터에만 배포합니다.
GKE 게이트웨이 컨트롤러는 구성 클러스터의 Kubernetes API 서버에서 이러한 리소스를 감시합니다.
구성 클러스터를 선택하려면 리전 클러스터와 같은 고가용성 GKE 클러스터를 고려하세요. 이렇게 하면 컨트롤러가 게이트웨이 API 리소스 업데이트를 지속적으로 조정할 수 있습니다.
멀티 클러스터 게이트웨이 컨트롤러는 멀티 클러스터 서비스 (MCS)를 사용하여 Fleet 내 여러 GKE 클러스터에서 Kubernetes 서비스를 검색하고 액세스합니다. MCS는 Fleet 내의 서로 다른 GKE 클러스터에서 실행되는 서비스 간의 서비스 검색 및 연결을 지원하는 GKE 기능입니다.
MCG는 MCS를 사용하여 외부 트래픽을 서비스로 라우팅하기 위해 어떤 클러스터에서 어떤 서비스를 사용할 수 있는지 검색합니다. MCG 컨트롤러는 MCS API 리소스를 사용하여 여러 클러스터에 걸쳐 있고 주소 지정이 가능한 단일 서비스로 포드를 그룹화합니다.
GKE Gateway 컨트롤러는 Gateway API 리소스에 정의된 구성을 기반으로 외부 애플리케이션 부하 분산기 또는 내부 애플리케이션 부하 분산기를 제공합니다. 이 부하 분산기는 애플리케이션의 프런트엔드 역할을 하며 위치에 관계없이 전체 인스턴스에 걸쳐 정상 상태의 포드로 트래픽을 직접 분산합니다.
다음 상위 수준 단계에서는 멀티 클러스터 게이트웨이를 배포하는 프로세스를 설명합니다.
게이트웨이 정의: 멀티 클러스터 게이트웨이 설정에서 구성 클러스터의 트래픽 진입점을 정의하는 게이트웨이 리소스를 만듭니다. 게이트웨이 리소스는 특정 유형의 부하 분산기(예: 전역 외부 애플리케이션 부하 분산기 또는 리전 내부 애플리케이션 부하 분산기)의 템플릿인 GatewayClass를 지정합니다. GKE에서는 다음 GatewayClass가 멀티 클러스터 게이트웨이를 배포합니다.
gke-l7-global-external-managed-mc: 전역 외부 애플리케이션 부하 분산기를 프로비저닝합니다.gke-l7-regional-external-managed-mc: 리전 외부 애플리케이션 부하 분산기를 프로비저닝합니다.gke-l7-cross-regional-internal-managed-mc: 내부 애플리케이션 부하 분산기를 프로비저닝합니다.gke-l7-rilb-mc: 내부 애플리케이션 부하 분산기를 프로비저닝합니다.gke-l7-gxlb-mc: 기본 애플리케이션 부하 분산기를 프로비저닝합니다.
또한 게이트웨이는 노출할 네트워크 리스너 (포트 및 프로토콜)를 지정하여 부하 분산기가 수신 트래픽을 리슨하는 방법을 정의합니다. GKE에서 지원하는 게이트웨이 클래스에 대한 자세한 내용은 멀티 클러스터 서비스를 참고하세요.
게이트웨이에 HTTPRoute 연결: HTTPRoute 리소스는 수신되는 HTTP/S 트래픽이 특정 백엔드 서비스로 라우팅되는 방식을 정의합니다. HTTPRoute는 게이트웨이 리소스에 연결되며 호스트 이름, 경로, 헤더 등을 기반으로 규칙을 지정합니다. HTTPRoute는 트래픽 분할 및 트래픽 미러링과 같은 고급 트래픽 관리 기능도 지원합니다.
부하 분산기 만들기: 게이트웨이 및 HTTPRoute 리소스를 배포하면 GKE 게이트웨이 컨트롤러가 이러한 API 객체를 해석하고 필요한 Google Cloud 부하 분산 인프라를 동적으로 구성합니다. 그러면 부하 분산기가 포드가 있는 클러스터와 관계없이 올바른 포드로 트래픽을 전달합니다. 이 프로세스는 트래픽을 라우팅하는 매우 효율적이고 확장 가능한 방법을 제공합니다.
트래픽 흐름
다음 다이어그램은 멀티 클러스터 게이트웨이가 서로 다른 리전의 두 GKE 클러스터에서 실행되는 애플리케이션의 중앙 집중식 부하 분산기로 작동하는 방식을 보여줍니다.
부하 분산기의 동작은 HTTPRoute 리소스에 정의된 규칙에 따라 구성됩니다. 사용자 트래픽이 프로비저닝된 Google Cloud 부하 분산기의 IP 주소에 도착하면 (게이트웨이 리소스에 의해 정의됨) Google 관리 프록시인 부하 분산기가 트래픽을 라우팅합니다. 이 프록시 (Google 프런트 엔드 프록시 또는 리전 프록시)는 다음 기준에 따라 올바른 GKE 클러스터 내의 적절한 백엔드 서비스 엔드포인트로 트래픽을 전달합니다.
- 상태 점검
- 트래픽 분할 규칙
- 용량
트래픽은 선택한 클러스터의 최적 포드로 직접 흐릅니다.
다음 단계
- 멀티 클러스터 게이트웨이를 사용 설정하는 방법을 알아봅니다.
- GKE에서 게이트웨이가 작동하는 방식에 관한 개요를 읽어보세요.