EKS 클러스터 연결

개요

클러스터 연결이란 Google Cloud Fleet 관리에 등록하고 여기에 GKE 연결 클러스터 소프트웨어를 설치하여 Google Cloud에 연결하는 것을 의미합니다.

gcloud CLI 또는 Terraform을 사용하여 클러스터를 연결할 수 있습니다. Terraform을 사용하여 EKS 클러스터를 만들고 연결하는 방법은 GKE 연결 클러스터 샘플의 GitHub 저장소를 참조하세요.

gcloud를 사용하여 EKS 클러스터를 연결하려면 다음 단계를 수행하세요.

기본 요건

클러스터가 클러스터 요구사항을 충족하는지 확인합니다.

클러스터를 연결할 때는 다음을 지정해야 합니다.

관리 리전은 연결된 클러스터를 관리하기 위한 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 Cloud Fleet 관리에 연결하려면 다음 안내를 따르세요.

  1. kubeconfig 파일에 연결하려는 클러스터의 항목이 있는지 확인합니다.

    aws eks update-kubeconfig --region AWS_REGION \
      --name CLUSTER_NAME
    
  2. 다음 명령어를 사용하여 OIDC 발급기관 URL을 검색합니다.

    aws eks describe-cluster \
      --region AWS_REGION \
      --name CLUSTER_NAME \
      --query "cluster.identity.oidc.issuer" \
      --output text
    

    이 명령어의 출력은 OIDC 발급기관의 URL입니다. 나중에 사용할 수 있도록 이 값을 저장하세요.

  3. 다음 명령어를 실행하여 클러스터의 kubeconfig 컨텍스트를 추출하고 이를 KUBECONFIG_CONTEXT 환경 변수에 저장합니다.

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  4. 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: 클러스터 이름
  • 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 binding은 Google Cloud 프로젝트의 모든 클러스터가 로그 및 측정항목을 업로드하도록 액세스 권한을 부여합니다. 프로젝트의 첫 번째 클러스터를 만든 후에만 이를 실행해야 합니다.

Google Cloud 프로젝트에 클러스터가 하나 이상 생성되어 있지 않으면 이 IAM 바인딩 추가가 실패합니다. 이는 참조하는 워크로드 아이덴티티 풀(GOOGLE_PROJECT_ID.svc.id.goog)이 클러스터를 만들 때까지 프로비저닝되지 않기 때문입니다.