이 페이지에서는 클러스터를 만들기 전에 만들고 구성해야 하는 Google Cloud 리소스를 설명합니다.
시작하기 전에
Google Cloud 프로젝트 및 결제 계정을 만듭니다.
Google Cloud 프로젝트 소유자가 아닌 경우 프로젝트 소유자가 다음 Identity and Access Management(IAM) 역할을 부여하도록 합니다.
역할 목적 roles/compute.viewer 필수: bmctl
이 클러스터 구성 파일에서 clusterOperations.location 필드의 유효성을 검사할 때 필요합니다.roles/iam.serviceAccountAdmin 필수: Google Distributed Cloud에 필요한 서비스 계정을 만드는 데 필요합니다. roles/iam.securityAdmin 필수: Google Distributed Cloud에 필요한 서비스 계정에 IAM 역할을 부여하는 데 필요합니다. roles/iam.serviceAccountKeyAdmin 필수: Google Distributed Cloud에 필요한 서비스 계정의 JSON 키 파일을 만드는 데 필요합니다. roles/serviceusage.serviceUsageAdmin 필수: Google Distributed Cloud에 필요한 Google API를 사용 설정하는 데 필요합니다. roles/gkeonprem.admin 선택사항: GKE On-Prem API 클라이언트를 사용하는 클러스터를 만들거나 GKE On-Prem API에서 관리할 클러스터를 구성하려는 경우에 필요합니다. roles/gkehub.viewer
roles/container.viewer선택사항: Google Cloud 콘솔에서 GKE Enterprise 및 Google Kubernetes Engine 페이지에 액세스하려는 경우에 필요합니다. 역할 부여에 대한 상세 설명은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
API 사용 설정
연결된 Google Cloud 프로젝트에서 여러 Google API를 사용 설정해야 합니다. Google Distributed Cloud는 클러스터를 만들 때 API를 사용합니다. 또한 API는 Google Cloud 연결을 유지하는 데 필요합니다. Google Cloud에 연결하면 Google Distributed Cloud에서 Cloud Logging, Cloud Monitoring은 물론 Anthos Service Mesh, 구성 동기화, 정책 컨트롤러, 구성 컨트롤러와 같은 Fleet 기능을 사용할 수 있습니다.
bmctl
도구를 사용하여 클러스터를 만드는 경우 bmctl create config
를 실행할 때 --enable-apis
플래그를 포함할 수 있습니다. 그러면 bmctl
에서 다음 gcloud services enable
명령어에 나열된 API를 사용 설정합니다. GKE On-Prem API 클라이언트를 사용하여 관리자 클러스터 또는 사용자 클러스터를 만드는 경우 클러스터를 만들기 전에 API를 사용 설정해야 합니다.
API를 사용 설정하려면 다음 명령어를 실행하세요.
Google Cloud CLI에 로그인합니다.
gcloud auth login
다음 API를 사용 설정합니다.
gcloud services enable --project=PROJECT_ID \ anthos.googleapis.com \ anthosaudit.googleapis.com \ anthosgke.googleapis.com \ cloudresourcemanager.googleapis.com \ connectgateway.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ gkeonprem.googleapis.com \ iam.googleapis.com \ logging.googleapis.com \ monitoring.googleapis.com \ opsconfigmonitoring.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ kubernetesmetadata.googleapis.com \ storage.googleapis.com
프로젝트에서 어떤 API와 서비스가 사용 설정됐는지 확인하려면 다음 명령어를 실행합니다.
gcloud services list --project=PROJECT_ID \ --enabled
서비스 계정 구성
Google API를 사용하려면 Google Distributed Cloud에 연결된 Google Cloud 프로젝트의 특정 IAM 역할로 구성된 서비스 계정이 필요합니다. 특히 프로덕션 환경에서는 용도별로 별도의 서비스 계정을 만드는 것이 좋습니다.
bmctl
도구를 사용하여 클러스터를 만드는 경우 bmctl create config
를 실행할 때 bmctl
에서 필요한 IAM 역할을 사용하여 서비스 계정을 만들도록 --create-service-accounts
플래그를 포함할 수 있습니다.
GKE On-Prem API 클라이언트를 사용하여 관리자 클러스터를 만드는 경우 기본적으로 bmctl register bootstrap
명령어는 개발자가 명령어를 실행하여 부트스트랩 클러스터를 만들 때 필요한 IAM 역할이 있는 서비스 계정을 만듭니다.
서비스 계정은 사용자 클러스터를 만드는 데에도 필요하지만 서비스 계정은 사용자 클러스터를 관리하는 관리자 클러스터를 만들 때 생성되고 구성되었습니다.
다음 표에서는 자동으로 생성되는 서비스 계정을 설명합니다.
서비스 계정 | 목적 | 역할 |
---|---|---|
anthos-baremetal-gcr | Google Distributed Cloud는 이 서비스 계정을 사용하여 Container Registry에서 컨테이너 이미지를 다운로드합니다. | 없음 |
anthos-baremetal-connect | Connect Agent는 이 서비스 계정을 사용하여 클러스터와 Google Cloud 간의 연결을 유지합니다. 이렇게 하면 클러스터와 워크로드 관리 기능(Google Cloud 콘솔 및 Connect Gateway 포함)에 액세스하여 클러스터와 상호작용할 수 있습니다. | roles/gkehub.connect |
anthos-baremetal-register | Connect Agent는 이 서비스 계정을 사용하여 Fleet에 클러스터를 등록합니다. | roles/gkehub.admin |
anthos-baremetal-cloud-ops | Stackdriver Agent는 이 서비스 계정을 사용하여 클러스터의 로그와 측정항목을 Cloud Logging 및 Cloud Monitoring으로 내보냅니다. |
roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor roles/monitoring.viewer roles/serviceusage.serviceUsageViewer roles/kubernetesmetadata.publisher |
서비스 계정 수동 구성
원하는 경우 클러스터를 만들기 전에 서비스 계정을 수동으로 만들고 필요한 역할로 구성하며 JSON 키 파일을 다운로드할 수 있습니다.
bmctl
을 사용하여 클러스터를 만드는 경우 적절한 클러스터 구성 파일에 JSON 키 파일에 대한 참조를 추가합니다. 예시를 보려면 구성 파일 수정을 참조하세요.
GKE On-Prem API를 사용하여 관리자 클러스터를 만드는 경우 bmctl register bootstrap
을 실행하여 부트스트랩 클러스터를 만들 때 키 파일을 지정할 수 있습니다.
서비스 계정 및 키 파일을 만들려면 다음 안내를 따르세요.
관리자 워크스테이션에서
baremetal
디렉터리에 있는지 확인합니다.아직 로그인하지 않았으면 Google Cloud CLI에 로그인합니다.
gcloud auth login
서비스 계정을 만듭니다.
gcloud iam service-accounts create anthos-baremetal-gcr \ --project=PROJECT_ID gcloud iam service-accounts create anthos-baremetal-connect \ --project=PROJECT_ID gcloud iam service-accounts create anthos-baremetal-register \ --project=PROJECT_ID gcloud iam service-accounts create anthos-baremetal-cloud-ops \ --project=PROJECT_ID
서비스 계정에 필요한 IAM 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.connect" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/stackdriver.resourceMetadata.writer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/opsconfigmonitoring.resourceMetadata.writer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.viewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/kubernetesmetadata.publisher"
서비스 계정 JSON 키 파일을 다운로드합니다.
gcloud iam service-accounts keys create anthos-baremetal-gcr.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create connect-agent.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create connect-register.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
Cloud Storage 버킷에 액세스할 수 있는 서비스 계정 구성
서비스 계정 및 키 파일을 사용하여 Cloud Storage에 액세스합니다. 이 서비스 계정을 사용하여 클러스터의 스냅샷이 Cloud Storage 버킷에 자동으로 업로드되도록 사용 설정하거나 Cloud Storage 버킷에서 가상 머신(VM) 이미지를 가져와 GDC용 VM 런타임에 사용할 수 있습니다.
서비스 계정 및 키 파일을 만들려면 다음 단계를 수행합니다.
현재 위치가
baremetal
디렉터리인지 확인합니다.아직 로그인하지 않았으면 Google Cloud CLI에 로그인합니다.
gcloud auth login
Google Cloud 프로젝트에서 Cloud Storage API
storage.googleapis.com
을 아직 사용 설정하지 않았으면 사용 설정합니다.gcloud services enable --project=PROJECT_ID \ storage.googleapis.com
클러스터에서 Cloud Storage 버킷에 액세스하는 데 사용할 수 있는 서비스 계정을 만듭니다.
gcloud iam service-accounts create SA_NAME \ --project=PROJECT_ID
SA_NAME
을 새 서비스 계정의 이름으로 바꿉니다. 이 서비스 계정 이름은 생성 중에 프로비저닝된 이메일 주소에SA_NAME@PROJECT_ID.iam.gserviceaccount.com
형식으로 표시됩니다.다음 권한을 사용하여 커스텀 역할을 만듭니다.
storage.buckets.create
storage.buckets.get
storage.buckets.list
storage.objects.create
resourcemanager.projects.get
gcloud iam roles create ROLE_ID \ --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \ --project=PROJECT_ID
ROLE_ID
를 새 커스텀 역할의 이름으로 바꿉니다(예:snapshotUpload
). 이 커스텀 역할의 전체 경로는projects/PROJECT_ID/roles/ROLE_ID
형식입니다.서비스 계정에 정책 바인딩을 추가합니다.
gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role='projects/PROJECT_ID/roles/ROLE_ID'
서비스 계정 JSON 키 파일을 다운로드합니다.
gcloud iam service-accounts keys create OUTPUT_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
클러스터 스냅샷을 만들어 Cloud Storage 버킷에 자동으로 업로드하는 방법에 대한 자세한 내용은 클러스터 문제 진단을 위한 스냅샷 만들기를 참조하세요.
Cloud Storage에서 VM 이미지를 가져오는 방법에 대한 자세한 내용은 사용자 인증 정보를 만들고 사용하여 Cloud Storage에서 GDC용 VM 런타임에 사용할 이미지 가져오기를 참조하세요.