Google Cloud 리소스 설정

설치, 하드웨어, 운영체제의 기본 요건을 충족하는 것 외에도 베어메탈용 Anthos 클러스터를 실행하려면 Google Cloud 프로젝트, API, 서비스 계정을 구성하고 설정해야 합니다.

bmctl 명령어를 사용하면 클러스터를 만들 때 서비스 계정과 API를 자동으로 사용 설정할 수 있지만, 이러한 서비스를 수동으로 설정하여 작업을 보다 세밀하게 제어할 수도 있습니다.

시작하기 전에

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

설치 중에 다음 사용자 인증 정보를 제공해야 합니다.

  • 클러스터 노드 머신에 액세스하는 데 필요한 비공개 SSH 키
  • root를 사용하지 않는 경우 클러스터 노드 머신 로그인 이름

베어메탈용 Anthos 클러스터를 설치하기 전에 필요한 사용자 인증 정보가 있는지 확인하세요.

gcloud에 로그인

  1. gcloud auth application-default 로그인을 사용하여 gcloud에 사용자로 로그인합니다.
  2. gcloud auth application-default login
    
    아래에 설명된 자동 API 사용 설정 및 서비스 계정 생성 기능을 사용하려면 프로젝트 소유자/편집자 역할이 있어야 합니다. 또한 다음 IAM 역할을 사용자에게 추가할 수 있습니다.
    • 서비스 계정 관리자
    • 서비스 계정 키 관리자
    • 프로젝트 IAM 관리자
    • Compute 뷰어
    • 서비스 사용량 관리자
    또는 해당 역할이 할당된 서비스 계정이 이미 있는 경우 다음을 실행합니다.
    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    
    JSON_KEY_FILE은 서비스 계정 JSON 키 파일의 경로를 지정합니다.
  3. 클러스터 생성 시 사용할 Google Cloud 프로젝트 ID를 가져옵니다.
  4. export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

기본 Google Cloud 프로젝트 ID 및 역할 설정

서비스 계정 구성 외에 기본 project id를 설정할 수 있습니다.

베어메탈용 Anthos 클러스터의 프로젝트에 대한 owner 또는 editor 역할이 있어야 합니다.

기본 프로젝트를 설정하려면 다음 명령어를 실행하고 PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

gcloud config set project PROJECT_ID

API 사용 설정

베어메탈용 Anthos 클러스터를 설치하기 전에 연결된 Google Cloud 프로젝트에서 여러 API를 사용 설정해야 합니다. 프로젝트에 API를 사용 설정하려면 Google Cloud 프로젝트의 roles/owner, roles/editor, roles/serviceusage.serviceUsageAdmin 역할 중 하나를 부여받아야 합니다.

자세한 내용은 단일 역할 부여를 참조하세요.

필요한 IAM 권한이 설정되면 다음 API를 사용 설정합니다.

  • anthos.googleapis.com
  • anthosaudit.googleapis.com
  • anthosgke.googleapis.com
  • cloudresourcemanager.googleapis.com
  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • iam.googleapis.com
  • logging.googleapis.com
  • monitoring.googleapis.com
  • opsconfigmonitoring.googleapis.com
  • serviceusage.googleapis.com
  • stackdriver.googleapis.com

bmctl 도구를 사용하여 이러한 서비스를 사용 설정할 수도 있습니다.

서비스 계정 수동 구성

베어메탈용 Anthos 클러스터의 bmctl 명령어로 클러스터를 만들 때 Google 서비스 계정 및 API를 자동으로 설정할 수 있습니다.

하지만 이러한 서비스를 수동으로 설정하면 시스템을 보다 세부적으로 제어하거나 기본 서비스, 계정, 프로젝트 집합을 사용하여 클러스터 생성을 간소화할 수 있습니다.

