Cómo aprovisionar una VPC compartida

La VPC compartida te permite exportar subredes desde una red de VPC en un proyecto host a otros proyectos de servicio en la misma organización. Las instancias en los proyectos de servicio pueden tener conexiones de red en las subredes compartidas del proyecto host. En esta página, se describe cómo configurar y usar la VPC compartida, incluida la preparación administrativa necesaria para tu organización.

Cuotas, límites y recursos aptos

Antes de comenzar, asegúrate de consultar las páginas Descripción general de la VPC compartida y Descripción general de IAM. Específicamente, realiza lo siguiente:

Prepara tu organización

Administradores y la IAM

La preparación de tu organización, la configuración de proyectos de host de la VPC compartida y el uso de redes de VPC compartida implica un mínimo de tres funciones administrativas de IAM diferentes. Si deseas obtener más información sobre cada función y sobre las opcionales, consulta la sección administradores y luego IAM en la descripción general de la VPC compartida.

Administrador Motivo
Administrador de la organización Los administradores de la organización nombran a los administradores de la VPC compartida y definen una política a nivel de la organización para evitar la eliminación accidental de proyectos host de VPC compartida.
Administrador de VPC compartida Los administradores de VPC compartida habilitan proyectos host y les adjuntan proyectos de servicio.
Administrador de proyectos de servicio Un administrador de VPC compartida define un administrador de proyectos de servicio; primero, le otorga a un miembro de IAM la función de usuario de red compute.networkUser ya sea para todo el proyecto host o solo algunas de sus subredes. Los administradores de proyectos de servicio también mantienen la propiedad y el control sobre los recursos definidos en los proyectos de servicio, por lo que deben contar con la función Administrador de instancia (compute.instanceAdmin) o ser propietarios del proyecto.

Evita la eliminación accidental de proyectos host

La eliminación accidental de un proyecto host provocaría interrupciones en todos los proyectos de servicio adjuntos. Cuando un proyecto se configura para ser un proyecto host de VPC compartida, se coloca un bloqueo especial, llamado retención, en él. Siempre que la retención esté presente, se evita que el proyecto se borre accidentalmente. La retención se quita automáticamente del proyecto host cuando este ya no está configurado para VPC compartida.

Un administrador de la organización o un usuario distinto con la función orgpolicy.policyAdmin puede definir una política a nivel de la organización para limitar la eliminación de las retenciones solo a los propietarios de la organización y otros usuarios con la función resourcemanager.lienModifier. Esto evita efectivamente que el propietario de un proyecto que no es propietario de una organización y que no tenga la función resourcemanager.lienModifier pueda quitar accidentalmente un proyecto host de VPC compartida. Si deseas obtener más información sobre los permisos asociados con la función resourcemanager.lienModifier, consulta Cómo colocar una retención en un proyecto en la documentación de administrador de recursos.

Debido a que una política de la organización se aplica a todos los proyectos en la organización, solo necesitas seguir estos pasos una vez para restringir la eliminación de retenciones.

  1. Autentícate en gcloud como un administrador de organización o miembro de IAM dentro de la función orgpolicy.policyAdmin. Reemplaza [ORG_ADMIN] por el nombre de un administrador de la organización:

    gcloud auth login [ORG_ADMIN]
    
  2. Determina el número de ID de tu organización observando la salida de este comando.

    gcloud organizations list
    
  3. Implementa la política compute.restrictXpnProjectLienRemoval de tu organización con la ejecución de este comando. Reemplaza [ORG_ID] por el número que determinaste en el paso anterior.

    gcloud beta resource-manager org-policies enable-enforce \
        --organization [ORG_ID] compute.restrictXpnProjectLienRemoval
    
  4. Sal de gcloud si terminaste de realizar tareas como administrador de la organización para proteger tu cuenta.

    gcloud auth revoke [ORG_ADMIN]
    

Nombra administradores de VPC compartida

Un administrador de organización puede otorgar a uno o más miembros de IAM la función de administrador de VPC compartida, compute.xpnAdmin. Este otorgamiento crea un vínculo a nivel de organización o carpeta, no al nivel de proyecto. Por lo tanto, los miembros de IAM deben definirse en la organización, no solo en un proyecto.

Console

Para otorgar la función de administrador de VPC compartida a nivel de organización, realiza lo siguiente:

  1. Inicia sesión en Google Cloud Platform Console como administrador de la organización y, a continuación, ve a la página IAM.
    Ir a la página IAM
  2. Desde el menú del proyecto, selecciona tu organización.
    Si seleccionas un proyecto, no verás las entradas correctas en el menú Funciones.
  3. Haz clic en Agregar.
  4. Ingresa las direcciones de correo electrónico de los Miembros.
  5. En el menú desplegable Funciones, selecciona Compute Engine > Administrador de VPC compartida de Compute.

  6. Haz clic en Guardar.

Para otorgar la función de administrador de VPC compartida a nivel de carpeta, realiza lo siguiente:

  1. Inicia sesión en Google Cloud Platform Console como administrador de la organización y, a continuación, ve a la página IAM.
    Ir a la página IAM
  2. Desde el menú del proyecto, selecciona tu carpeta.
    Si seleccionas una organización o proyecto, no verás las opciones correctas.
  3. En la página Miembros, haz clic en Agregar.
  4. Ingresa las direcciones de correo electrónico de los Nuevos miembros.
  5. En Seleccionar una función, selecciona Compute Engine > Administrador de VPC compartida de Compute.
  6. Haz clic en Guardar.

