서비스 계정 및 키

이 페이지에서는 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.projectIDcloudAuditLogging.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 LoggingCloud 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을 참조하세요.