手动创建 Google Cloud 角色和服务账号

本主题介绍如何为手动运行 Google Cloud Migrate for Compute Engine(原 Velostrata)迁移设置权限。此处提供的指导旨在帮助用户了解或控制为迁移过程和迁移工作负载授予的权限。

本页面介绍了迁移至以下各项时的角色创建流程:

  • 单个 Google Cloud 项目
  • 多个 Google Cloud 项目

前提条件

执行 Migrate for Compute Engine 迁移需要两个服务账号。如需详细了解这些服务账号及其关联角色,请参阅配置 Google Cloud。如需详细了解 gcloud 命令及其参数,请参阅 gcloud CLI 文档

  1. 您必须安装 Google Cloud SDK
  2. 创建 Google Cloud 项目,以在 Google Cloud 上托管 Migrate for Compute Engine 基础架构。我们将此项目称为“基础架构项目”。只要看到 project-ID,就可以使用此项目。
  3. 对您的基础架构项目启用以下 API。
    gcloud services enable iam.googleapis.com --project project-ID
    gcloud services enable cloudresourcemanager.googleapis.com --project project-ID
    gcloud services enable compute.googleapis.com --project project-ID
    gcloud services enable storage-component.googleapis.com --project project-ID
    gcloud services enable logging.googleapis.com --project project-ID
    gcloud services enable monitoring.googleapis.com --project project-ID
    

如需继续,请选择是要迁移到单个项目还是多个项目。

单个项目

本部分介绍了如何创建迁移到单个独立项目所需的服务账号,并为这些服务账号分配相应的角色。

创建角色

在项目级层创建角色:

  1. 打开命令提示符,并运行以下命令。将 login 参数替换为您的 Google Cloud 账号登录信息。
    gcloud auth login login@google.com --no-launch-browser --brief
    
  2. 下载页面下载 Cloud Deployment Manager 文件。
  3. 展开下载的文件,并将其保存到您创建角色时可以访问的目录。
  4. 在展开的目录中,打开 manual 目录。
    cd google/migrate/gce/manual
    
  5. 使用该目录中的 YAML 文件为角色分配权限:

    gcloud iam roles create "velos_manager" --project project-ID \
    --file velos_gcp_mgmt_role.yaml --no-user-output-enabled --quiet
    gcloud iam roles create "velos_ce" --project project-ID \
    --file velos_gcp_ce_role.yaml.yaml --no-user-output-enabled --quiet
    

创建服务账号

  1. 在 Google Cloud 中创建 velos-manager 服务账号。注意:project-ID 是您的基础架构项目。

    gcloud config set project project-ID
    gcloud iam service-accounts create "velos-manager" --display-name "velos-manager"

  2. velos_manager 角色分配给 velos-manager 服务账号。

    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "projects/project-ID/roles/velos_manager" \
     --no-user-output-enabled --quiet
    
  3. velos_manager 角色添加其他必需的角色:

    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/iam.serviceAccountUser"
     --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/logging.logWriter"
     --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/monitoring.metricWriter"
     --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/monitoring.viewer"
     --no-user-output-enabled --quiet
    
    gcloud iam service-accounts add-iam-policy-binding \
    "velos-manager@project-ID.iam.gserviceaccount.com" \
    --member=serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
    --role=roles/iam.serviceAccountTokenCreator --project project-ID
    
  4. 在 Google Cloud 中创建 velos-cloud-extension 服务账号。在计划部署 Migrate for Compute Engine Cloud Extensions (CE) 扩展的项目中创建此账号。

    gcloud iam service-accounts create "velos-cloud-extension" \
    --display-name "velos-cloud-extension"
  5. velos_ce 角色分配给 velos-cloud-extension 服务账号:

    gcloud projects add-iam-policy-binding project-ID \
    --member serviceAccount:"velos-cloud-extension@project-ID.iam.gserviceaccount.com" \
    --role "projects/project-ID/roles/velos_ce" \
    --no-user-output-enabled --quiet
    
  6. velos-cloud-extension 服务账号分配其他必需的角色:

    gcloud projects add-iam-policy-binding project-ID \
    --member serviceAccount:"velos-cloud-extension@project-ID.iam.gserviceaccount.com" \
    --role "roles/logging.logWriter" \
    --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID \
    --member serviceAccount:"velos-cloud-extension@project-ID.iam.gserviceaccount.com" \
    --role "roles/monitoring.metricWriter" \
    --no-user-output-enabled --quiet
    

