Aprovisiona la 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 la 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. En particular, haz lo siguiente:

Prepara tu organización

Administradores y la IAM

Preparar la organización, configurar proyectos de host de VPC compartida y usar redes de VPC compartidas implica un mínimo de tres funciones administrativas de IAM diferentes. Para obtener más detalles sobre cada función y cada información acerca de las opciones, consulta la sección administradores y la IAM de la descripción general de la VPC compartida.

Políticas de la organización para la VPC compartida

Las restricciones de la política de la organización pueden proteger los recursos de VPC compartida a nivel del proyecto, de la carpeta o de la organización. En las siguientes secciones se describe cada política.

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 asociados a él. Cuando un proyecto está configurado para ser un proyecto host de VPC compartida, se le asigna un bloqueo especial, llamado retención. Siempre que la retención esté presente, evita que el proyecto se borre de forma accidental. La retención se quita de forma automática del proyecto host cuando ya no se configura para VPC compartida.

Un administrador de la organización o un usuario distinto con la función de orgpolicy.policyAdmin puede definir una política a nivel de la organización para limitar la eliminación de retenciones solo a los propietarios de la organización y otros usuarios con la función de resourcemanager.lienModifier. Esto evita que un propietario de proyecto que no sea propietario de una organización y que no tenga la función de resourcemanager.lienModifier pueda borrar de manera accidental un proyecto host de VPC compartida. Para obtener más información acerca de los permisos asociados con la función de resourcemanager.lienModifier, consulta Establece una retención en un proyecto en la documentación de Resource Manager.

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

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

        gcloud auth login ORG_ADMIN
        
  2. Para determinar el número de ID de la organización, consulta el resultado de este comando.

        gcloud organizations list
        
  3. Ejecuta este comando a fin de aplicar la política compute.restrictXpnProjectLienRemoval para la organización. 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
        

Restringe los archivos adjuntos del proyecto host

De forma predeterminada, un administrador de VPC compartida puede adjuntar un proyecto que no sea host a cualquier proyecto host en la misma organización. Un administrador de políticas de la organización puede limitar el conjunto de proyectos host a los que se puede adjuntar un proyecto que no sea host o proyectos que no sean host en una organización o carpeta. Para obtener más información, consulta la restricción constraints/compute.restrictSharedVpcHostProject.

Limita las subredes del proyecto host que puede usar un proyecto de servicio

De forma predeterminada, después de configurar la VPC compartida, los miembros de IAM en proyectos de servicio pueden usar cualquier subred del proyecto host si tienen los permisos de IAM adecuados. Además de administrar los permisos del usuario individuales, un administrador de políticas de la organización puede establecer una política para definir el conjunto de subredes a los que puede acceder un proyecto determinado o proyectos en una organización o carpeta. Para obtener más información, consulta la restricción constraints/compute.restrictSharedVpcSubnetworks.

Nombra administradores de VPC compartida

beta

Un administrador de organización puede otorgar a uno o más miembros de IAM las funciones de administrador de VPC compartida y administrador de IAM del proyecto. La función de administrador de IAM del proyecto otorga permiso a los administradores de VPC compartida para compartir todas las subredes existentes y futuras, no solo las subredes individuales. Este otorgamiento crea una vinculación a nivel de organización o de carpeta, no a nivel de proyecto. Por lo tanto, los miembros de IAM deben estar definidos 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. Accede a Google Cloud Console como administrador de la organización y, luego, ve a la página de IAM.
    Ir a la página de IAM
  2. En 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 Agregar otra función.

  7. En el menú desplegable Funciones, selecciona Administrador de recursos > Administrador de IAM del proyecto.

  8. Haz clic en Guardar.

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

  1. Accede a Google Cloud Console como administrador de la organización y, luego, ve a la página de IAM.
    Ir a la página de IAM
  2. En 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 Miembros nuevos.
  5. En Seleccionar una función, selecciona Compute Engine > Administrador de VPC compartida de Compute.
  6. Haz clic en Agregar otra función.
  7. En el menú desplegable Funciones, selecciona Administrador de recursos > Administrador de IAM del proyecto.
  8. Haz clic en Guardar.

gcloud

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

        gcloud auth login ORG_ADMIN
        
  2. Para determinar el número de ID de la organización, consulta el resultado de este comando.

        gcloud organizations list
        
  3. Si deseas asignar la función de administrador de VPC compartida al nivel de 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 también EMAIL_ADDRESS por la dirección de correo electrónico del usuario al que le otorgas la función de administrador de VPC compartida.

          gcloud organizations add-iam-policy-binding ORG_ID \
            --member='user:EMAIL_ADDRESS' \
            --role="roles/compute.xpnAdmin"
          
          gcloud organizations add-iam-policy-binding ORG_ID \
            --member='user:EMAIL_ADDRESS' \
            --role="roles/resourcemanager.projectIamAdmin"
          
  4. Si deseas asignar la función de administrador de VPC compartida al nivel de carpeta, haz lo siguiente:

    1. Para determinar tu ID de carpeta, consulta el resultado 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 también EMAIL_ADDRESS por la dirección de correo electrónico del usuario al que le otorgas 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"
          
          gcloud beta resource-manager folders add-iam-policy-binding FOLDER_ID \
             --member='user:EMAIL_ADDRESS' \
             --role="roles/resourcemanager.projectIamAdmin"
          
  5. Sal de la 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
        

API

  • Para asignar la función de administrador de VPC compartida al nivel de la organización, usa el siguiente procedimiento:

    1. Determina el número de ID de la organización.

          POST https://cloudresourcemanager.googleapis.com/v1/organizations
          
    2. Describe y, luego, registra los detalles de la política de la organización existente.

          POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
          

      Reemplaza ORG_ID por el ID de la organización.

    3. Asigna la función de administrador de VPC compartida.

          POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
          {
            "bindings": [
              ...copy existing bindings
              {
                "members": [
                  "user:EMAIL_ADDRESS"
                ],
                "role": "roles/compute.xpnAdmin"
              },
              {
                "members": [
                  "user:EMAIL_ADDRESS"
                ],
                "role": "roles/resourcemanager.projectIamAdmin"
              }
            ],
            "etag": "ETAG",
            "version": 1,
            ...other exisitng policy details
          }
          

      Reemplaza los marcadores de posición por valores válidos:

      • ORG_ID es el ID de la organización que contiene el usuario al que le otorgas la función de administrador de VPC compartida.
      • EMAIL_ADDRESS es la dirección de correo electrónico del usuario.
      • ETAG es un identificador único que obtuviste cuando describiste la política existente. Evita las colisiones si se envían varias solicitudes de actualizaciones al mismo tiempo.

      Para obtener más información, consulta el método organizations.setIamPolicy.

  • Para asignar la función de administrador de VPC compartida al nivel de carpeta, usa la siguiente solicitud:

    1. Determina el número de ID de la organización.

          POST https://cloudresourcemanager.googleapis.com/v1/organizations
          
    2. Busca el ID de la carpeta.

          GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
          

      Reemplaza ORG_ID por el ID de la organización.

    3. Describe y, luego, registra los detalles de la política de la carpeta existente.

          POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
          

      Reemplaza FOLDER_ID por el ID de la carpeta.

    4. Asigna la función de administrador de VPC compartida.

          POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
          {
            "bindings": [
              ...copy existing bindings
              {
                "members": [
                  "user:EMAIL_ADDRESS"
                ],
                "role": "roles/compute.xpnAdmin"
              },
              {
                "members": [
                  "user:EMAIL_ADDRESS"
                ],
                "role": "roles/resourcemanager.projectIamAdmin"
              }
            ],
            "etag": "ETAG",
            "version": 1,
            ...other existing policy details
          }
          

      Reemplaza los marcadores de posición por valores válidos:

      • FOLDER_ID es el ID de la organización que contiene el usuario al que le otorgas la función de administrador de VPC compartida.
      • EMAIL_ADDRESS es la dirección de correo electrónico del usuario.
      • ETAG es un identificador único que obtuviste cuando describiste la política existente. Evita las colisiones si se envían varias solicitudes de actualizaciones al mismo tiempo.

      Para obtener más información, consulta el método folders.setIamPolicy.

Configura una VPC compartida

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

Habilita un proyecto host

beta

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

Console

  1. Ve a la página de VPC compartida en Google Cloud Console.
    Ir a la página de VPC compartida
  2. Accede como un administrador de VPC compartida.
  3. Selecciona el proyecto que deseas habilitar como proyecto 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 del proyecto) si necesitas compartir todas las subredes actuales y futuras en las redes de VPC del proyecto host con proyectos de servicio y administradores del proyecto de servicio especificados en los próximos 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 del proyecto 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. Se otorgará a estos usuarios 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.

    Si tienes una función de administrador de VPC compartida a nivel de la organización, usa este comando:

        gcloud compute shared-vpc enable HOST_PROJECT_ID
        

    Si tienes una función de administrador de VPC compartida a nivel de carpeta, usa este comando:

        gcloud beta compute shared-vpc enable HOST_PROJECT_ID
        
  3. Confirma que el proyecto aparezca como proyecto host para tu organización. Reemplaza ORG_ID por el ID de la 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
        

API

  1. Habilita la VPC compartida para el proyecto mediante el uso de credenciales con permisos de administrador de VPC compartida.

    • Si tienes la función de administrador de VPC compartida al nivel de la organización, usa la API de v1:

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
          
    • Si tienes la función de administrador de VPC compartida al nivel de carpeta, usa la API Beta:

          POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/enableXpnHost
          

    Reemplaza HOST_PROJECT_ID por el ID del proyecto que será un proyecto host de VPC compartida.

    Para obtener más información, consulta el método projects.enableXpnHost.

  2. Confirma que el proyecto aparezca como proyecto host.

        POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
        

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host de VPC compartida.

    Para obtener más información, consulta el método projects.listXpnHosts.

Vincula proyectos de servicio

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

Un proyecto de servicio solo puede adjuntarse a un proyecto host, pero un proyecto host admite varios archivos adjuntos de proyecto de servicio. Para obtener más información, consulta los límites específicos de la VPC compartida en la página de cuotas de VPC.

Console

  1. Accede a Google Cloud Console como un administrador de VPC compartida.
  2. Ve a la página de VPC compartida en Google Cloud Console.
    Ir a la página de 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 Permisos de red de VPC, selecciona las funciones que corresponden a los miembros que obtendrán la función de compute.networkUser. A los miembros de Cloud IAM se les otorga la función de usuario de red para todo el proyecto host o ciertas subredes en el proyecto host, según el modo de uso compartido de redes de VPC. Estos miembros se conocen como administradores de proyectos de servicio en sus respectivos proyectos de servicio.
  7. En la sección Modo de uso compartido de redes de VPC, selecciona una de las siguientes opciones:
    1. Haz clic en Compartir todas las subredes (permisos a nivel del proyecto) para compartir todas las subredes actuales y futuras en las redes de VPC del proyecto host con todos los proyectos de servicio y administradores del proyecto 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 del proyecto de servicio. Luego, selecciona Subredes para compartir.
  8. Haz clic en Guardar.

gcloud

  1. Si aún no lo hiciste, 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 con anterioridad. 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, usa este comando:

        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 a nivel de carpeta, usa este comando:

        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 manera opcional, puedes enumerar los proyectos de servicio que están adjuntos 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 del proyecto de servicio para todas las subredes o solo algunas subredes.

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Adjunta un proyecto de servicio al proyecto host de VPC compartida.

    • Si tienes la función de administrador de VPC compartida al nivel de la organización, usa la API de v1:

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
          {
          "xpnResource": {
            "id": "SERVICE_PROJECT"
          }
          }
          
    • Si tienes la función de administrador de VPC compartida al nivel de carpeta, usa la API Beta:

          POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/enableXpnResource
          {
          "xpnResource": {
            "id": "SERVICE_PROJECT"
          }
          }
          

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto host de VPC compartida.
    • SERVICE_PROJECT es el ID del proyecto de servicio que se adjuntará.

    Para obtener más información, consulta el método projects.enableXpnResource.

  2. Confirma que los proyectos de servicio estén adjuntos al proyecto host.

        GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto host de VPC compartida.

    Para obtener más información, consulta el método projects.getXpnResources.

Administradores de proyectos de servicio para todas las subredes

Un administrador de VPC compartido puede asignar a un miembro de Cloud IAM de un proyecto de servicio como administrador del proyecto de servicio con acceso a todas las subredes del proyecto host. Los administradores de proyectos de servicio de este tipo tienen la función de compute.networkUser para todo el proyecto host. Esto significa que tienen acceso a todas las subredes definidas en la actualidad y futuras en el proyecto host.

Console

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

gcloud

En estos pasos, se incluye la definición de un miembro de IAM de un proyecto de servicio como un 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 hiciste, 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 convertir a un miembro de IAM del proyecto de servicio en un administrador del proyecto de servicio. Reemplaza HOST_PROJECT_ID por el ID del 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. Para obtener más información sobre este caso práctico, consulta Cuentas de servicio como administradores del proyecto de servicio.
  3. Repite el paso anterior para cada administrador del proyecto de servicio adicional que necesites definir.

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

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Describe y, luego, registra los detalles de la política del proyecto existente. Necesitarás la política existente y el valor de etag.

        POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
        

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host que contiene la red de VPC compartida.

  2. Crea una vinculación de políticas para designar a los miembros de IAM en el proyecto de servicio como administradores del proyecto de servicio.

        POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
        {
          "bindings": [
            ...copy existing bindings
            {
              "members": [
                MEMBER,
                ...additional members
              ],
              "role": "roles/compute.networkUser"
            },
          ],
          "etag": "ETAG",
          "version": 1,
          ...other existing policy details
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto host que contiene la red de VPC compartida.
    • MEMBER es una identidad con la que está asociada la función, como un usuario, un grupo, un dominio o una cuenta de servicio. Para obtener más información, consulta el campo members en la documentación de Resource Manager.
    • ETAG es un identificador único que obtuviste cuando describiste la política existente. Evita las colisiones si se envían varias solicitudes de actualizaciones al mismo tiempo.

    Para obtener más información, consulta el método projects.setIamPolicy.

Administradores de proyectos de servicio para algunas subredes

Un administrador de VPC compartida puede asignar a un miembro de IAM de un proyecto de servicio como administrador de proyecto de servicio con acceso solo a algunas de las subredes del proyecto host. Esta opción proporciona un medio más detallado a fin de definir a los administradores del proyecto de servicio mediante el otorgamiento de la función compute.networkUser solo para algunas subredes en el proyecto host.

Console

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

gcloud

Estos pasos abarcan la definición de miembros de IAM de un proyecto de servicio como administradores del proyecto de servicio con acceso solo 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 hiciste, 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. Selecciona la subred del proyecto host al que deben acceder los administradores del proyecto de servicio. Obtén la 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 host.

        gcloud beta compute networks subnets get-iam-policy SUBNET_NAME \
            --region SUBNET_REGION \
            --project HOST_PROJECT_ID \
            --format json
        
  3. Copia el resultado JSON del paso anterior y guárdalo en un archivo. Para mayor claridad, estos pasos se 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 del 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: por group: para especificar un grupo de Google (por dirección de correo electrónico) como miembro.
    • Cambia user: por domain: para especificar un dominio de Google como miembro.
    • Usa serviceAccount: para especificar una cuenta de servicio. Para obtener más información sobre este caso práctico, consulta Cuentas de servicio como administradores del proyecto de servicio.
  5. Actualiza la política vinculante 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 del proyecto de servicio, puedes salir de gcloud para proteger las credenciales de cuenta de administrador de VPC compartida.

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Describe y, luego, registra los detalles de la política de la subred existente. Necesitarás la política existente y el valor de etag.

        GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto host que contiene la red de VPC compartida.
    • SUBNET_NAME es el nombre de la subred que se compartirá.
    • SUBNET_REGION es la región en la que se encuentra la subred.
  2. Si actualizas la política de subred, otorgas a los administradores del proyecto de servicio acceso a las subredes del proyecto host.

        POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
        {
          "bindings": [
            ...copy existing bindings
            {
              "members": [
                MEMBER,
                ...additional members
              ],
              "role": "roles/compute.networkUser"
            },
          ],
          "etag": "ETAG",
          "version": 1,
          ...other existing policy details
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • ETAG es un identificador único que obtuviste cuando describiste la política existente. Evita las colisiones si se envían varias solicitudes de actualizaciones al mismo tiempo.
    • HOST_PROJECT_ID es el ID del proyecto host que contiene la red de VPC compartida.
    • MEMBER es una identidad con la que está asociada la función, como un usuario, un grupo, un dominio o una cuenta de servicio. Para obtener más información, consulta el campo members en la documentación de Resource Manager.
    • SUBNET_NAME es el nombre de la subred que se compartirá.
    • SUBNET_REGION es la región en la que se encuentra la subred.

    Para obtener más información, consulta el método subnetworks.setIamPolicy.

Cuentas de servicio como administradores de proyectos de servicio

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

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

Cuentas de servicio administradas por usuarios como administradores del proyecto de servicio

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

Console

  1. Accede a Google Cloud Console como un administrador de VPC compartida.
  2. Ve a la página Configuración de Google Cloud Console.
    Ir a la página Configuración
  3. Cambia el proyecto por el proyecto de servicio que contiene la cuenta de servicio que se debe definir como administrador del proyecto de servicio.
  4. Copia el ID  del proyecto de servicio. Para mayor claridad, en este procedimiento se hace referencia al ID del proyecto de servicio como SERVICE_PROJECT_ID.
  5. Cambia el proyecto por el proyecto host de VPC compartida.
  6. Ve a la página de IAM en Google Cloud Console:
    Ir a la página de 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 hiciste, 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. Si no conoces el ID del proyecto de servicio, puedes enumerar todos los proyectos de la organización. En esta lista, se muestra el ID del proyecto para cada uno.

        gcloud projects list
        
  3. Crea una vinculación de política para que la cuenta de servicio sea un administrador del proyecto de servicio. Reemplaza HOST_PROJECT_ID por el ID 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"
        

API

  1. Describe y, luego, registra los detalles de la política del proyecto existente. Necesitarás la política existente y el valor de etag.

        POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
        

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host que contiene la red de VPC compartida.

  2. Crea una vinculación de política para designar cuentas de servicio como administradores del proyecto de servicio.

        POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
        {
          "bindings": [
            ...copy existing bindings
            {
              "members": [
                "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
                ...include additional service accounts
              ],
              "role": "roles/compute.networkUser"
            },
          ],
          "etag": "ETAG",
          "version": 1,
          ...other existing policy details
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto host que contiene la red de VPC compartida.
    • SERVICE_ACCOUNT_NAME es el nombre de la cuenta de servicio.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio que contiene la cuenta de servicio.
    • ETAG es un identificador único que obtuviste cuando describiste la política existente. Evita las colisiones si se envían varias solicitudes de actualizaciones al mismo tiempo.

    Para obtener más información, consulta el método projects.setIamPolicy.

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

En estas instrucciones, se describe cómo definir la cuenta de servicio de las API de Google como un administrador del 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 la 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 la IAM para obtener más información sobre esta relación.

Console

  1. Accede a Google Cloud Console como un administrador de VPC compartida.
  2. Ve a la página Configuración de Google Cloud Console.
    Ir a la página Configuración
  3. Cambia el proyecto por el proyecto de servicio que contiene la cuenta de servicio que se debe definir como administrador del proyecto de servicio.
  4. Copia el Número de proyecto del proyecto de servicio. Para mayor claridad, en este procedimiento se hace referencia al número de proyecto de servicio como SERVICE_PROJECT_NUMBER.
  5. Cambia el proyecto por el proyecto host de VPC compartida.
  6. Ve a la página de IAM en Google Cloud Console:
    Ir a la página de 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 hiciste, 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, en este procedimiento se hace referencia al número de proyecto de servicio como SERVICE_PROJECT_NUMBER. Reemplaza SERVICE_PROJECT_ID por el ID del proyecto de servicio.

        gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
        
    • Si no conoces el ID del proyecto de servicio, puedes enumerar todos los proyectos de 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 que la cuenta de servicio sea un administrador del proyecto de servicio. Reemplaza HOST_PROJECT_ID por el ID del proyecto host y SERVICE_PROJECT_NUMBER por el número del proyecto de servicio.

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

API

  1. Describe y, luego, registra los detalles de la política del proyecto existente. Necesitarás la política existente y el valor de etag.

        POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
        

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host que contiene la red de VPC compartida.

  2. Enumera tu proyecto para encontrar su número de proyecto.

        GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
        

    Reemplaza SERVICE_PROJECT_ID por el ID del proyecto de servicio en el que se encuentra la cuenta de servicio.

  3. Crea una vinculación de política para designar cuentas de servicio como administradores del proyecto de servicio.

        POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
        {
          "bindings": [
            ...copy existing bindings
            {
              "members": [
                "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
              ],
              "role": "roles/compute.networkUser"
            },
          ],
          "etag": "ETAG",
          "version": 1,
          ...other existing policy details
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto host que contiene la red de VPC compartida.
    • SERVICE_PROJECT_NUMBER es el número del proyecto de servicio que contiene la cuenta de servicio.
    • ETAG es un identificador único que obtuviste cuando describiste la política existente. Evita las colisiones si se envían varias solicitudes de actualizaciones al mismo tiempo.

    Para obtener más información, consulta el método projects.setIamPolicy.

Usa la VPC compartida

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

A todas las tareas en esta sección debe realizarlas un administrador del proyecto de servicio.

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

Enumera las subredes disponibles

Los administradores del proyecto de servicio pueden enumerar las subredes a las que se les otorgó permiso si siguen estos pasos.

Console

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

gcloud

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

        gcloud auth login SERVICE_PROJECT_ADMIN
        
  2. Ejecuta el siguiente comando; para ello reemplaza HOST_PROJECT_ID por el ID 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 de host 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 del SDK.

API

Enumera las subredes disponibles en el proyecto host. Realiza la solicitud como administrador del proyecto de servicio.

    GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable
    

Reemplaza HOST_PROJECT_ID por el ID del proyecto host que contiene la red de VPC compartida.

Para obtener más información, consulta el método subnetworks.listUsable.

Reserva una IP interna estática

Los administradores del 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 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 del proyecto de servicio. Reemplaza SERVICE_PROJECT_ADMIN por el nombre del administrador del proyecto de servicio:

        gcloud auth login SERVICE_PROJECT_ADMIN
        
  2. Ejecuta el siguiente comando; para ello reemplaza HOST_PROJECT_ID por el ID 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 \
        --region=REGION
        

En el ejemplo anterior, 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 del SDK.

API

Reserva una dirección IP interna estática como administrador del proyecto de servicio.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
    {
      "name": "ADDRESS_NAME",
      "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
      "addressType": "INTERNAL"
    }
    

Reemplaza los marcadores de posición por valores válidos:

  • ADDRESS_NAME es un nombre para la dirección IP interna reservada.
  • HOST_PROJECT_ID es el ID del proyecto que contiene la red de VPC compartida.
  • REGION es la región donde se ubicará la dirección IP reservada y donde se encuentra la subred compartida.
  • SERVICE_PROJECT_ID es el ID del proyecto de servicio en el que se reserva la dirección IP.
  • SUBNET_NAME es el nombre de la subred compartida.

Para obtener más información, consulta el método addresses.insert.

Crea una instancia

Cuando crees una instancia con VPC compartida, ten en cuenta lo siguiente:

  • El proceso estándar de creación de una instancia implica 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 del 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) ya estaban seleccionadas cuando se creó la dirección IP estática. En esta sección, se proporciona un ejemplo de gcloud para crear una instancia con una dirección IP interna estática.
  • Los administradores del proyecto de servicio solo pueden crear instancias cuando usan subredes para las cuales se les otorgó permiso. Consulta enumera las subredes disponibles para determinar qué subredes están disponibles.

  • Cuando Google Cloud recibe una solicitud para crear una instancia en una subred de una red de VPC compartida, comprueba si el miembro de IAM tiene permiso para usar esa subred compartida. Si la verificación falla, la instancia no se creará y Google Cloud mostrará un error de permisos. Comunícate con el administrador de VPC compartida para obtener ayuda.

Console

  1. Ve a la página Instancias de VM en Google Cloud 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, instancia única.
  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, usa este comando:

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

    En el ejemplo anterior, 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
          

      En el ejemplo anterior, 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

API

  • Para crear una instancia con una dirección IP interna efímera como administrador del proyecto de servicio, especifica solo la subred.

        POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
        {
          "machineType": "MACHINE_TYPE",
          "name": "INSTANCE_NAME",
          "networkInterfaces": [
            {
              "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
            }
          ],
          "disks": [
            {
              "boot": true,
              "initializeParams": {
                "sourceImage": "SOURCE_IMAGE"
              }
            }
          ]
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • INSTANCE_NAME es un nombre para la instancia.
    • HOST_PROJECT_ID es el ID del proyecto que contiene la red de VPC compartida.
    • MACHINE_TYPE es un tipo de máquina para la instancia.
    • REGION es la región que contiene la subred compartida.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio.
    • SOURCE_IMAGE es una imagen de la instancia.
    • SUBNET es el nombre de la subred compartida.
    • ZONE es una zona en la región especificada.

    Para obtener más información, consulta el método instances.insert.

  • Para crear una instancia con una dirección IP interna reservada como administrador del proyecto de servicio, especifica la subred y el nombre de la dirección IP reservada.

        POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
        {
          "machineType": "MACHINE_TYPE",
          "name": "INSTANCE_NAME",
          "networkInterfaces": [
            {
              "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
              "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
            }
          ],
          "disks": [
            {
              "boot": true,
              "initializeParams": {
                "sourceImage": "SOURCE_IMAGE"
              }
            }
          ]
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • ADDRESS_NAME es el nombre de la dirección IP interna reservada.
    • INSTANCE_NAME es un nombre para la instancia.
    • HOST_PROJECT_ID es el ID del proyecto que contiene la red de VPC compartida.
    • MACHINE_TYPE es un tipo de máquina para la instancia.
    • REGION es la región que contiene la subred compartida.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio.
    • SOURCE_IMAGE es una imagen de la instancia.
    • SUBNET es el nombre de la subred compartida.
    • ZONE es una zona en la región especificada.

    Para obtener más información, consulta el método instances.insert.

Crea una plantilla de instancias

Cuando crees una plantilla de instancia con VPC compartida, ten en cuenta lo siguiente:

  • El proceso para crear una plantilla de instancia implica seleccionar 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.

    • Es posible que las plantillas creadas para su uso en una red de VPC compartida de modo automático puedan diferir la selección de una subred. En estos casos, una subred se seleccionará de forma automática en la misma región que cualquier grupo de instancias administrado que use la plantilla. Las redes de modo automático tienen una subred en cada región por definición.

  • Cuando un miembro de IAM crea una plantilla de instancia, Google Cloud 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 hasta que se solicita un grupo de instancias administrado que usa la plantilla.

Console

  1. Ve a la página Plantillas de instancias en Google Cloud 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, instancia única.
  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

  • A fin de crear una plantilla de instancias para usarla en cualquier subred creada de forma automática de una red de VPC compartida en modo automático, usa este comando:

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

    En el ejemplo anterior, 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
  • A fin de crear una plantilla de instancias para una subred creada de forma manual en una red de VPC compartida (ya sea automática o personalizada), usa este comando:

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

    En el ejemplo anterior, 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

API

  • Para crear una plantilla de instancias que use cualquier subred creada de forma automática de una red de VPC compartida en modo automático, especifica la red de VPC.

        POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
        {
        "properties": {
          "networkInterfaces": [
            {
              "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
            }
          ]
        ...
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto que contiene la red de VPC compartida.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio.
    • NETWORK es el nombre de la red de VPC compartida.

    Para obtener más información, consulta el método instanceTemplates.insert.

  • Para crear una plantilla de instancias que use una subred creada de forma manual en la red de VPC compartida (modo automático o personalizado), especifica la subred.

        POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
        {
        "properties": {
          "networkInterfaces": [
            {
              "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
            }
          ]
        ...
        }
        

    Reemplaza los marcadores de posición por valores válidos:

    • HOST_PROJECT_ID es el ID del proyecto que contiene la red de VPC compartida.
    • REGION es la región que contiene la subred compartida.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio.
    • SUBNET_NAME es el nombre de la subred compartida.

    Para obtener más información, consulta el método instanceTemplates.insert.

Crea un grupo de instancias administrado

Cuando crees un grupo de instancias administrado con VPC compartida, ten en cuenta lo siguiente:

  • Los grupos de instancias administrados que se usan con VPC compartida requieren convertir la cuenta de servicio de las API de Google en un administrador del proyecto de servicio porque esa cuenta de servicio realiza tareas como la creación automática de instancias mediante el ajuste de escala automático.

  • El proceso estándar para crear un grupo de instancias administrado implica seleccionar una zona o región, según el tipo de grupo, y una plantilla de instancia. Los detalles de red y subred están vinculados a la plantilla de instancia. Las plantillas de instancias aptas están restringidas a aquellas que hacen referencia a subredes en la misma región que usa el grupo de instancias administrado.

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

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

Para obtener más información, consulta Crea grupos de instancias administradas en la documentación de Compute Engine.

Crea un balanceador de cargas TCP/UDP interno

En el siguiente ejemplo, se ilustra lo que debes tener en cuenta cuando se crea un balanceador de cargas TCP/UDP interno en una red de VPC compartida. Los administradores del proyecto de servicio pueden crear un balanceador de cargas TCP/UDP interno que use una subred (en el proyecto host) a la que tengan acceso. La regla de reenvío interno del balanceador de cargas se define en el proyecto de servicio, pero su referencia de subred apunta a una subred en una red de VPC compartida del proyecto host.

Antes de crear un balanceador de cargas TCP/UDP interno en un entorno de VPC compartida, revisa los siguientes documentos:

Console

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

  2. Crea un balanceador de cargas TCP/UDP interno mediante la realización del siguiente ajuste: en la sección Configurar servicios de frontend, selecciona la subred de VPC compartida que necesitas de la sección Redes que comparten otros proyectos del menú Subred.

  3. Termina de crear el balanceador de cargas.

gcloud

Cuando crees la regla de reenvío interna, especifica una subred en el proyecto host con la marca --subnet:

    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
    

En el ejemplo anterior, 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 TCPUDP, que coinciden con el protocolo del servicio de backend del balanceador de cargas
  • PORT por la lista de puertos o el puerto numérico del balanceador de cargas
  • BACKEND_SERVICE_NAME por el nombre del servicio de backend (creado ya como parte del procedimiento general de creación de un balanceador de cargas TCP/UDP interno)
  • HOST_PROJECT_ID por el ID del proyecto host de VPC compartida
  • SUBNET por el nombre de la subred compartida
  • INTERNAL_IP con una dirección IP interna en la subred compartida (si no se especifica, se seleccionará una disponible)

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

API

Crea la regla de reenvío interna y especifica una subred en el proyecto host.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
    {
      "name": "FR_NAME",
      "IPAddress": "IP_ADDRESS",
      "IPProtocol": "PROTOCOL",
      "ports": [ "PORT", ... ],
      "loadBalancingScheme": "INTERNAL",
      "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
      "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
      "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
      "networkTier": "PREMIUM"
    }
    

Reemplaza los marcadores de posición por valores válidos:

  • BE_NAME es el nombre del servicio de backend (creado ya como parte del procedimiento general de creación de un balanceador de cargas TCP/UDP interno).
  • FR_NAME es un nombre para la regla de reenvío.
  • HOST_PROJECT_ID es el ID del proyecto host de VPC compartida.
  • IP_ADDRESS es una dirección IP interna en la subred compartida.
  • IP_PROTOCOL es TCPUDP, que coinciden con el protocolo del servicio de backend del balanceador de cargas.
  • PORT es la lista de puertos o el puerto numérico del balanceador de cargas.
  • REGION es la región que contiene la subred compartida.
  • SERVICE_PROJECT_ID es el ID del proyecto de servicio.
  • SUBNET es el nombre de la subred compartida

Para obtener más información, consulta el método forwardingRules.insert.

Próximos pasos