서비스 계정 및 키 만들기

이 페이지에서는 GKE On-Prem을 설치하는 데 필요한 Google Cloud 서비스 계정과 키를 만드는 방법을 보여줍니다.

관리자 워크스테이션에 SSH를 통해 연결

관리자 워크스테이션에 SSH를 통해 연결합니다.

ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]

여기서 [IP_ADDRESS]는 관리자 워크스테이션의 IP 주소입니다.

관리자 워크스테이션에서 이 주제의 나머지 단계를 모두 수행합니다.

로그인

계정 사용자 인증 정보를 사용하여 Google Cloud에 로그인합니다.

gcloud auth login

서비스 계정 개요

GKE On-Prem을 설치하려면 먼저 Google Cloud 프로젝트에 서비스 계정을 4개 만들어야 합니다. 또한 서비스 계정마다 JSON 키를 만들어야 합니다. 필요한 서비스 계정은 다음과 같습니다.

  • 허용 목록에 포함된 서비스 계정
  • 연결 서비스 계정
  • 등록 서비스 계정
  • Google Cloud의 작업 제품군 서비스 계정

서비스 계정을 나열합니다.

gcloud iam service-accounts list

출력에 서비스 계정의 이메일 주소가 표시됩니다.

whitelisted-service-account@my-gcp-project.iam.gserviceaccount.com
some-other-service-account@my-gcp-project.iam.gserviceaccount.com
...

각 계정의 이메일 주소를 기록합니다.

허용 목록에 포함된 서비스 계정

이미 허용 목록에 포함된 서비스 계정이 있습니다.

허용 목록에 포함된 서비스 계정의 키를 만듭니다.

gcloud iam service-accounts keys create whitelisted-key.json \
   --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]

여기서 [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]은 허용 목록에 포함된 서비스 계정의 이메일 주소입니다.

연결 서비스 계정

연결은 이 서비스 계정을 사용하여 GKE On-Prem과 Google Cloud 간의 연결을 유지합니다.

Connect 서비스 계정을 만듭니다.

gcloud iam service-accounts create connect-service-account

Connect 서비스 계정의 키를 만듭니다.

gcloud iam service-accounts keys create connect-key.json \
   --iam-account [Connect_SERVICE_ACCOUNT_EMAIL]

여기서 [Connect_SERVICE_ACCOUNT_EMAIL]은 Connect 서비스 계정의 이메일 주소입니다.

등록 서비스 계정

Connect는 이 서비스 계정을 사용하여 GKE On-Prem 클러스터를 Google Cloud Console에 등록합니다.

등록 서비스 계정을 만듭니다.

gcloud iam service-accounts create register-service-account

등록 서비스 계정의 키를 만듭니다.

gcloud iam service-accounts keys create register-key.json \
   --iam-account [REGISTER_SERVICE_ACCOUNT_EMAIL]

여기서 [REGISTER_SERVICE_ACCOUNT_EMAIL]은 등록 서비스 계정의 이메일 주소입니다.

Google Cloud의 작업 제품군 서비스 계정

Connect는 이 서비스 계정을 사용하여 GCP 프로젝트를 통해 클러스터 로그를 클러스터에서 Stackdriver로 내 보냅니다.

Google Cloud의 작업 제품군 서비스 계정을 만듭니다.

gcloud iam service-accounts create stackdriver-service-account

Google Cloud의 작업 제품군 서비스 계정의 키를 만듭니다.

gcloud iam service-accounts keys create stackdriver-key.json \
   --iam-account [Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]

여기서 [Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]은 Google Cloud의 작업 제품군 서비스 계정의 이메일 주소입니다.

이 시점에서 Google Cloud 프로젝트에 서비스 계정 4개를 만들었으며 관리 워크스테이션의 서비스 계정마다 JSON 키가 있습니다.

서비스 계정에 ID 및 액세스 관리 역할 할당

서비스 계정마다 특정한 IAM 역할이 있어야 합니다. 각 서비스 계정에 필요한 최소 역할 집합을 부여하는 것이 좋습니다.

먼저 Google Cloud 프로젝트의 서비스 계정을 나열합니다.

gcloud iam service-accounts list

출력에 서비스 계정의 이메일 주소가 표시됩니다.

whitelisted-service-account@my-gcp-project.iam.gserviceaccount.com
register-service-account@my-gcp-project.iam.gserviceaccount.com
connect-service-account@my-gcp-project.iam.gserviceaccount.com
stackdriver-service-account@my-gcp-project.iam.gserviceaccount.com

각 계정의 이메일 주소를 기록합니다. 다음 각 섹션에서 관련 계정의 이메일 주소를 제공합니다.

등록 서비스 계정

등록 서비스 계정에 gkehub.adminserviceuseage.serviceUsageViewer 역할을 부여합니다.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.admin"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/serviceusage.serviceUsageViewer"

연결 서비스 계정

Connect 서비스 계정에 gkehub.connect 역할을 부여합니다.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Connect_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.connect"

Google Cloud의 작업 제품군 서비스 계정

Google Cloud의 작업 제품군 서비스 계정에 stackdriver.resourceMetadata.writer, logging.logWriter, monitoring.metricWriter 역할을 부여합니다.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/monitoring.metricWriter"