일반 기본 요건

Fleet 만들기 개요에서 학습한 것처럼, VMware용 GKE, 베어메탈용 GKE, 멀티 클라우드 클러스터(AWS 및 Azure 모두)는 클러스터를 만들 때 프로젝트 Fleet에 자동으로 등록됩니다. 하지만 Google Cloud 기반 GKE 클러스터와 타사 Kubernetes 클러스터(연결된 클러스터)는 Fleet에 조인하기 위해 수동으로 등록해야 합니다. Fleet 만들기 개요에서 다양한 등록 옵션에 대한 자세한 내용을 확인할 수 있습니다.

이 페이지에서는 Google Cloud Fleet에 모든 Kubernetes 클러스터를 수동으로 등록하기 위한 기본 요건 및 요구사항을 설명합니다. 또한 Google Cloud 기반 GKE 클러스터 및 연결된 클러스터에 대한 특정 개별 요구사항도 있습니다. 이 가이드를 완료한 후 등록하려는 클러스터 유형에 대한 안내를 따르세요.

명령줄 도구 설치

다음 명령줄 도구가 설치되어 있는지 확인합니다. Google Cloud와의 상호작용을 위해 Cloud Shell을 셸 환경으로 사용하는 경우 이러한 도구가 자동으로 설치됩니다.

Google Cloud CLI 설치

Google Cloud CLI는 Google Cloud에 대한 명령줄 인터페이스(CLI)입니다. Google Cloud CLI를 사용하거나, 클러스터 유형에 따라 Terraform 또는 Google Cloud 콘솔과 같은 도구를 사용하여 클러스터를 등록할 수 있습니다. 하지만 클러스터 등록에 사용하지 않더라도 이 가이드의 다른 많은 설정 단계에서 gcloud가 필요하거나 유용할 수 있습니다.

  1. Google Cloud CLI를 아직 설치하지 않았으면 설치 안내에 따라 설치합니다. 최신 버전의 Google Cloud CLI를 사용하는 것이 좋습니다. 클러스터를 등록하려면 버전 361.0.0 이상이 필요하고, 알파 또는 베타 구성요소가 설치된 상태에서 GKE에 대해 기존 명령어가 아닌 등록 명령어를 사용하려면 버전 423.0.0 이상이 필요합니다.

  2. 다음 명령어를 실행하여 Google Cloud에 로그인합니다.

    gcloud auth login
  3. (선택사항) 알파 또는 베타 기능을 사용하려면 gcloud beta 구성요소가 설치되었는지 확인합니다.

     gcloud components install beta 

kubectl 설치

클러스터 등록에 kubectl이 필요하진 않지만 다른 플랫폼 관련 설정은 물론 클러스터를 등록하는 사용자(클러스터 소유자가 아닌 경우)에게 필요한 역할 기반 액세스 제어(RBAC) 권한을 부여하기 위해 필요할 수 있습니다. Google Kubernetes Engine(GKE)의 지원되는 최소 Kubernetes 버전보다 낮지 않은 kubectl 버전이 필요합니다.

Google Cloud CLI를 사용하여 kubectl을 설치하는 것이 좋습니다.

kubectl 버전을 확인하려면 다음 안내를 따르세요.

kubectl version

클라이언트 버전은 출력의 gitVersion으로 표시됩니다.

kubectl을 설치하려면 다음 안내를 따르세요.

gcloud components install kubectl

API 사용 설정

Fleet 호스트 프로젝트에서 다음 API를 사용 설정해야 합니다.

  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com(Fleet API라고도 함). 이는 클러스터 등록 및 Fleet 멤버십을 처리하는 Google Cloud 서비스입니다.
  • cloudresourcemanager.googleapis.com

등록하려는 클러스터의 포드가 직접 또는 구성된 프록시 서버를 통해 googleapis.comgkeconnect.googleapis.com 주소에 도달할 수 있어야 합니다.

등록에 대해 워크로드 아이덴티티를 사용 설정하려면 다음 항목도 사용 설정해야 합니다.

  • iam.googleapis.com

프로젝트 소유자가 아닌 사용자가 API를 사용 설정하려면 먼저 serviceusage.services.enable 권한을 부여받아야 합니다.

gcloud

이러한 API를 사용 설정하려면 다음 명령어를 실행합니다.

gcloud services enable \
   --project=FLEET_HOST_PROJECT_ID \
   container.googleapis.com \
   gkeconnect.googleapis.com \
   gkehub.googleapis.com \
   cloudresourcemanager.googleapis.com \
   iam.googleapis.com

각 매개변수는 다음과 같습니다.

Fleet 워크로드 아이덴티티를 사용 설정하지 않으려면 iam.googleapis.com을 생략할 수 있습니다.

