GKE 연결 클러스터를 사용하면 AWS, Azure 또는 다른 위치에서 호스팅되는 기존 Kubernetes 클러스터를 Google Kubernetes Engine(GKE) Enterprise 버전 대시보드로 가져와 중앙 집중식으로 관리할 수 있습니다. 여기에는 CNCF 호환 Kubernetes 클러스터를 연결할 수 있는 기능이 포함됩니다.
지원되는 Kubernetes 클러스터
x86 노드가 포함된 호환 Kubernetes 클러스터를 Fleet에 추가한 후 Google Cloud 콘솔에서 GKE 클러스터와 함께 표시할 수 있습니다.
Google은 모든 Kubernetes 배포에서 완전한 기능 호환성을 검증하지는 않지만 발견된 모든 비호환성 문제는 여기에 설명되어 있습니다. 자세한 내용과 문제 해결 지원은 Google Kubernetes Engine(GKE) Enterprise 버전 및 업그레이드 지원을 참조하세요.
기본 요건
클러스터가 클러스터 요구사항을 충족하는지 확인합니다.
클러스터를 연결할 때는 다음을 지정해야 합니다.
- 지원되는 Google Cloud 관리 리전
- 플랫폼 버전
관리 리전은 연결된 클러스터를 관리하기 위한 Google Cloud 리전입니다. 모든 지원되는 리전을 선택할 수 있지만 권장사항은 클러스터에 지리적으로 가장 가까운 리전을 선택하는 것입니다. 관리 리전에는 사용자 데이터가 저장되지 않습니다.
플랫폼 버전은 클러스터에 설치할 GKE 연결 클러스터 버전입니다. 다음 명령어를 실행하여 모든 지원되는 버전을 나열할 수 있습니다.
gcloud container attached get-server-config \
--location=GOOGLE_CLOUD_REGION
GOOGLE_CLOUD_REGION을 클러스터를 관리할 Google Cloud 위치의 이름으로 바꿉니다.
플랫폼 버전 번호 지정
이 문서에서는 Kubernetes 버전과 구분하기 위해 GKE 연결 클러스터 버전을 플랫폼 버전이라고 부릅니다. GKE 연결 클러스터는 1.21.5-gke.1과 같이 GKE와 동일한 버전 번호 지정 규칙을 따릅니다. 클러스터를 연결하거나 업데이트할 때는 부 버전이 클러스터의 Kubernetes 버전보다 한 단계 낮거나 동일한 플랫폼 버전을 선택해야 합니다. 예를 들어 Kubernetes v1.22.*를 실행하는 클러스터를 GKE 연결 클러스터 플랫폼 버전 1.21.* 또는 1.22.*와 연결할 수 있습니다.
이렇게 하면 GKE 연결 클러스터를 업그레이드하기 전에 다음 부 버전으로 클러스터를 업그레이드할 수 있습니다.
클러스터 연결
CNCF 호환 클러스터를 Google Cloud Fleet 관리에 연결하려면 다음 명령어를 실행하세요.
kubeconfig 파일에 연결하려는 클러스터의 항목이 있는지 확인합니다. 구체적인 안내는 배포판에 따라 다릅니다.
다음 명령어를 실행하여 클러스터의 kubeconfig 컨텍스트를 추출하고 이를
KUBECONFIG_CONTEXT
환경 변수에 저장합니다.KUBECONFIG_CONTEXT=$(kubectl config current-context)
클러스터를 등록하는 명령어는 클러스터에 공개 또는 비공개 OIDC 발급기관이 있는지에 따라 약간 다릅니다. 클러스터에 적용되는 탭을 선택합니다.
비공개 OIDC 발급기관
gcloud container attached clusters register
명령어를 사용하여 클러스터를 등록합니다.gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --context=KUBECONFIG_CONTEXT \ --has-private-issuer \ --kubeconfig=KUBECONFIG_PATH
다음을 바꿉니다.
- CLUSTER_NAME: 클러스터 이름
- GOOGLE_CLOUD_REGION: 클러스터를 관리할 Google Cloud 리전
- PROJECT_NUMBER: 클러스터를 등록할 Fleet 호스트 프로젝트
- PLATFORM_VERSION: 클러스터에 사용할 플랫폼 버전
- KUBECONFIG_CONTEXT: 클러스터에 액세스하기 위한 kubeconfig의 컨텍스트
- KUBECONFIG_PATH: kubeconfig 경로
공개 OIDC 발급기관
클러스터의 OIDC 발급기관 URL을 검색하고 나중에 사용할 수 있도록 저장합니다. 구체적인 안내는 배포판에 따라 다릅니다.
다음 명령어를 실행하여 클러스터의 kubeconfig 컨텍스트를 추출하고 이를
KUBECONFIG_CONTEXT
환경 변수에 저장합니다.KUBECONFIG_CONTEXT=$(kubectl config current-context)
gcloud container attached clusters register
명령어를 사용하여 클러스터를 등록합니다.gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
다음을 바꿉니다.
- CLUSTER_NAME: 클러스터 이름
- GOOGLE_CLOUD_REGION: 클러스터를 관리할 Google Cloud 리전
- PROJECT_NUMBER: 클러스터를 등록할 Fleet 호스트 프로젝트
- PLATFORM_VERSION: 클러스터에 사용할 GKE 연결 클러스터 버전
- ISSUER_URL: 앞에서 검색한 발급기관 URL
- KUBECONFIG_CONTEXT: 앞에서 추출한, 클러스터에 액세스하기 위한 kubeconfig의 컨텍스트
- KUBECONFIG_PATH: kubeconfig 경로
Cloud Logging/Cloud Monitoring 승인
GKE 연결 클러스터에서 시스템 로그와 측정항목을 만들고 Google Cloud에 업로드할 수 있게 하려면 승인되어야 합니다.
Google Cloud Logging에 로그를 기록하고 Google Cloud Monitoring에 측정항목을 기록하도록 Kubernetes 워크로드 아이덴티티 gke-system/gke-telemetry-agent
를 승인하려면 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
GOOGLE_PROJECT_ID
를 클러스터의 Google Cloud 프로젝트 ID로 바꿉니다.
이 IAM binding은 Google Cloud 프로젝트의 모든 클러스터가 로그 및 측정항목을 업로드하도록 액세스 권한을 부여합니다. 프로젝트의 첫 번째 클러스터를 만든 후에만 이를 실행해야 합니다.
Google Cloud 프로젝트에 클러스터가 하나 이상 생성되어 있지 않으면 이 IAM 바인딩 추가가 실패합니다. 이는 참조하는 워크로드 아이덴티티 풀(GOOGLE_PROJECT_ID.svc.id.goog
)이 클러스터를 만들 때까지 프로비저닝되지 않기 때문입니다.