多个项目

本部分介绍了如何创建迁移到多个项目所需的角色,并将这些角色分配给服务账号。

创建角色

执行以下步骤,即可为 Google Cloud 上的 Migrate for Compute Engine 创建角色。

  1. 在 Google Cloud 组织级层创建 Migrate for Compute Engine 角色:
    gcloud auth login orgadmin@google.com --no-launch-browser --brief
  2. 下载页面下载 Cloud Deployment Manager 文件。
  3. 展开下载的文件,并将其保存到您创建角色时可以访问的目录。
  4. 在展开的目录中,打开 manual 目录。
    cd google/migrate/gce/manual
    
  5. 使用该目录中的 YAML 文件为角色分配权限:

    gcloud iam roles create "velos_manager" --organization organization-ID \
    --file velos_gcp_mgmt_role.yaml --no-user-output-enabled --quiet
    gcloud iam roles create "velos_ce" --project project-ID \
    --file velos_gcp_ce_role.yaml.yaml --no-user-output-enabled --quiet
    

创建服务账号并为其分配角色

  1. 在 Google Cloud 中创建 velos-manager 服务账号。尽管您可以在任何项目中创建 velos-manager 服务账号,但为了简化配置,Migrate for Compute Engine 4.8 建议在宿主项目中创建此服务账号。

    gcloud config set project project-ID
    gcloud iam service-accounts create "velos-manager" \
    --display-name "velos-manager"
  2. velos_manager 角色分配给 velos-manager 服务账号。

    gcloud organizations add-iam-policy-binding organization-ID \
    --member serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com"\
    --role organizations/organization-ID/roles/"velos_manager"\
    --no-user-output-enabled --quiet
    
    gcloud iam service-accounts add-iam-policy-binding \
    "velos-manager@project-ID.iam.gserviceaccount.com" \
    --member=serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
    --role=roles/iam.serviceAccountTokenCreator --project project-ID
    
  3. velos_manager 角色添加其他必需的角色:

    gcloud organizations add-iam-policy-binding organization-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/iam.serviceAccountUser"
     --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/logging.logWriter"
     --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/monitoring.metricWriter"
     --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID --member \
     serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
     --role "roles/monitoring.viewer"
     --no-user-output-enabled --quiet
    
    gcloud iam service-accounts add-iam-policy-binding \
    "velos-manager@project-ID.iam.gserviceaccount.com" \
    --member=serviceAccount:"velos-manager@project-ID.iam.gserviceaccount.com" \
    --role=roles/iam.serviceAccountTokenCreator --project project-ID
    
    
  4. 在 Google Cloud 中创建 velos-cloud-extension 服务账号。在计划部署 Migrate for Compute Engine Cloud Extensions (CE) 扩展的项目中创建此账号。

    gcloud iam service-accounts create "velos-cloud-extension" \
    --display-name "velos-cloud-extension"
  5. velos_ce 角色分配给 velos-cloud-extension 服务账号:

    gcloud projects add-iam-policy-binding project-ID \
    --member serviceAccount:"velos-cloud-extension@project-ID.iam.gserviceaccount.com" \
    --role "projects/project-ID/roles/velos_ce" \
    --no-user-output-enabled --quiet
    
  6. velos-cloud-extension 服务账号分配其他必需的角色:

    gcloud projects add-iam-policy-binding project-ID \
    --member serviceAccount:"velos-cloud-extension@project-ID.iam.gserviceaccount.com" \
    --role "roles/logging.logWriter" \
    --no-user-output-enabled --quiet
    
    gcloud projects add-iam-policy-binding project-ID \
    --member serviceAccount:"velos-cloud-extension@project-ID.iam.gserviceaccount.com" \
    --role "roles/monitoring.metricWriter" \
    --no-user-output-enabled --quiet