이 문서에서는 Google Distributed Cloud 구현에서 클러스터를 만드는 데 필요한 Google Cloud 서비스 계정과 키를 설명합니다.
여기에는 전체 안내가 나와 있습니다. 서비스 계정 사용에 대한 간략한 소개는 최소 인프라 설정을 참조하세요.
시작하기 전에
서비스 계정 개요
관리자 클러스터와 사용자 클러스터를 만들기 전에 다음 서비스 계정이 있어야 합니다.
- 구성요소 액세스 서비스 계정
- 연결-등록 서비스 계정
- 로깅-모니터링 서비스 계정
사용 설정하려는 기능에 따라 일부 선택적 서비스 계정이 필요할 수 있습니다.
서비스 계정 및 Google Cloud 프로젝트 이해
서비스 계정을 만들면 Google Cloud 프로젝트와 연결됩니다. 이 Google Cloud 프로젝트를 서비스 계정의 상위 프로젝트라고 합니다.
서비스 계정의 이메일 주소를 보고 서비스 계정의 상위 프로젝트를 확인할 수 있습니다. 예를 들어 logger
라는 서비스 계정의 이메일 주소가 있습니다. 상위 프로젝트는 alice-123
입니다.
logger@alice-123.iam.gserviceaccount.com
서비스 계정에 Identity and Access Management(IAM) 역할을 부여하면 특정 Google Cloud 프로젝트에서 서비스 계정에 역할을 부여합니다. 리소스의 주 구성원에 역할을 부여하는 일반적인 패턴을 따릅니다.
예를 들어 bob-456
프로젝트의 logger@alice-123.iam.gserviceaccount.com
서비스 계정에 bigquery.dataEditor
역할을 부여할 수 있습니다. 여기에서 서비스 계정은 주 구성원이고 Google Cloud 프로젝트는 리소스입니다.
서비스 계정의 상위 프로젝트가 아닌 Google Cloud 프로젝트의 서비스 계정에 역할을 부여할 수 있다는 점을 이해해야 합니다.
서비스 계정에 역할을 부여할 수 있는 권한
각 서비스 계정은 관련 Google Cloud 프로젝트에 대한 특정 역할을 부여받아야 합니다. 예를 들어 연결-등록 서비스 계정에는 Fleet 호스트 프로젝트에 대한 gkehub.editor
역할을 부여해야 합니다.
Google Cloud 프로젝트에 역할을 부여하려면 프로젝트에 대한 특정 권한이 있어야 합니다. 자세한 내용은 역할 이해의 roles/resourcemanager.projectIamAdmin
을 참조하세요.
필요한 권한이 있으면 직접 역할을 부여할 수 있습니다. 그렇지 않으면 조직의 다른 사용자가 역할을 부여해야 합니다.
gkeadm
을 사용하여 자동으로 서비스 계정 만들기
이 페이지에서는 서비스 계정을 수동으로 만들고 서비스 계정에 역할을 부여하는 방법을 설명합니다. 이러한 단계를 수동으로 실행하는 대신 관리자 워크스테이션을 만들 때 gkeadm
으로 일부 서비스 계정을 만들고 역할을 부여할 수 있습니다. 자세한 내용은 관리자 워크스테이션 만들기를 참조하세요.
구성요소 액세스 서비스 계정
Google Distributed Cloud는 이 서비스 계정을 사용하여 Container Registry에서 클러스터 구성요소를 대신 다운로드합니다.
구성요소 액세스 서비스 계정을 만들려면 다음을 실행합니다.
gcloud iam service-accounts create component-access-sa \ --display-name "Component Access Service Account" \ --project PROJECT_ID
PROJECT_ID를 서비스 계정의 상위 프로젝트가 될 Google Cloud 프로젝트의 ID로 바꿉니다.
구성요소 액세스 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.
gcloud iam service-accounts keys create component-access-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL을 구성요소 액세스 서비스 계정의 이메일 주소로 바꿉니다.
구성요소 액세스 서비스 계정에 역할 부여
구성요소 액세스 서비스 계정에는 Fleet 호스트 프로젝트에 대해 다음 IAM 역할이 부여되어야 합니다. Google Distributed Cloud에서 프리플라이트 검사를 실행할 수 있도록 다음 역할이 필요합니다.
serviceusage.serviceUsageViewer
iam.roleViewer
iam.serviceAccountViewer
compute.viewer
역할을 부여하려면 다음 안내를 따르세요.
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.serviceAccountViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/compute.viewer"
다음을 바꿉니다.
FLEET_HOST_PROJECT_ID: Fleet 호스트 프로젝트의 ID입니다.
SERVICE_ACCOUNT_EMAIL: 구성요소 액세스 서비스 계정의 이메일 주소입니다.
연결-등록 서비스 계정
Google Distributed Cloud는 이 서비스 계정을 사용하여 클러스터를 Fleet에 등록합니다.
연결-등록 서비스 계정을 만들려면 다음을 실행합니다.
gcloud iam service-accounts create connect-register-sa \ --project PROJECT_ID
PROJECT_ID를 연결-등록 서비스 계정의 상위 항목이 될 Google Cloud 프로젝트의 ID로 바꿉니다.
연결-등록 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL을 연결-등록 서비스 계정의 이메일 주소로 바꿉니다.
연결-등록 서비스 계정에는 Fleet 호스트 프로젝트에 대한 gkehub.editor
역할을 부여해야 합니다.
연결-등록 서비스 계정에 gkehub.editor
역할을 부여하려면 다음 안내를 따르세요.
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.editor"
로깅-모니터링 서비스 계정
Google Distributed Cloud는 이 서비스 계정을 사용하여 클러스터의 로그와 측정항목을 Cloud Logging 및 Cloud Monitoring으로 내보냅니다.
로깅-모니터링 서비스 계정을 만들려면 다음을 실행합니다.
gcloud iam service-accounts create logging-monitoring-sa \ --project=PROJECT_ID
PROJECT_ID를 로깅-모니터링 서비스 계정의 상위 항목이 될 Google Cloud 프로젝트의 ID로 바꿉니다.
로깅-모니터링 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
로깅-모니터링 서비스 계정에는 Fleet 호스트 프로젝트에 대한 다음 역할이 부여되어야 합니다.
opsconfigmonitoring.resourceMetadata.writer
logging.logWriter
monitoring.metricWriter
monitoring.dashboardEditor
kubernetesmetadata.publisher
로깅-모니터링 서비스 계정에 필요한 역할을 부여하려면 다음을 실행합니다.
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/opsconfigmonitoring.resourceMetadata.writer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/logging.logWriter" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/kubernetesmetadata.publisher"
SERVICE_ACCOUNT_EMAIL을 로깅-모니터링 서비스 계정의 이메일 주소로 바꿉니다.
선택사항 서비스 계정
감사 로깅 서비스 계정
Google Distributed Cloud는 이 서비스 계정을 사용하여 클러스터의 Kubernetes 감사 로그를 Cloud 감사 로그로 전송합니다.
감사 로깅 서비스 계정을 만들려면 다음을 실행합니다.
gcloud iam service-accounts create audit-logging-sa \ --project PROJECT_ID
PROJECT_ID를 감사 로깅 서비스 계정의 상위 항목이 될 Google Cloud 프로젝트의 ID로 바꿉니다.
감사 로깅 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL을 감사 로깅 서비스 계정의 이메일 주소로 바꿉니다.
감사 로깅 서비스 계정에 역할을 부여할 필요가 없습니다.
사용량 측정 서비스 계정
Google Distributed Cloud는 이 서비스 계정을 사용하여 BigQuery 데이터 세트에 사용량 데이터를 저장합니다.
사용량 측정 서비스 계정을 만들려면 다음을 실행합니다.
gcloud iam service-accounts create usage-metering-sa \ --project PROJECT_ID
PROJECT_ID를 사용량 측정 서비스 계정의 상위 항목이 될 Google Cloud 프로젝트의 ID로 바꿉니다.
사용량 측정 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.
gcloud iam service-accounts keys create usage-metering-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL을 사용량 측정 서비스 계정의 이메일 주소로 바꿉니다.
사용량 측정 서비스 계정에는 사용량 측정 프로젝트에 대한 bigquery.dataEditor
역할이 부여되어 있어야 합니다.
이는 사용자 클러스터의 사용 데이터를 보려는 Google Cloud 프로젝트입니다.
사용량 측정 서비스 계정에 bigquery.dataEditor
역할을 부여하려면 다음 안내를 따르세요.
gcloud projects add-iam-policy-binding USAGE_METERING_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/bigquery.dataEditor"
USAGE_METERING_PROJECT_ID를 사용량 측정 프로젝트의 ID로 바꿉니다.
Binary Authorization 서비스 계정
Google Distributed Cloud는 이 서비스 계정을 사용하여 Binary Authorization API를 호출합니다.
Binary Authorization 서비스 계정을 만드는 방법에 대한 자세한 내용은 GKE On-Prem의 Binary Authorization을 참조하세요.