Google Cloud 리소스 설정

이 페이지에서는 클러스터를 만들기 전에 만들고 구성해야 하는 Google Cloud 리소스를 설명합니다.

시작하기 전에

  1. Google Cloud 프로젝트결제 계정을 만듭니다.

  2. Google Cloud 프로젝트 소유자가 아닌 경우 프로젝트 소유자가 다음 Identity and Access Management(IAM) 역할을 부여하도록 합니다.

    역할 목적
    roles/compute.viewer 필수: bmctl이 클러스터 구성 파일에서 clusterOperations.location 필드의 유효성을 검사할 때 필요합니다.
    roles/iam.serviceAccountAdmin 필수: 베어메탈용 GDCV에 필요한 서비스 계정을 만드는 데 필요합니다.
    roles/iam.securityAdmin 필수: 베어메탈용 GDCV에 필요한 서비스 계정에 IAM 역할을 부여하는 데 필요합니다.
    roles/iam.serviceAccountKeyAdmin 필수: 베어메탈용 GDCV에 필요한 서비스 계정의 JSON 키 파일을 만드는 데 필요합니다.
    roles/serviceusage.serviceUsageAdmin 필수: 베어메탈용 GDCV에 필요한 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를 사용 설정해야 합니다. 베어메탈용 GKE는 클러스터를 만들 때 API를 사용합니다. 또한 API는 Google Cloud 연결을 유지하는 데 필요합니다. Google Cloud에 연결하면 베어메탈용 GKE에서 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를 사용 설정하려면 다음 명령어를 실행하세요.

  1. Google Cloud CLI에 로그인합니다.

    gcloud auth login
    
  2. 다음 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 \
        storage.googleapis.com
    
  1. 프로젝트에서 어떤 API와 서비스가 사용 설정됐는지 확인하려면 다음 명령어를 실행합니다.

    gcloud services list --project=PROJECT_ID \
        --enabled
    

서비스 계정 구성

Google API를 사용하려면 베어메탈용 GKE에 연결된 Google Cloud 프로젝트의 특정 IAM 역할로 구성된 서비스 계정이 필요합니다. 특히 프로덕션 환경에서는 용도별로 별도의 서비스 계정을 만드는 것이 좋습니다.

bmctl 도구를 사용하여 클러스터를 만드는 경우 bmctl create config를 실행할 때 bmctl에서 필요한 IAM 역할을 사용하여 서비스 계정을 만들도록 --create-service-accounts 플래그를 포함할 수 있습니다. GKE On-Prem API 클라이언트를 사용하여 관리자 클러스터를 만드는 경우 기본적으로 bmctl register bootstrap 명령어는 개발자가 명령어를 실행하여 부트스트랩 클러스터를 만들 때 필요한 IAM 역할이 있는 서비스 계정을 만듭니다.

서비스 계정은 사용자 클러스터를 만드는 데에도 필요하지만 서비스 계정은 사용자 클러스터를 관리하는 관리자 클러스터를 만들 때 생성되고 구성되었습니다.

다음 표에서는 자동으로 생성되는 서비스 계정을 설명합니다.

서비스 계정 목적 역할
anthos-baremetal-gcr 베어메탈용 GDCV는 이 서비스 계정을 사용하여 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 LoggingCloud Monitoring으로 내보냅니다. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor

서비스 계정 수동 구성

원하는 경우 클러스터를 만들기 전에 서비스 계정을 수동으로 만들고 필요한 역할로 구성하며 JSON 키 파일을 다운로드할 수 있습니다. bmctl을 사용하여 클러스터를 만드는 경우 적절한 클러스터 구성 파일에 JSON 키 파일에 대한 참조를 추가합니다. 예시를 보려면 구성 파일 수정을 참조하세요. GKE On-Prem API를 사용하여 관리자 클러스터를 만드는 경우 bmctl register bootstrap을 실행하여 부트스트랩 클러스터를 만들 때 키 파일을 지정할 수 있습니다.

서비스 계정 및 키 파일을 만들려면 다음 안내를 따르세요.

  1. 관리자 워크스테이션에서 baremetal 디렉터리에 있는지 확인합니다.

  2. 아직 로그인하지 않았으면 Google Cloud CLI에 로그인합니다.

    gcloud auth login
    
  3. 서비스 계정을 만듭니다.

    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
    
  4. 서비스 계정에 필요한 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"
    
  5. 서비스 계정 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 런타임에 사용할 수 있습니다.

서비스 계정 및 키 파일을 만들려면 다음 단계를 수행합니다.

  1. 현재 위치가 baremetal 디렉터리인지 확인합니다.

  2. 아직 로그인하지 않았으면 Google Cloud CLI에 로그인합니다.

    gcloud auth login
    
  3. Google Cloud 프로젝트에서 Cloud Storage API storage.googleapis.com을 아직 사용 설정하지 않았으면 사용 설정합니다.

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. 클러스터에서 Cloud Storage 버킷에 액세스하는 데 사용할 수 있는 서비스 계정을 만듭니다.

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    SA_NAME을 새 서비스 계정의 이름으로 바꿉니다. 이 서비스 계정 이름은 생성 중에 프로비저닝된 이메일 주소에 SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식으로 표시됩니다.

  5. 다음 권한을 사용하여 커스텀 역할을 만듭니다.

    • 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 형식입니다.

  6. 서비스 계정에 정책 바인딩을 추가합니다.

    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'
    
  7. 서비스 계정 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 런타임에 사용할 이미지 가져오기를 참조하세요.