Crea funciones y cuentas de servicio de Google Cloud de forma manual

En este tema se describe cómo configurar los permisos para una migración manual de Migrate for Compute Engine de Google Cloud (antes llamado Velostrata). En esta guía el objetivo es ayudar a quienes desean comprender o controlar los permisos otorgados para el proceso de migración y las cargas de trabajo migradas.

En esta página, se describe el proceso de creación de funciones para migrar a los siguientes destinos:

  • Un solo proyecto de Google Cloud
  • Varios proyectos de Google Cloud

Requisitos previos

Se necesitan dos cuentas de servicio para las migraciones de Migrate for Compute Engine. Para obtener más información sobre cada una de estas cuentas de servicio y sus funciones asociadas, consulta la página sobre cómo configurar Google Cloud. Para obtener más información sobre los comandos de gcloud y sus parámetros, consulta la documentación de la CLI de gcloud.

  1. Debes instalar el SDK de Google Cloud.
  2. Crea un proyecto de Google Cloud para alojar la infraestructura de Migrate for Compute Engine en Google Cloud. Este proyecto se llamará proyecto de infraestructura. Usa este proyecto donde veas project-ID.
  3. Habilita las siguientes API en tu proyecto de infraestructura:
    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
    

Para continuar, indica si migras a un único proyecto o a varios.

Único proyecto

En esta sección, se describe cómo crear las cuentas de servicio requeridas para un único proyecto independiente y cómo asignar las funciones adecuadas a esas cuentas.

Crea funciones

Para crear las funciones a nivel de proyecto, sigue estos pasos:

  1. Abre un símbolo del sistema y ejecuta el siguiente comando. Reemplaza el parámetro de acceso con la información de acceso de tu cuenta de Google Cloud.
    gcloud auth login login@google.com --no-launch-browser --brief
    
  2. Descarga el archivo de Cloud Deployment Manager en la página Descargas.
  3. Expande el archivo descargado y guárdalo en un directorio al que puedas acceder cuando crees funciones.
  4. En los directorios expandidos, abre el directorio manual.
    cd google/migrate/gce/manual
    
  5. En ese directorio, usa archivos YAML para asignar permisos a las siguientes funciones:

    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
    

Crea cuentas de servicio

  1. Crea la cuenta de servicio velos-manager en Google Cloud. Nota: El project-ID es tu proyecto de infraestructura.

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

  2. Asigna la función velos_manager a la cuenta de servicio 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. Agrega funciones obligatorias adicionales a la función 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. Crea la cuenta de servicio velos-cloud-extension en Google Cloud. Crea esta cuenta en el proyecto en el que planeas implementar la extensión de Cloud (CE) de Migrate for Compute Engine.

    gcloud iam service-accounts create "velos-cloud-extension" \
    --display-name "velos-cloud-extension"
  5. Asigna la función velos_ce a la cuenta de servicio 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. Asigna funciones obligatorias adicionales a la cuenta de servicio 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
    

Varios proyectos

En esta sección, se describe cómo crear las funciones necesarias para migrar a varios proyectos y cómo asignarlas a las cuentas de servicio.

Crea funciones

Los siguientes pasos crean funciones para Migrate for Compute Engine en Google Cloud.

  1. Crea las funciones de Migrate for Compute Engine en Google Cloud a nivel de la organización:
    gcloud auth login orgadmin@google.com --no-launch-browser --brief
  2. Descarga el archivo de Cloud Deployment Manager en la página Descargas.
  3. Expande el archivo descargado y guárdalo en un directorio al que puedas acceder cuando crees funciones.
  4. En los directorios expandidos, abre el directorio manual.
    cd google/migrate/gce/manual
    
  5. En ese directorio, usa archivos YAML para asignar permisos a las siguientes funciones:

    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
    

Crea cuentas de servicio y asígnales funciones

  1. Crea la cuenta de servicio velos-manager en Google Cloud. Aunque puedes crear la cuenta de servicio velos-manager en cualquiera de tus proyectos, si se usa Migrate for Compute Engine 4.5, se recomienda crear esta cuenta en el proyecto host para simplificar la configuración.

    gcloud config set project project-ID
    gcloud iam service-accounts create "velos-manager" \
    --display-name "velos-manager"
  2. Asigna la función velos_manager a la cuenta de servicio 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. Agrega funciones obligatorias adicionales a la función 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. Crea la cuenta de servicio velos-cloud-extension en Google Cloud. Crea esta cuenta en el proyecto en el que planeas implementar la extensión de Cloud (CE) de Migrate for Compute Engine.

    gcloud iam service-accounts create "velos-cloud-extension" \
    --display-name "velos-cloud-extension"
  5. Asigna la función velos_ce a la cuenta de servicio 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. Asigna funciones obligatorias adicionales a la cuenta de servicio 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