프로덕션 환경에서는 용도별로 서비스 계정을 만들어야 합니다. 베어메탈용 Anthos 클러스터에는 용도에 따라 다음과 같이 다양한 유형의 Google Cloud 서비스 계정이 필요합니다.

  • Container Registry(gcr.io)에 액세스할 때는 특별한 역할이 없어도 됩니다.
  • Fleet에 클러스터를 등록하려면 Google Cloud 프로젝트의 서비스 계정에 roles/gkehub.admin IAM 역할을 부여합니다.
  • Fleet에 연결하려면 Google Cloud 프로젝트의 서비스 계정에 roles/gkehub.connect IAM 역할을 부여합니다.
  • Google Cloud 운영 제품군에 로그 및 측정항목을 전송하려면 Google Cloud 프로젝트의 서비스 계정에 다음 IAM 역할을 부여합니다.

    • roles/logging.logWriter
    • roles/monitoring.metricWriter
    • roles/stackdriver.resourceMetadata.writer
    • roles/monitoring.dashboardEditor
    • roles/opsconfigmonitoring.resourceMetadata.writer

베어메탈용 Anthos 클러스터에서 클러스터를 Google Cloud에 연결합니다. 이 연결을 통해 다음 기능이 사용 설정됩니다.

  • 베어메탈 클러스터를 Google Cloud에 연결하려면 연결하세요. 이를 통해 클러스터 및 워크로드 관리 기능(통합 사용자 인터페이스, Cloud 콘솔 포함)에 액세스하여 클러스터와 상호작용할 수 있습니다.
  • Cloud 콘솔에서 클러스터의 로그 및 측정항목을 보기 위한 로깅모니터링
  • Cloud Storage 버킷에 클러스터 스냅샷을 자동으로 업로드

수동으로 액세스를 구성하는 프로세스는 다음과 같습니다.

  • Cloud 프로젝트에서 필요한 Google 서비스를 사용 설정합니다.
  • 필요한 역할을 가진 다음 서비스 계정을 만듭니다.
    • 연결-에이전트 서비스 계정: Connect는 이 서비스 계정을 사용하여 클러스터와 Google Cloud 간의 연결을 유지합니다.
    • 연결-등록 서비스 계정: Connect는 이 서비스 계정을 사용하여 Google Cloud에 클러스터를 등록합니다.
    • 로깅-모니터링 서비스 계정: Connect는 이 서비스 계정을 사용하여 클러스터의 로그와 측정항목을 Logging 및 Monitoring으로 내보냅니다.
    • 스토리지-에이전트 서비스 계정: bmctl는 이 서비스 계정을 사용하여 클러스터의 스냅샷을 Cloud Storage에 자동으로 저장합니다.

  • 각 서비스 계정에 대한 JSON 키 파일을 다운로드합니다.

그런 다음 JSON 키 파일에 대한 참조를 적절한 클러스터 구성 파일에 추가합니다. 자세한 내용은 클러스터 만들기: 개요를 참조하세요.

Connect에서 사용할 서비스 계정 구성

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

  1. 현재 위치가 baremetal 디렉터리인지 확인합니다.
  2. Cloud 프로젝트에서 필요한 Google 서비스를 사용 설정합니다.
  3. gcloud services enable --project=PROJECT_ID \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        cloudresourcemanager.googleapis.com \
        anthos.googleapis.com
  4. 필요한 역할을 가진 연결-에이전트 서비스 계정을 만들고 키 파일을 다운로드합니다. 이 단계에서는 baremetal 디렉터리에 connect-agent.json 키 파일을 만듭니다.
    1. 서비스 계정 만들기:
    2. gcloud iam service-accounts create connect-agent-svc-account --project=PROJECT_ID
    3. gkehub.connect 역할을 부여합니다.
    4. gcloud projects add-iam-policy-binding  PROJECT_ID \
          --member="serviceAccount:connect-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/gkehub.connect"
    5. 서비스 계정 JSON 키 파일을 다운로드합니다.
    6. gcloud iam service-accounts keys create connect-agent.json \
          --project=PROJECT_ID \
          --iam-account=connect-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com
      
  5. 필요한 역할을 가진 연결-등록 서비스 계정을 만들고 키 파일을 다운로드합니다. 이 단계에서는 baremetal 디렉터리에 connect-register.json 키 파일을 만듭니다.
    1. 서비스 계정 만들기:
    2. gcloud iam service-accounts create connect-register-svc-account \
          --project=PROJECT_ID
    3. gkehub.admin 역할을 부여합니다.
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:connect-register-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/gkehub.admin
    5. 서비스 계정 JSON 키 파일을 다운로드합니다.
    6. gcloud iam service-accounts keys create connect-register.json \
          --project=PROJECT_ID \
          --iam-account=connect-register-svc-account@PROJECT_ID.iam.gserviceaccount.com
      

