개요
클러스터 연결이란Google Cloud Fleet 관리에 등록하고 여기에 GKE 연결 클러스터 소프트웨어를 설치하여 클러스터를 Google Cloud 에 연결하는 것을 의미합니다.
gcloud CLI 또는 Terraform을 사용하여 클러스터를 연결할 수 있습니다. Terraform을 사용하여 EKS 클러스터를 만들고 연결하는 방법은 GKE 연결 클러스터 샘플의 GitHub 저장소를 참조하세요.
이 페이지는 클라우드 인프라를 설정, 모니터링, 관리하려는 IT 관리자와 운영자를 위해 작성되었습니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 태스크를 참조하세요.
gcloud를 사용하여 EKS 클러스터를 연결하려면 다음 단계를 수행하세요.
기본 요건
클러스터가 클러스터 요구사항을 충족하는지 확인합니다.
클러스터를 연결할 때는 다음을 지정해야 합니다.
- 지원되는 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 연결 클러스터를 업그레이드하기 전에 다음 부 버전으로 클러스터를 업그레이드할 수 있습니다.
EKS 클러스터 연결
EKS 클러스터를 Google CloudFleet 관리에 연결하려면 다음 단계를 따르세요.
kubeconfig 파일에 연결하려는 클러스터의 항목이 있는지 확인합니다.
aws eks update-kubeconfig --region AWS_REGION \ --name EKS_CLUSTER_NAME
다음 명령어를 사용하여 OIDC 발급기관 URL을 검색합니다.
aws eks describe-cluster \ --region AWS_REGION \ --name EKS_CLUSTER_NAME \ --query "cluster.identity.oidc.issuer" \ --output text
이 명령어의 출력은 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=eks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
다음과 같이 바꿉니다.
- AWS_REGION: EKS 클러스터가 있는 AWS 리전
- CLUSTER_NAME: 클러스터 이름. 이 이름은 이전 단계에서 사용한 EKS_CLUSTER_NAME과 동일할 수 있습니다. CLUSTER_NAME은 RFC 1123 라벨 이름 표준을 준수해야 합니다.
- GOOGLE_CLOUD_REGION: 클러스터를 관리할 Google Cloud 리전
- PLATFORM_VERSION: 클러스터에 사용할 GKE 연결 클러스터 버전
- PROJECT_NUMBER: 클러스터를 등록할 Fleet 호스트 프로젝트
- ISSUER_URL: 앞에서 검색한 발급기관 URL
- KUBECONFIG_CONTEXT: 앞에서 추출한 EKS 클러스터에 액세스하기 위한 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 바인딩은 Google Cloud 프로젝트의 모든 클러스터가 로그 및 측정항목을 업로드하도록 액세스 권한을 부여합니다. 프로젝트의 첫 번째 클러스터를 만든 후에만 이를 실행해야 합니다.
Google Cloud 프로젝트에 클러스터가 하나 이상 생성되어 있지 않으면 이 IAM 바인딩 추가가 실패합니다. 이는 참조하는 워크로드 아이덴티티 풀(GOOGLE_PROJECT_ID.svc.id.goog
)이 클러스터를 만들 때까지 프로비저닝되지 않기 때문입니다.