Usa imágenes de otros proyectos

En esta página, se indica cómo configurar tu proyecto para que Deployment Manager pueda crear instancias de máquina virtual de Compute Engine con imágenes de sistema operativo de otro proyecto.

Por ejemplo, imagina que tienes un proyecto llamado “Proyecto increíble”, en el que Deployment Manager crea y administra las instancias de VM. Supongamos que necesitas usar las imágenes privadas de otro proyecto llamado “Imágenes de base de datos”. Para otorgar acceso a estas imágenes, el propietario del proyecto “Imágenes de base de datos” debe otorgar la función de IAM roles/compute.imageUser a la cuenta de servicio de las API de Google del “Proyecto increíble” a fin de que este pueda usarlas.

También puedes usar este proceso para otorgar a los grupos de instancias administrados acceso a las imágenes de otros proyectos.

Antes de comenzar

Limitaciones

El uso de esta función tiene las siguientes restricciones:

  • Por el momento, la función roles/compute.imageUser está en versión Beta.
  • Solo puedes otorgar la función compute.imageUser a nivel de proyecto.
  • Si se otorga la función compute.imageUser, se conceden permisos a todas las imágenes del proyecto en particular. No se pueden compartir imágenes específicas.
  • No se puede otorgar esta función a allAuthenticatedUsers ni a allUsers.

Otorga acceso a las imágenes

Para otorgar acceso a las imágenes de otro proyecto, el propietario del proyecto que tiene las imágenes debe conceder el acceso a la cuenta de servicio de las API de Google del proyecto en el que se usarán.

  1. Ve a la página de IAM en GCP Console del proyecto que debe acceder a las imágenes privadas que son propiedad de otro proyecto.

    Ir a la página de IAM

  2. Si se te solicita, selecciona tu proyecto de la lista. Recuerda seleccionar el proyecto que debe acceder a las imágenes almacenadas en otro proyecto.
  3. Busca la cuenta de servicio de las API de Google, que tiene una dirección de correo electrónico en el siguiente formato:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Toma nota de la dirección de correo electrónico anterior. Después, un propietario del proyecto en el que se encuentran las imágenes deseadas podrá otorgar la función roles/compute.imageUser a la cuenta de servicio de las API de Google.

    Consola

    1. En Google Cloud Platform Console, ve a la página de IAM del proyecto que tiene las imágenes a las que deseas tener acceso.

      Ir a la página de IAM

    2. Selecciona el proyecto de la lista de proyectos.
    3. Haz clic en el botón Agregar para agregar un miembro nuevo.
    4. En la casilla Miembros, ingresa la dirección de correo electrónico de la cuenta de servicio.
    5. Expande el menú desplegable Funciones y selecciona Compute Engine > Usuario de imagen de Compute (versión Beta).
    6. Haz clic en Agregar para agregar la cuenta.

    gcloud

    Con la herramienta de línea de comandos de gcloud, agrega un vínculo a la Política de Cloud IAM del proyecto, de la siguiente manera:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUser

    donde:

    • [PROJECT_ID] es el ID del proyecto que contiene las imágenes que deseas compartir.
    • [SERVICE_ACCOUNT_EMAIL] es el correo electrónico de la cuenta de servicio.

    Por ejemplo:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/compute.imageUser

    API

    En la API, realiza una solicitud POST a la siguiente URL, en la que [PROJECT_ID] es el ID del proyecto que contiene las imágenes que quieres compartir.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    El cuerpo de la solicitud debe contener la lista de vínculos que deseas aplicar al proyecto. La función roles/compute.imageUser debe ser parte del vínculo. Por ejemplo:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/compute.imageUser",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gservbiceaccount.com"
               ]
           }
           ]
       }
    

    }

Usa imágenes de otros proyectos en tu configuración

Después de que otorgues a un proyecto acceso a las imágenes de otro proyecto, los usuarios podrán usarlas si especifican en tus plantillas o configuraciones el ID del proyecto en el que se encuentran las imágenes:

image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]

Por ejemplo, si el ID del proyecto de la imagen es database-images, entonces podrías brindar la siguiente URI de imagen en tu configuración:

resources:
- name: a-special-vm
  type: compute.v1.instances
  properties:
    machineType: zones/us-central1-a/machineTypes/f1-micro
    image: projects/database-images/global/images/example-database-image
    ...

¿Qué sigue?

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Deployment Manager