프로젝트에서 이미 사용 설정한 API를 나열하려면 서비스 사용량 문서의 서비스 나열의 안내를 따릅니다.

액세스 권한 부여

클러스터 등록을 위해 적절한 액세스 권한이 있는지 확인합니다. 클러스터 등록을 위해서는 Fleet에 클러스터를 등록하기 위한 권한과 클러스터 자체에 대한 관리자 권한이 모두 필요합니다.

클러스터 등록 권한 부여

클러스터를 등록하려면 클러스터를 등록할 Fleet 호스트 프로젝트에 IAM 권한이 있어야 합니다. Fleet 호스트 프로젝트에 roles/owner가 있는 경우 이러한 권한을 자동으로 보유하며 모든 등록 작업을 완료하는 데 필요한 모든 액세스 권한을 갖습니다.

프로젝트에 roles/owner가 없는 경우 클러스터를 Google에 연결하려면 먼저 다음과 같이 특정 IAM 역할을 부여해야 합니다.

  • Google에 인증하기 위해 Fleet 워크로드 아이덴티티에 클러스터를 등록하려면 다음 IAM 역할만 있으면 됩니다.

    • roles/gkehub.admin
  • Google Cloud 외부의 일부 등록 옵션에서는 워크로드 아이덴티티 대신 클러스터가 Google 인증에 사용할 수 있도록 서비스 계정을 설정해야 합니다. 클러스터를 등록하고 이 서비스 계정을 관리하려면 다음 역할 집합이 필요합니다.

    • roles/gkehub.admin
    • roles/iam.serviceAccountAdmin
    • roles/iam.serviceAccountKeyAdmin
    • roles/resourcemanager.projectIamAdmin

gkehub 역할에 포함된 자세한 권한 목록은 Connect IAM 역할을 참조하세요.

gcloud

사용자에게 IAM 역할을 부여하려면 다음 명령어를 실행합니다.

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
   --member user:GCP_EMAIL_ADDRESS \
   --role=ROLE

각 매개변수는 다음과 같습니다.

  • FLEET_HOST_PROJECT_ID는 클러스터를 등록할 Google Cloud 프로젝트 ID입니다. 이 값을 찾는 방법 알아보기
  • GCP_EMAIL_ADDRESS는 사용자가 Google Cloud에 로그인하기 위해 사용하는 계정입니다.
  • ROLEroles/gkehub.admin과 같은 부여할 IAM 역할입니다.

IAM 역할을 부여하는 방법을 자세히 알아보려면 IAM 문서에서 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.

클러스터에 관리자 권한 부여

클러스터 등록에 필요한 권한 외에도 클러스터 자체에 대해 관리자 권한이 필요합니다. 클러스터 위치에 따라 IAM 역할 또는 Kubernetes 역할 기반 액세스 제어(RBAC)를 사용하여 이 권한을 할당할 수 있습니다.

Google Cloud 기반 GKE 클러스터

Google Cloud 기반 GKE 클러스터의 경우에만 다음 IAM 역할을 추가하여 클러스터에 대한 관리자 권한을 얻습니다(아직 없는 경우). 클러스터를 직접 만든 경우 사용자 계정에 이 권한이 있을 가능성이 높습니다.

  • roles/container.admin

이 IAM 역할에는 Kubernetes RBAC cluster-admin 역할이 포함되어 있습니다. 다른 클러스터 환경의 경우 다음 섹션에 설명된 대로 kubectl을 사용하여 RBAC 역할을 부여해야 합니다. GKE에서 IAM 역할과 RBAC 역할 간의 관계에 대한 자세한 내용은 GKE 문서를 참조하세요.

Google Cloud 외부의 클러스터

Google Cloud 외부에서 타사 클러스터를 연결하려면 클러스터를 등록하는 사용자에게 Kubernetes RBAC cluster-admin 역할이 있는지 확인합니다.

kubectl

클러스터를 만들었다면 이 역할을 가지고 있을 가능성이 높습니다. 다음 명령어를 실행하여 확인할 수 있습니다.

kubectl auth can-i '*' '*' --all-namespaces

개발자나 다른 사용자에게 클러스터에 ClusterRoleBinding 리소스를 만들 수 있는 역할이 필요하면 다음 명령어를 실행합니다.

kubectl create clusterrolebinding BINDING_NAME --clusterrole cluster-admin --user USER

각 매개변수는 다음과 같습니다.

  • BINDING_NAME은 ClusterRoleBinding 리소스에 선택한 이름입니다.
  • USER는 클러스터를 인증하는 데 사용되는 ID입니다.

다음 단계

등록하려는 클러스터 유형에 대한 기본 요건 가이드를 따르세요.