본문 바로가기
CSP (Cloud Service Provider)/GCP

GKE - 비공개 클러스터(Private Cluster)

by BTC_문돌이 2022. 4. 22.

안녕하세요 Hallo팀 입니다~! 오늘은 GKE 비공개 클러스터에 대해서 알아보겠습니다.

비공개 클러스터는 내부 IP주소에만 의존하는 VPC 기반 클러스터 유형으로, 노드, Pod, 서비스에 고유한 IP주소 서브넷 범위가 필요하다.

비공개 클러스터는 외부 IP 주소가 없는 노드를 사용하므로, 인터넷의 클라이언트가 노드의 IP 주소에 연결할 수 없다.

공개 클러스터와 달리 비공개 클러스터에는 제어 영역 비공개 엔드포인트와 제어 영역 공개 엔드포인트가 모두 있다. 제어 영역의 비공개 엔드포인트에 고유한 /28 IP 주소 범위를 지정해야 하며 제어 영역의 공개 엔드포인트를 사용 중지할 수 있다.

그리고 노드가 내부 IP 주소를 사용하더라도 Load Balancer 유형의 외부 서비스나 외부 인그레스를 사용함으로써 외부 클라이언트가 클러스터의 서비스에 연결이 가능하도록 할 수 있다.

 

비공개 클러스터에서 비공개 Google 액세스 사용

비공개 클러스터가 공유 VPC 서비스 프로젝트에서 생성된 경우, 비공개 클러스터에서 사용하는 서브넷에 비공개 Google 액세스를 수동으로 사용 설정해야 한다. 비공개 Google 액세스는 공유 VPC 클러스터를 제외하고 비공개 클러스터에서 기본적으로 사용 설정된다. 

비공개 Google 액세스는 Google Cloud API 및 Google 비공개 네트워크에 대한 서비스 액세스 권한을 비공개 노드와 워크로드에 제공한다. 예를 들어 비공개 클러스터가 Artifact Registry에서 컨테이너 이미지에 액세스하고 Cloud Logging으로 로그를 전송하려면 비공개 Google 액세스가 필요하다.

 

비공개 클러스터의 제어 영역

모든 GKE 클러스터에는 Control Plane에서 관리되는 Kubernetes API 서버가 있다. Control Plane은 Google 소유 프로젝트의 VPC 네트워크에 있는 가상 머신(VM)에서 실행되고, 리전 클러스터에는 여러 제어 영역이 있으며 각 제어 영역은 자체 VM에서 실행된다. 비공개 클러스터에서 Control Plane의 VPC 네트워크는 VPC 네트워크 피어링을 통해 클러스터의 VPC 네트워크에 연결된다. 노드와 Control Plane 간의 트래픽은 내부 IP 주소를 통해 라우팅된다.

 

VPC 네트워크 피어링 재사용

비공개 클러스터는 클러스터가 같은 위치에 있고 동일한 VPC 네트워크를 사용하는 경우에 공통 VPC 네트워크 피어링 연결을 사용한다.

  • 영역 클러스터의 경우: 영역에서 생성된 첫 번째 비공개 클러스터는 클러스터의 VPC 네트워크에 대해 새로운 VPC 네트워크 피어링 연결을 생성한다. 동일한 영역 및 VPC 네트워크에서 생성되는 추가적인 영역 비공개 클러스터는 기존에 생성된 동일한 피어링 연결을 사용한다.
  • 리전 클러스터의 경우: 리전에서 처음 생성된 비공개 클러스터가 클러스터의 VPC 네트워크에 대한 새 VPC 네트워크 피어링 연결을 생성한다. 동일한 리전 및 VPC 네트워크에서 생성되는 추가적인 리전 비공개 클러스터는 동일한 피어링 연결을 사용한다.
  • GKE는 영역 클러스터가 리전 클러스터와 동일한 리전에 속하더라도 영역 클러스터와 리전 클러스터는 공통 피어링을 사용하지 않고, 각각의 피어링 연결을 사용한다.

 

비공개 클러스터의 엔드포인트

비공개 클러스터의 Control Plane에는 공개 엔드포인트 외에도 비공개 엔드포인트가 있다. 비공개가 아닌 클러스터의 제어 영역에는 공개 엔드포인트만 있다.

  • 비공개 엔드포인트는 Control Plane의 VPC 네트워크에 있는 내부 IP 주소이다. 비공개 클러스터에서 노드는 항상 Control Plane의 비공개 엔드포인트와 통신한다. 구성에 따라 kubectl과 같은 도구를 사용하여 클러스터를 관리할 수 있다. 비공개 클러스터를 통해 동일한 서브넷을 사용하는 모든 VM은 비공개 엔드포인트에 액세스할 수 있다.

공개 엔드포인트제어 영역의 외부 IP 주소이다. 기본적으로 kubectl과 같은 도구는 공개 엔드포인트에서 Control Plane과 통신한다.

 

클러스터 엔드포인트에 액세스

다음 구성 중 하나를 사용하여 엔드포인트에 대한 액세스를 제어할 수 있다.

 

1. 공개 엔드포인트 액세스 중지

Control Plane에 대한 모든 인터넷 액세스를 차단하므로 가장 안전한 옵션이디. Cloud Interconnect나 Cloud VPN을 사용하여 온프레미스 네트워크를 Google Cloud에 연결하도록 구성한 경우에 적합하다.

공개 엔드포인트 액세스를 중지하면 비공개 엔드포인트에 승인된 네트워크를 구성해야 한다. 이 작업을 수행하지 않으면 클러스터와 동일한 서브넷의 클러스터 노드와 VM에서만 비공개 엔드포인트에 연결할 수 있다. 이러한 설정의 경우에는 승인된 네트워크는 내부 IP 주소여야 한다.

(공개 엔드포인트에 대한 액세스를 사용 안함으로 설정하더라도 Google에서 예약 유지보수 및 자동 업그레이드와 같은 클러스터 관리 목적으로 Control Plane의 공개 엔드포인트를 사용할 수 있다.)

 

2. 공개 엔드포인트 액세스 사용 설정, 승인된 네트워크 사용 설정

이 설정에서 승인된 네트워크는 Control Plane의 공개 엔드포인트에 적용된다. 이는 Cloud Interconnect나 Cloud VPN을 사용하여 클러스터의 VPC 네트워크에 연결되지 않은 소스 네트워크에서 클러스터를 관리해야 하는 경우에 적합하다.

 

3. 공개 엔드포인트 액세스 사용 설정, 승인된 네트워크 중지

기본값이며 최소한으로 제한되는 옵션이다. 승인된 네트워크를 사용 설정하지 않으므로 인증 후 모든 소스 IP 주소에서 클러스터를 관리할 수 있다.

이상입니다. 좋은 참고자료가 되었으면 좋겠습니다.

 

출처

https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept

댓글