로그를 감사하고 프로젝트를 모니터링하도록 서비스 계정 구성

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

  1. 현재 위치가 baremetal 디렉터리인지 확인합니다.
  2. Cloud 프로젝트에서 필요한 Google 서비스를 사용 설정합니다.
  3. gcloud services enable --project PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        monitoring.googleapis.com \
        logging.googleapis.com \
        opsconfigmonitoring.googleapis.com
    
  4. 필요한 역할을 가진 로깅-모니터링 서비스 계정을 만들고 키 파일을 다운로드합니다. 이 단계에서는 baremetal 디렉터리에 cloud-ops.json 키 파일을 만듭니다.
    1. 서비스 계정 만들기
    2. gcloud iam service-accounts create logging-monitoring-svc-account \
          --project=PROJECT_ID
      
    3. logging.logWriter 역할을 부여합니다.
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/logging.logWriter"
      
    5. monitoring.metricWriter 역할을 부여합니다.
    6. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.metricWriter"
      
    7. roles/stackdriver.resourceMetadata.writer 역할을 부여합니다.
    8. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/stackdriver.resourceMetadata.writer"
      
    9. roles/opsconfigmonitoring.resourceMetadata.writer 역할을 부여합니다.
    10. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/opsconfigmonitoring.resourceMetadata.writer"
      
    11. roles/monitoring.dashboardEditor 역할을 부여합니다.
    12. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.dashboardEditor"
      
    13. 서비스 계정 JSON 키 파일을 다운로드합니다.
    14. gcloud iam service-accounts keys create cloud-ops.json \
          --project=PROJECT_ID \
          --iam-account=logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com
      

Cloud Storage 버킷에 액세스할 수 있는 서비스 계정 구성

서비스 계정 및 키 파일을 사용하여 Cloud Storage에 액세스합니다. 이 서비스 계정을 사용하여 클러스터의 스냅샷이 Cloud Storage 버킷에 자동으로 업로드되도록 사용 설정하거나 Anthos VM 런타임에 사용하기 위해 Cloud Storage 버킷에서 가상 머신(VM) 이미지를 가져올 수 있습니다.

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

  1. 현재 위치가 baremetal 디렉터리인지 확인합니다.
  2. Cloud 프로젝트에서 필요한 Google 서비스를 사용 설정합니다.
  3. gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
  4. Cloud Storage 버킷에 액세스하기 위해 클러스터에 사용될 수 있는 서비스 계정을 만듭니다.
  5. gcloud iam service-accounts create storage-agent-svc-account \
        --project=PROJECT_ID
  6. 서비스 계정이 Cloud Storage 버킷에 데이터를 업로드하거나 VM 이미지를 가져올 수 있도록 서비스 계정에 storage.admin 역할을 부여합니다.
  7. gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:storage-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    
  8. 서비스 계정 JSON 키 파일을 다운로드합니다.
  9. gcloud iam service-accounts keys create storage-agent.json \
        --iam-account=storage-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com

클러스터 스냅샷을 만들어 Cloud Storage 버킷에 자동으로 업로드하는 방법에 대한 자세한 내용은 클러스터 문제 진단을 위한 스냅샷 만들기를 참조하세요.

Cloud Storage에서 VM 이미지를 가져오는 방법은 Anthos VM 런타임용 Cloud Storage에서 이미지를 가져오기 위한 사용자 인증 정보 만들기 및 사용을 참조하세요.