gcloud

  1. Autentícate en gcloud como administrador de organización. Reemplaza [ORG_ADMIN] por el nombre de un administrador de la organización:

    gcloud auth login [ORG_ADMIN]
    
  2. Determina el número de ID de tu organización observando la salida de este comando.

    gcloud organizations list
    
  3. Si deseas asignar la función de administrador de VPC compartida en el nivel de la organización, haz lo siguiente:

    1. Aplica la función de administrador de VPC compartida a un miembro de IAM existente. Reemplaza [ORG_ID] por el número de ID de la organización del paso anterior y [EMAIL_ADDRESS] por la dirección de correo electrónico del usuario a quien le asignas la función de administrador de VPC compartida.

       gcloud organizations add-iam-policy-binding [ORG_ID] 
      --member='user:[EMAIL_ADDRESS]'
      --role="roles/compute.xpnAdmin"

  4. Si deseas asignar la función de administrador de VPC compartida en el nivel de la carpeta, haz lo siguiente:

    1. Determina el número de ID de tu carpeta observando la salida de este comando.

      gcloud beta resource-manager folders list --organization=[ORG_ID]
      
    2. Aplica la función de administrador de VPC compartida a un miembro de IAM existente. Reemplaza [ORG_ID] por el número de ID de la organización del paso anterior y [EMAIL_ADDRESS] por la dirección de correo electrónico del usuario a quien le asignas la función de administrador de VPC compartida.

       gcloud beta resource-manager folders add-iam-policy-binding [FOLDER_ID] 
      --member=`user:[EMAIL_ADDRESS]'
      --role="roles/compute.xpnAdmin"

  5. Sal de tu cuenta de administrador de la organización en la herramienta de línea de comandos de gcloud cuando termines de realizar tareas para proteger tu cuenta.

    gcloud auth revoke [ORG_ADMIN]
    

Cómo configurar una VPC compartida

Solo el administrador de VPC compartida puede realizar las tareas de esta sección.

Habilita un proyecto host

Dentro de una organización, los administradores de VPC compartida pueden designar proyectos como proyectos host, sujetos a cuotas y límites, siguiendo este procedimiento. Los administradores de VPC compartida también pueden crear y quitar proyectos si tienen las funciones resourcemanager.projectCreator y resourcemanager.projectDeleter para tu organización.

Console

  1. Ve a la página VPC compartida de Google Cloud Platform Console.
    Ir a la página VPC compartida
  2. Accede como administrador de VPC compartida.
  3. Selecciona el proyecto que deseas habilitar como un proyecto de host de VPC compartida en el selector de proyectos.
  4. Haz clic en Configurar VPC compartida.
  5. En la página siguiente, haz clic en Guardar y continuar en Habilitar proyecto host.
  6. En Seleccionar subredes, realiza una de las siguientes acciones:
    1. Haz clic en Compartir todas las subredes (permisos a nivel de proyecto) si necesitas compartir todas las subredes actuales y futuras en las redes de VPC del proyecto host con proyectos de servicio y administradores de proyectos de servicio especificados en los siguientes pasos.
    2. Haz clic en Subredes individuales (permisos a nivel de subred) si necesitas compartir subredes de forma selectiva de las redes de VPC del proyecto host con proyectos de servicio y administradores de proyectos de servicio. Luego, selecciona Subredes para compartir.
  7. Haz clic en Continuar.
    Se muestra la siguiente pantalla.
  8. En Nombres de proyecto, especifica los proyectos de servicio para adjuntar al proyecto host. Ten en cuenta que adjuntar proyectos de servicio no define ningún administrador de proyecto de servicio; eso se hace en el siguiente paso.
  9. En la sección Seleccionar usuarios por función, agrega administradores de proyectos de servicio. A estos usuarios se les otorgará la función de IAM de compute.networkUser para las subredes compartidas. Solo los administradores de proyectos de servicio pueden crear recursos en las subredes del proyecto host de VPC compartida.
  10. Haz clic en Guardar.

gcloud

  1. Autentícate en gcloud como administrador de VPC compartida. Reemplaza [SHARED_VPC_ADMIN] por el nombre del administrador de VPC compartida:

    gcloud auth login [SHARED_VPC_ADMIN]
    
  2. Habilita la VPC compartida para el proyecto que necesitas que se convierta en un proyecto host. Reemplaza [HOST_PROJECT_ID] por el ID del proyecto host.

    Si tienes una función de administrador de VPC compartida a nivel de la organización

    gcloud compute shared-vpc enable [HOST_PROJECT_ID]
    

    Si tienes una función de administrador de VPC compartida en el nivel de la carpeta

    gcloud beta compute shared-vpc enable [HOST_PROJECT_ID]
    
  3. Confirma que el proyecto aparece como un proyecto host para tu organización. Reemplaza [ORG_ID] por el ID de tu organización (determinado por gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects [ORG_ID]
    
  4. Si solo necesitabas habilitar un proyecto host, puedes salir de gcloud para proteger las credenciales de la cuenta de administrador de VPC compartida. De lo contrario, omite este paso y continúa con los pasos para adjuntar proyectos de servicio.

    gcloud auth revoke [SHARED_VPC_ADMIN]
    

Adjunta proyectos de servicio

Un proyecto de servicio debe adjuntarse a un proyecto host antes de que los administradores de proyecto de servicio puedan usar la VPC compartida. Un administrador de VPC compartida debe realizar los siguientes pasos para completar el adjunto.

Un proyecto de servicio solo se puede adjuntar a un proyecto host, pero un proyecto host admite varios adjuntos de proyectos de servicio. Consulta los límites específicos de VPC compartida en la página de cuotas de VPC para obtener más información.

Console

  1. Inicia sesión en Google Cloud Platform Console como administrador de VPC compartida.
  2. Ve a la página VPC compartida de Google Cloud Platform Console.
    Ir a la página VPC compartida
  3. Haz clic en la pestaña Proyectos adjuntos.
  4. En la pestaña Proyectos adjuntos, haz clic en el botón Adjuntar proyectos.
  5. Marca las casillas de los proyectos de servicio para adjuntar en la sección de Nombres de proyectos. Ten en cuenta que adjuntar proyectos de servicio no define ningún administrador de proyecto de servicio; eso se hace en el siguiente paso.
  6. En la sección de Permisos de red de VPC, selecciona Administradores de proyecto de servicio. A los usuarios seleccionados se les otorgará la función de IAM de compute.networkUser para las subredes compartidas. Solo los administradores de proyectos de servicio pueden crear recursos en las subredes del proyecto host de VPC compartida.
  7. En la sección de Modo de uso compartido de la red de VPC, selecciona una de las siguientes opciones:
    1. Haz clic en Compartir todas las subredes (permisos a nivel de proyecto) para compartir todas las subredes actuales y futuras en las redes de VPC del proyecto host con proyectos de servicio y administradores de proyectos de servicio.
    2. Haz clic en Subredes individuales (permisos a nivel de subred) si necesitas compartir subredes de forma selectiva de las redes de VPC del proyecto host con proyectos de servicio y administradores de proyectos de servicio. Luego, selecciona Subredes para compartir.
  8. Haz clic en Guardar.

gcloud

  1. Si aún no lo has hecho, autentícate en gcloud como administrador de VPC compartida. Reemplaza [SHARED_VPC_ADMIN] por el nombre del administrador de VPC compartida:

    gcloud auth login [SHARED_VPC_ADMIN]
    
  2. Adjunta un proyecto de servicio a un proyecto host habilitado previamente. Reemplaza [SERVICE_PROJECT_ID] por el ID del proyecto de servicio y [HOST_PROJECT_ID] por el ID del proyecto host.

    Si tienes una función de administrador de VPC compartida a nivel de la organización

    gcloud compute shared-vpc associated-projects add [SERVICE_PROJECT_ID] \
        --host-project [HOST_PROJECT_ID]
    

    Si tienes una función de administrador de VPC compartida en el nivel de la carpeta

    gcloud beta compute shared-vpc associated-projects add [SERVICE_PROJECT_ID] \
        --host-project [HOST_PROJECT_ID]
    
  3. Confirma que el proyecto de servicio se adjuntó.

    gcloud compute shared-vpc get-host-project [SERVICE_PROJECT_ID]
    
  4. De forma opcional, puedes enumerar los proyectos de servicio que se adjuntan al proyecto host:

    gcloud compute shared-vpc list-associated-resources [HOST_PROJECT_ID]
    
  5. Si solo necesitabas adjuntar un proyecto de servicio, puedes salir de gcloud para proteger las credenciales de la cuenta de administrador de VPC compartida. De lo contrario, omite este paso y define a los administradores de proyecto de servicio para todas las subredes o solo algunas subredes.

    gcloud auth revoke [SHARED_VPC_ADMIN]
    

Administradores de proyectos de servicio para todas las subredes

Un administrador de VPC compartida puede definir un miembro de IAM de un proyecto de servicio como un administrador de proyecto de servicio con acceso a todas las subredes del proyecto host. A los administradores de proyectos de servicio de este tipo se les otorga la función de compute.networkUser para todo el proyecto host. Esto significa que tienen acceso a todas las subredes definidas actualmente y futuras en el proyecto host.

Console

Para definir un miembro de IAM de un proyecto de servicio como administrador de proyecto de servicio con acceso a todas las subredes en un proyecto host mediante GCP Console, consulta la sección adjuntar proyectos de servicio.

gcloud

Estos pasos cubren la definición de un miembro de IAM de un proyecto de servicio como administrador de proyecto de servicio con acceso a todas las subredes en un proyecto host. Antes de que puedas seguir estos pasos, debes habilitar un proyecto host y adjuntar el proyecto de servicio al proyecto host.

  1. Si aún no lo has hecho, autentícate en gcloud como administrador de VPC compartida. Reemplaza [SHARED_VPC_ADMIN] por el nombre del administrador de VPC compartida:

    gcloud auth login [SHARED_VPC_ADMIN]
    
  2. Crea una vinculación de política para hacer que un miembro de IAM del proyecto de servicio sea un administrador del proyecto de servicio. Reemplaza [HOST_PROJECT_ID] por el ID del proyecto para el proyecto host y [SERVICE_PROJECT_ADMIN] por la dirección de correo electrónico del usuario administrador del proyecto de servicio.

    gcloud projects add-iam-policy-binding [HOST_PROJECT_ID] \
    --member "user:[SERVICE_PROJECT_ADMIN]" \
    --role "roles/compute.networkUser"
    

    Puedes especificar diferentes tipos de miembros si cambias el formato del argumento --member:

    • Usa group: para especificar un grupo de Google (por dirección de correo electrónico) como miembro.
    • Usa domain: para especificar un dominio de Google como miembro.
    • Usa serviceAccount: para especificar una cuenta de servicio. Consulta las cuentas de servicio como administradores de proyectos de servicio para obtener más información sobre este caso práctico.
  3. Repite el paso anterior para cada administrador de proyecto de servicio adicional que necesitas definir.

  4. Si terminaste de definir a los administradores de proyecto de servicio, puedes salir de gcloud para proteger tus credenciales de cuenta de administrador de VPC compartida.

    gcloud auth revoke [SHARED_VPC_ADMIN]
    

Administradores de proyectos de servicio para algunas subredes

Un administrador de VPC compartida puede definir un miembro de IAM de un proyecto de servicio como un administrador de proyecto de servicio con acceso a algunas subredes del proyecto host. Esta opción proporciona un medio más detallado para definir administradores de proyecto de servicio, ya que les otorga la función de compute.networkUser solo para algunas subredes en el proyecto host.

Console

Para definir un miembro de IAM de un proyecto de servicio como administrador de proyecto de servicio con acceso a algunas subredes en un proyecto host mediante GCP Console, consulta la sección adjuntar proyectos de servicio.

gcloud

Estos pasos cubren la definición de miembros de IAM de un proyecto de servicio como administrador de proyecto de servicio con acceso a algunas subredes en un proyecto host. Antes de que puedas definirlos, debes habilitar un proyecto host y adjuntar el proyecto de servicio al proyecto host.

  1. Si aún no lo has hecho, autentícate en gcloud como administrador de VPC compartida. Reemplaza [SHARED_VPC_ADMIN] por el nombre del administrador de VPC compartida:

    gcloud auth login [SHARED_VPC_ADMIN]
    
  2. Elige la subred en el proyecto host al que los administradores de proyectos de servicio deben tener acceso. Obtén su política de IAM actual en formato JSON. Reemplaza [SUBNET_NAME] por el nombre de la subred en el proyecto host y [HOST_PROJECT_ID] por el ID del proyecto del proyecto host.

    gcloud beta compute networks subnets get-iam-policy [SUBNET_NAME] \
        --region [SUBNET_REGION] \
        --project [HOST_PROJECT_ID] \
        --format json
    
  3. Copia la salida JSON del paso anterior y guárdala en un archivo. Para mayor claridad de instrucción, estos pasos lo guardan en un archivo llamado subnet-policy.json.

  4. Modifica el archivo subnet-policy.json y agrega los miembros de IAM que se convertirán en administradores de proyecto de servicio con acceso a la subred. Reemplaza cada [SERVICE_PROJECT_ADMIN] por la dirección de correo electrónico de un usuario de IAM del proyecto de servicio.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Ten en cuenta que puedes especificar diferentes tipos de miembros de IAM (distintos de los usuarios) en la política.

    • Cambia user: con group: para especificar un grupo de Google (por dirección de correo electrónico) como miembro.
    • Cambia user: con domain: para especificar un dominio de Google como miembro.
    • Usa serviceAccount: para especificar una cuenta de servicio. Consulta las cuentas de servicio como administradores de proyectos de servicio para obtener más información sobre este caso práctico.
  5. Actualiza el vínculo de política para la subred con el contenido del archivo subnet-policy.json.

    gcloud beta compute networks subnets set-iam-policy [SUBNET_NAME] subnet-policy.json \
        --region [SUBNET_REGION] \
        --project [HOST_PROJECT_ID]
    
  6. Si terminaste de definir a los administradores de proyecto de servicio, puedes salir de gcloud para proteger tus credenciales de cuenta de administrador de VPC compartida.

    gcloud auth revoke [SHARED_VPC_ADMIN]
    

Cuentas de servicio como administradores de proyectos de servicio

Un administrador de VPC compartida también puede definir cuentas de servicio de un proyecto de servicio como un administrador de proyecto de servicio. En esta sección se ilustra cómo definir dos tipos diferentes de cuentas de servicio como administradores de proyectos de servicio:

Al igual que otros miembros de IAM, la función del administrador de servicio del proyecto (compute.networkUser) se puede otorgar para todas las subredes o solo algunas subredes del proyecto host. Sin embargo, para simplificar la instrucción, en esta sección solo se ilustra cómo definir cada uno de los dos tipos de cuentas de servicio como administradores de proyectos de servicio de todas las subredes del proyecto host.

Cuentas de servicio administradas por el usuario como administradores de proyectos de servicio

En estas instrucciones, se describe cómo definir una cuenta de servicio administrada por el usuario como administrador de proyecto de servicio para todas las subredes del proyecto host de VPC compartida.

Console

  1. Inicia sesión en Google Cloud Platform Console como administrador de VPC compartida.
  2. Ve a la página Configuración en Google Cloud Platform Console.
    Ir a la página Configuración
  3. Cambia el proyecto al proyecto de servicio que contiene la cuenta de servicio que debe definirse como administrador del proyecto de servicio.
  4. Copia el ID del proyecto del proyecto de servicio. Para mayor claridad de instrucción, este procedimiento se refiere al ID del proyecto de servicio como [SERVICE_PROJECT_ID].
  5. Cambia el proyecto al proyecto host de VPC compartida.
  6. Ve a la página IAM en Google Cloud Platform Console.
    Ir a la página IAM
  7. Haz clic en Agregar.
  8. Agrega [SERVICE_ACCOUNT_NAME]@[SERVICE_PROJECT_ID].iam.gserviceaccount.com al campo Miembros y reemplaza [SERVICE_ACCOUNT_NAME] por el nombre de la cuenta de servicio.
  9. Selecciona Compute Engine > Usuario de la red de Compute en el menú Funciones.
  10. Haz clic en Agregar.

gcloud

  1. Si aún no lo has hecho, autentícate en gcloud como administrador de VPC compartida. Reemplaza [SHARED_VPC_ADMIN] por el nombre del administrador de VPC compartida:

    gcloud auth login [SHARED_VPC_ADMIN]
    
  2. Determina el ID del proyecto para el proyecto de servicio. Para mayor claridad de instrucción, este procedimiento se refiere al ID del proyecto de servicio como [SERVICE_PROJECT_ID]. Reemplaza [SERVICE_PROJECT_ID] por el ID del proyecto para el proyecto de servicio.

    gcloud projects describe [SERVICE_PROJECT_ID] --format='get(projectId)'
    
    • Si no tienes el ID del proyecto para el proyecto de servicio, puedes enumerar todos los proyectos en tu organización. En esta lista se muestra el ID del proyecto de cada uno.

      gcloud projects list
      
  3. Crea una vinculación de política para hacer que la cuenta de servicio sea un administrador del proyecto de servicio. Reemplaza [HOST_PROJECT_ID] por el ID del proyecto del proyecto host, [SERVICE_ACCOUNT_NAME] por el nombre de la cuenta de servicio y [SERVICE_PROJECT_ID] por el ID del proyecto de servicio.

    gcloud projects add-iam-policy-binding [HOST_PROJECT_ID] \
        --member "serviceAccount:[SERVICE_ACCOUNT_NAME]@[SERVICE_PROJECT_ID].iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

Cuenta de servicio de las API de Google como administrador de proyecto de servicio

En estas instrucciones, se describe cómo definir una cuenta de servicio de las API de Google como administrador de proyecto de servicio para todas las subredes del proyecto host de VPC compartida. Hacer que la cuenta de servicio de las API de Google sea el administrador del proyecto de servicio es un requisito para los grupos de instancias administrados que se usan con VPC compartida porque las tareas como la creación de instancias las realiza este tipo de cuenta de servicio. Consulta Grupos de instancias administrados y luego IAM para obtener más información sobre esta relación.

Console

  1. Inicia sesión en Google Cloud Platform Console como administrador de VPC compartida.
  2. Ve a la página Configuración en Google Cloud Platform Console.
    Ir a la página Configuración
  3. Cambia el proyecto al proyecto de servicio que contiene la cuenta de servicio que debe definirse como administrador del proyecto de servicio.
  4. Copia el Número de proyecto del proyecto de servicio. Para mayor claridad de instrucción, este procedimiento se refiere al número del proyecto de servicio como [SERVICE_PROJECT_NUMBER].
  5. Cambia el proyecto al proyecto host de VPC compartida.
  6. Ve a la página IAM en Google Cloud Platform Console.
    Ir a la página IAM
  7. Haz clic en Agregar.
  8. Agrega [SERVICE_PROJECT_NUMBER]@cloudservices.gserviceaccount.com al campo Miembros.
  9. Selecciona Compute Engine > Usuario de la red de Compute en el menú Funciones.
  10. Haz clic en Agregar.

gcloud

  1. Si aún no lo has hecho, autentícate en gcloud como administrador de VPC compartida. Reemplaza [SHARED_VPC_ADMIN] por el nombre del administrador de VPC compartida:

    gcloud auth login [SHARED_VPC_ADMIN]
    
  2. Determina el número del proyecto para el proyecto de servicio. Para mayor claridad de instrucción, este procedimiento se refiere al número del proyecto de servicio como [SERVICE_PROJECT_NUMBER]. Reemplaza [SERVICE_PROJECT_ID] por el ID del proyecto para el proyecto de servicio.

    gcloud projects describe [SERVICE_PROJECT_ID] --format='get(projectNumber)'
    
    • Si no tienes el ID del proyecto para el proyecto de servicio, puedes enumerar todos los proyectos en tu organización. En esta lista, se muestra el número del proyecto de cada uno.

      gcloud projects list
      
  3. Crea una vinculación de política para hacer que la cuenta de servicio sea un administrador del proyecto de servicio. Reemplaza [HOST_PROJECT_ID] por el ID del proyecto para el proyecto host y [SERVICE_PROJECT_NUMBER] por el número de proyecto de servicio.

    gcloud projects add-iam-policy-binding [HOST_PROJECT_ID] \
        --member "serviceAccount:[SERVICE_PROJECT_NUMBER]@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

Cómo usar la VPC compartida

Una vez que el administrador de VPC compartida completa las tareas de habilitar un proyecto host, adjuntarle los proyectos de servicio necesarios y definir a los administradores de proyecto de servicio para todas o algunas de las subredes del proyecto host, los administradores de proyecto de servicio pueden crear instancias, plantillas y balanceadores de cargas internos en los proyectos de servicio con las subredes del proyecto host.

Todas las tareas en esta sección deben ser realizadas por un administrador de proyecto de servicio.

Es importante tener en cuenta que un administrador de VPC compartida solo otorga a los administradores de proyectos de servicio la función compute.networkUser (a todo el proyecto host o solo a algunas de sus subredes). Los administradores de proyecto de servicio también deben tener otras funciones necesarias para administrar sus respectivos proyectos de servicio. Por ejemplo, un administrador de proyecto de servicio también puede ser un propietario de proyecto o debe tener al menos la función compute.instanceAdmin para el proyecto.

Lista de subredes disponibles

Los administradores de proyecto de servicio pueden enumerar las subredes a las que se les ha dado con estos pasos.

Console

Ve a la página VPC compartida de Google Cloud Platform Console.
Ir a la página VPC compartida

gcloud

  1. Si aún no lo hiciste, autentícate en gcloud como administrador de proyecto de servicio. Reemplaza [SERVICE_PROJECT_ADMIN] por el nombre del administrador de proyecto de servicio:

    gcloud auth login [SERVICE_PROJECT_ADMIN]
    
  2. Ejecuta el siguiente comando, reemplazando [HOST_PROJECT_ID] por el ID del proyecto del proyecto host de VPC compartida:

    gcloud compute networks subnets list-usable --project [HOST_PROJECT_ID]
    

    En el siguiente ejemplo se enumeran las subredes disponibles en el proyecto host de project-1:

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Para obtener más información, consulta el comando list-usable en la documentación de SDK.

Cómo reservar una IP interna estática

Los administradores de proyecto de servicio pueden reservar una dirección IP interna en una subred de una red de VPC compartida. Ten en cuenta que el objeto de configuración de la dirección IP se crea en el proyecto de servicio, mientras que su valor proviene del rango de direcciones disponibles en la subred compartida elegida.

gcloud

  1. Si aún no lo hiciste, autentícate en gcloud como administrador de proyecto de servicio. Reemplaza [SERVICE_PROJECT_ADMIN] por el nombre del administrador de proyecto de servicio:

    gcloud auth login [SERVICE_PROJECT_ADMIN]
    
  2. Ejecuta el siguiente comando, reemplazando [HOST_PROJECT_ID] por el ID del proyecto del proyecto host de VPC compartida:

    gcloud compute addresses create [IP_ADDR_NAME] \
    --project [SERVICE_PROJECT_ID] \
    --subnet projects/[HOST_PROJECT_ID]/regions/[REGION]/subnetworks/[SUBNET]
    

Donde reemplazarías los siguientes elementos:

  • [IP_ADDR_NAME] por un nombre para el objeto de dirección IP
  • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
  • [HOST_PROJECT_ID] por el ID del proyecto host de VPC compartida
  • [REGION] por la región que contiene la subred compartida
  • [SUBNET] por el nombre de la subred compartida

Los detalles adicionales para crear direcciones IP se publican en la documentación de SDK.

Cómo crear una instancia

Ten en cuenta lo siguiente cuando creas una instancia con VPC compartida:

  • El proceso estándar de creación de una instancia incluye la selección de una zona, una red y una subred. Tanto la subred como la zona seleccionadas deben estar en la misma región. Cuando un administrador de proyecto de servicio crea una instancia con una subred de una red de VPC compartida, la zona seleccionada para esa instancia debe ser una que esté en la misma región que la subred seleccionada.

    • Cuando creas una instancia con una dirección IP interna estática reservada, la subred (y la región) se seleccionaron cuando se creó la dirección IP estática. En esta sección se muestra un ejemplo de gcloud para crear una instancia con una dirección IP interna estática.
  • Los administradores de proyecto de servicio solo pueden crear instancias utilizando subredes para las cuales se les ha otorgado permiso. Consulta la Cómo enumerar subredes disponibles para determinar qué subredes están disponibles.

  • Cuando GCP recibe una solicitud para crear una instancia en una subred de una red de VPC compartida, verifica si el miembro de IAM que realiza la solicitud tiene permiso para usar esa subred compartida. Si la comprobación falla, la instancia no se creará y GCP mostrará un error de permisos. Ponte en contacto con el administrador de VPC compartida para obtener ayuda.

Console

  1. Ve a la página Instancias de VM en Google Cloud Platform Console.
    Ir a la página Instancias de VM
  2. Haz clic en Crear.
  3. Especifica un Nombre para la instancia.
  4. Haz clic en Administración, seguridad, discos, herramientas de redes, un solo inquilino.
  5. Haz clic en Herramientas de redes.
  6. Haz clic en el botón de selección Redes compartidas conmigo.
  7. Selecciona la subred compartida donde deseas crear la instancia.
  8. Especifica cualquier otro parámetro necesario para la instancia.
  9. Haz clic en Crear.

gcloud

  • Para crear una instancia con una dirección IP interna efímera en una subred compartida de una red de VPC compartida:

    gcloud compute instances create [INSTANCE_NAME] \
    --project [SERVICE_PROJECT_ID] \
    --subnet projects/[HOST_PROJECT_ID]/regions/[REGION]/subnetworks/[SUBNET] \
    --zone [ZONE]
    

    Donde reemplazarías los siguientes elementos:

    • [INSTANCE_NAME] por el nombre de la instancia
    • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
    • [HOST_PROJECT_ID] por el ID del proyecto host de VPC compartida
    • [REGION] por la región que contiene la subred compartida
    • [SUBNET] por el nombre de la subred compartida
    • [ZONE] por una zona en la región especificada
  • Para crear una instancia con una dirección IP interna estática reservada en una red de VPC compartida, haz lo siguiente:

    1. Reserva una dirección IP interna estática en el proyecto host.
    2. Crea la instancia:

      gcloud compute instances create [INSTANCE_NAME] \
      --project [SERVICE_PROJECT_ID] \
      --private-network-ip [IP_ADDR_NAME] \
      --zone [ZONE]
      --subnet projects/[HOST_PROJECT_ID]/regions/[REGION]/subnetworks/[SUBNET] \
      

      Donde reemplazarías los siguientes elementos:

      • [INSTANCE_NAME] por el nombre de la instancia
      • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
      • [HOST_PROJECT_ID] por el ID del proyecto host de VPC compartida
      • [IP_ADDR_NAME] por el nombre de la dirección IP estática
      • [ZONE] por una zona en la misma región que [IP_ADDR_NAME]
      • [SUBNET] por el nombre de la subred compartida que está asociada con la dirección IP interna estática.

Cómo crear una plantilla de instancias

Ten en cuenta lo siguiente cuando creas una plantilla de instancias con VPC compartida:

  • El proceso de creación de una plantilla de instancias incluye la selección de una red y una subred.

    • Las plantillas creadas para usar en una red de VPC compartida en modo personalizado deben especificar tanto la red como una subred.

    • Las plantillas creadas para usar en una red de VPC compartida en modo automático pueden diferir de manera opcional en la selección de una subred. En estos casos, una subred se seleccionará automáticamente en la misma región que cualquier grupo de instancias administrado que use la plantilla. (Las redes en modo automático tienen una subred en cada región por definición).

  • Cuando un miembro de IAM crea una plantilla de instancias, GCP no realiza una verificación de permisos para ver si el miembro puede usar la subred especificada. Esta verificación de permisos siempre se posterga cuando se solicita un grupo de instancias administrado que utiliza la plantilla.

Console

  1. Ve a la página Plantillas de instancias en Google Cloud Platform Console.
    Ir a la página Plantillas de instancias
  2. Haz clic en Crear plantilla de instancias.
  3. Especifica un Nombre para la plantilla de instancias.
  4. Haz clic en Administración, seguridad, discos, herramientas de redes, un solo inquilino.
  5. Haz clic en Herramientas de redes.
  6. Haz clic en el botón de selección Redes compartidas conmigo.
  7. Selecciona la Subred compartida donde deseas crear la plantilla de instancias.
  8. Especifica cualquier otro parámetro necesario para la plantilla de instancias.
  9. Haz clic en Crear.

gcloud

  • Para crear una plantilla de instancias y usarla en cualquier subred creada automáticamente de una red de VPC compartida en modo automático:

    gcloud compute instance-templates create [TEMPLATE_NAME] \
    --project [SERVICE_PROJECT_ID] \
    --network projects/[HOST_PROJECT_ID]/global/networks/[NETWORK]
    

    Donde reemplazarías los siguientes elementos:

    • [TEMPLATE_NAME] por el nombre de la plantilla
    • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
    • [HOST_PROJECT_ID] por el ID del proyecto host de VPC compartida
    • [NETWORK] por el nombre de la red de VPC compartida
  • Para crear una plantilla de instancias de una subred creada manualmente en una red de VPC compartida (en modo automático o personalizado):

    gcloud compute instance-templates create [TEMPLATE_NAME] \
    --project [SERVICE_PROJECT_ID] \
    --region [REGION] \
    --subnet projects/[HOST_PROJECT_ID]/regions/[REGION]/subnetworks/[SUBNET]
    

    Donde reemplazarías los siguientes elementos:

    • [TEMPLATE_NAME] por el nombre de la plantilla
    • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
    • [HOST_PROJECT_ID] por el ID del proyecto host de VPC compartida
    • [REGION] por la región que contiene la subred compartida
    • [SUBNET] por el nombre de la subred compartida

Cómo crear un grupo de instancias administrado

Ten en cuenta lo siguiente cuando creas un grupo de instancias administrado con VPC compartida:

  • Los grupos de instancias administrados que se usan con VPC compartida requieren que la cuenta de servicio de las API de Google se convierta en un administrador del proyecto de servicio, ya que las tareas como la creación automática de instancias a través del ajuste de escala automático se realizan en esa cuenta de servicio.

  • El proceso estándar de creación de un grupo de instancias administrado incluye la selección de una zona o región, según el tipo de grupo y una plantilla de instancias. (Los detalles de la red y la subred están vinculados a la plantilla de instancias). Las plantillas de instancias aptas están restringidas a aquellas que hacen referencia a subredes en la misma región utilizadas por el grupo de instancias administrado.

  • Los administradores de proyecto de servicio solo pueden crear grupos de instancias administrados cuyas instancias miembro usen subredes para las cuales se les ha otorgado permiso. Debido a que los detalles de la red y la subred están vinculados a la plantilla de instancias, los administradores de proyecto de servicio solo pueden usar plantillas que hagan referencia a las subredes que están autorizados a usar.

  • Cuando GCP recibe una solicitud para crear un grupo de instancias administrado, verifica si el miembro de IAM que realiza la solicitud tiene permiso para usar la subred (en la misma región que el grupo) especificada en la plantilla de instancias. Si la comprobación falla, el grupo de instancias administrado no se creará y GCP mostrará un error de permisos. Enumera las subredes disponibles para determinar cuáles se pueden usar y ponte en contacto con el administrador de VPC compartida si necesitas ayuda.

Console

  1. Ve a la página Grupos de instancias en Google Cloud Platform Console.
    Ir a la página Grupos de instancias
  2. Haz clic en Crear grupo de instancias.
  3. Especifica un Nombre para el grupo de instancias.
  4. En la sección Ubicación, elige crear un grupo zonal o regional (multizona).
  5. Selecciona una Zona o Región según corresponda.
  6. Si creas un grupo zonal, en Tipo de grupo, asegúrate de seleccionar Grupo de instancias administrado. Los grupos de instancias regionales deben ser grupos de instancias administrados.
  7. En Plantilla de instancias, selecciona una plantilla de instancias definida para la red de VPC compartida. Las plantillas disponibles deben definirse para una subred en la misma región que la elegida del grupo de instancias.
  8. Especifica las opciones para el Ajuste de escala automático; de lo contrario, especifica el número de instancias.
  9. Especifica las opciones para la Reparación automática.
  10. Haz clic en Crear.

gcloud

Los administradores de proyecto de servicio pueden crear un grupo de instancias administrado con gcloud si tienen permiso para usar la subred compartida especificada en la plantilla de instancias:

gcloud compute instance-groups managed create [INSTANCE_GROUP_NAME] \
    --project [SERVICE_PROJECT_ID] \
    --template [INSTANCE_TEMPLATE_NAME] \
    --size [NUMBER_OF_INSTANCES] \
    --zone [ZONE]

Donde reemplazarías los siguientes elementos:

  • [INSTANCE_GROUP_NAME] por el nombre del grupo de instancias
  • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
  • [INSTANCE_TEMPLATE_NAME] por el nombre de la plantilla de instancias
  • [NUMBER_OF_INSTANCES] por el número de instancias para crear en el grupo
  • [ZONE] por una zona en la misma región que la subred (definida en la plantilla de instancias)

Para crear un grupo de instancias regional, reemplaza el parámetro --zone por el parámetro --region y especifica una región (que debe ser la misma que la región utilizada por la subred definida en la plantilla de instancias).

Para obtener detalles sobre cómo configurar el ajuste de escala automático y la reparación automática, consulta la documentación de SDK.

Cómo crear un balanceador de cargas interno

En el siguiente procedimiento, se muestra cómo crear un balanceador de cargas interno cuya regla de reenvío utiliza una subred en el proyecto host de VPC compartida. Ten en cuenta que la regla de reenvío en sí misma todavía está definida en el proyecto de servicio y que la referencia de subred solo es utilizada por las reglas de reenvío internas.

Antes de que crees un balanceador de cargas interno en un proyecto host, es posible que desees revisar la siguiente información:

Console

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas

  2. Sigue el procedimiento general para crear un balanceador de cargas interno y realiza el siguiente ajuste:

    • En la sección Configurar servicios de frontend, selecciona la subred de VPC compartida que necesitas de la sección Redes compartidas por otros proyectos del menú Subred.
  3. Termina de crear el balanceador de cargas interno.

gcloud

Los administradores de proyecto de servicio pueden crear un balanceador de cargas interno en una subred del proyecto host al que tienen acceso. Sigue el procedimiento general para crear un balanceador de cargas interno, pero especifica una subred de la VPC compartida con el argumento --subnet cuando creas la regla de reenvío.

gcloud compute forwarding-rules create [FR_NAME] \
    --project [SERVICE_PROJECT_ID] \
    --load-balancing-scheme internal \
    --region [REGION] \
    --ip-protocol [IP_PROTOCOL] \
    --ports PORT,[PORT,…] \
    --backend-service [BACKEND_SERVICE_NAME] \
    --subnet projects/[HOST_PROJECT_ID]/regions/[REGION]/subnetworks/[SUBNET] \
    --address [INTERNAL_IP]

Donde reemplazarías los siguientes elementos:

  • [FR_NAME] por el nombre de la regla de reenvío
  • [SERVICE_PROJECT_ID] por el ID del proyecto de servicio
  • [REGION] por la región que contiene la subred compartida
  • [IP_PROTOCOL] por el protocolo IP para usar; el valor predeterminado es TCP
  • [PORT] por el puerto numérico o la lista de puertos para el balanceador de cargas
  • [BACKEND_SERVICE_NAME] por el nombre del servicio de backend (creado como parte del procedimiento general para crear un balanceador de cargas interno)
  • [HOST_PROJECT_ID] por el ID del proyecto host de VPC compartida
  • [SUBNET] por el nombre de la subred compartida
  • [INTERNAL_IP] por una dirección IP interna en la subred compartida (si no se especifica, se seleccionará una disponible)

Consulta esta página para ver más opciones de uso con gcloud compute forwarding-rules create.

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión: