이 페이지에서는 GKE On-Prem에서 클러스터를 만드는 데 필요한 Google Cloud 서비스 계정과 키를 설명합니다.
서비스 계정 개요
관리자 클러스터와 사용자 클러스터를 만들기 전에 다음 서비스 계정이 있어야 합니다.
- 구성요소 액세스 서비스 계정
- 연결-등록 서비스 계정
- 연결-에이전트 서비스 계정
- 로깅-모니터링 서비스 계정
사용 설정하려는 기능에 따라 일부 선택적 서비스 계정이 필요할 수 있습니다.
서비스 계정 및 Google Cloud 프로젝트 이해
서비스 계정을 만들면 Google Cloud 프로젝트와 연결됩니다. 이 Google Cloud 프로젝트를 서비스 계정의 상위 프로젝트라고 합니다.
서비스 계정의 이메일 주소를 보고 서비스 계정의 상위 프로젝트를 확인할 수 있습니다. 예를 들어 logger
라는 서비스 계정의 이메일 주소가 있습니다. 상위 프로젝트는 alice-123
입니다.
logger@alice-123.iam.gserviceaccount.com
서비스 계정에 Identity and Access Management(IAM) 역할을 부여하면 특정 Google Cloud 프로젝트에서 서비스 계정에 역할을 부여합니다. 리소스의 ID에 역할을 부여하는 일반적인 패턴을 따릅니다.
예를 들어 bob-456
프로젝트의 logger@alice-123.iam.gserviceaccount.com
서비스 계정에 bigquery.dataEditor
역할을 부여할 수 있습니다. 여기에서 서비스 계정은 ID이고 Google Cloud 프로젝트는 리소스입니다.
서비스 계정의 상위 프로젝트가 아닌 Google Cloud 프로젝트의 서비스 계정에 역할을 부여할 수 있다는 점을 이해해야 합니다.
gkeadm
을 사용하여 자동으로 서비스 계정 만들기
이 페이지에서는 서비스 계정을 수동으로 만들고 서비스 계정에 역할을 부여하는 방법을 설명합니다. 이러한 단계를 수동으로 실행하는 대신 관리자 워크스테이션을 만들 때 gkeadm
으로 일부 서비스 계정을 만들고 역할을 부여할 수 있습니다. 자세한 내용은 관리자 워크스테이션 만들기를 참조하세요.
구성요소 액세스 서비스 계정
GKE On-Prem은 사용자를 대신하여 이 서비스 계정을 사용하여 Container Registry에서 GKE On-Prem 구성요소를 다운로드합니다.
구성요소 액세스 서비스 계정을 만들려면 다음을 실행합니다.
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을 구성요소 액세스 서비스 계정의 이메일 주소로 바꿉니다.
구성요소 액세스 서비스 계정에 역할 부여
관리자 및 사용자 클러스터 구성 파일에는 프로젝트 ID를 지정하는 여러 필드가 있습니다.
관리자 클러스터 구성 파일에서는 다음과 같습니다.
stackdriver: projectID: "" ... cloudAuditLogging: projectid: ""
사용자 클러스터 구성 파일에서는 다음과 같습니다.
stackdriver: projectID: "" ... gkeConnect: projectID: "" ... usageMetering: bigQueryProjectID: "" ... cloudAuditLogging: projectid: ""
구성 파일의 프로젝트 ID는 고유할 필요가 없습니다. 예를 들어 gkeConnect.projectID
는 cloudAuditLogging.projectID
와 같을 수 있습니다. 사실, 구성 파일의 모든 프로젝트 ID는 동일할 수 있습니다.
구성요소 액세스 서비스 계정은 관리자 및 사용자 클러스터 구성 파일에 지정된 각 Google Cloud 프로젝트에서 다음 IAM 역할을 부여받아야 합니다. GKE On-Prem에서 실행 전 검사를 수행할 수 있도록 다음 역할이 필요합니다.
serviceusage.serviceUsageViewer
iam.serviceAccountCreator
iam.roleViewer
클러스터 구성 파일에 지정한 Google Cloud 프로젝트마다 다음 명령어를 실행하여 구성요소 액세스 서비스 계정에 필요한 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.roleViewer"
다음을 바꿉니다.
PROJECT_ID: 구성 파일에 지정한 Google Cloud 프로젝트 중 하나의 ID입니다.
SERVICE_ACCOUNT_EMAIL: 구성요소 액세스 서비스 계정의 이메일 주소입니다.
연결-등록 서비스 계정
GKE On-Prem은 이 서비스 계정을 사용하여 GKE On-Prem 클러스터를 Google Cloud에 등록합니다.
연결-등록 서비스 계정을 만들려면 다음을 실행합니다.
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을 연결-등록 서비스 계정의 이메일 주소로 바꿉니다.
연결-등록 서비스 계정에는 연결 프로젝트에 대한 gkehub.admin
역할이 부여되어야 합니다.
GKE On-Prem 클러스터를 보고 관리하려는 Google Cloud 프로젝트입니다.
연결-등록 서비스 계정에 gkehub.admin
역할을 부여하려면 다음 안내를 따르세요.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.admin"
PROJECT_ID를 연결 프로젝트의 ID로 바꿉니다.
연결-에이전트 서비스 계정
GKE On-Prem은 이 서비스 계정을 사용하여 GKE On-Prem과 Google Cloud 간의 연결을 유지합니다.
연결-에이전트 서비스 계정을 만들려면 다음을 실행합니다.
gcloud iam service-accounts create connect-agent-sa \ --project PROJECT_ID
PROJECT_ID를 연결-에이전트 서비스 계정의 상위 항목이 될 Google Cloud 프로젝트의 ID로 바꿉니다.
연결-에이전트 서비스 계정의 JSON 키를 만들려면 다음을 실행합니다.
gcloud iam service-accounts keys create connect-agent-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
SERVICE_ACCOUNT_EMAIL을 연결-에이전트 서비스 계정의 이메일 주소로 바꿉니다.
연결-에이전트 서비스 계정에는 연결 프로젝트에 대한 gkehub.connect
역할이 부여되어야 합니다.
GKE On-Prem 클러스터를 보고 관리하려는 Google Cloud 프로젝트입니다.
연결-에이전트 서비스 계정에 gkehub.connect
역할을 부여하려면 다음 안내를 따르세요.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.connect"
PROJECT_ID를 연결 프로젝트의 ID로 바꿉니다.
로깅-모니터링 서비스 계정
GKE On-Prem은 이 서비스 계정을 사용하여 클러스터의 로그와 측정항목을 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
SERVICE_ACCOUNT_EMAIL을 로깅-모니터링 서비스 계정의 이메일 주소로 바꿉니다.
로깅-모니터링 서비스 계정에는 로깅-모니터링 프로젝트에 대한 다음 역할이 부여되어야 합니다. GKE On-Prem 클러스터의 로그를 확인하려는 Google Cloud 프로젝트입니다.
stackdriver.resourceMetadata.writer
logging.logWriter
monitoring.metricWriter
monitoring.dashboardEditor
로깅-모니터링 서비스 계정에 필요한 역할을 부여하려면 다음을 실행합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.dashboardEditor"
PROJECT_ID를 로깅-모니터링 프로젝트의 ID로 바꿉니다.
선택사항 서비스 계정
사용량 측정 서비스 계정
GKE On-Prem은 이 서비스 계정을 사용하여 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
역할이 부여되어 있어야 합니다.
GKE On-Prem 클러스터의 사용 데이터를 보려는 Google Cloud 프로젝트입니다.
사용량 측정 서비스 계정에 bigquery.dataEditor
역할을 부여하려면 다음 안내를 따르세요.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/bigquery.dataEditor"
PROJECT_ID를 사용량 측정 프로젝트의 ID로 바꿉니다.
감사 로깅 서비스 계정
GKE On-Prem은 이 서비스 계정을 사용하여 클러스터에서 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을 감사 로깅 서비스 계정의 이메일 주소로 바꿉니다.
감사 로깅 서비스 계정에 역할을 부여할 필요가 없습니다.
Binary Authorization 서비스 계정
GKE On-Prem은 이 서비스 계정을 사용하여 Binary Authorization API를 호출합니다.
Binary Authorization 서비스 계정을 만드는 방법에 대한 자세한 내용은 GKE On-Prem의 Binary Authorization을 참조하세요.