Desaprovisiona la VPC compartida

En esta página, se explica cómo desaprovisionar una configuración de VPC compartida y desconectar todos los proyectos de servicio de un proyecto host con VPC compartida. El desaprovisionamiento es un proceso irreversible. Antes de comenzar, asegúrate de consultar las páginas Descripción general de VPC compartida y Cómo aprovisionar la VPC compartida.

Tareas del Administrador de proyecto de servicio

En cada proyecto de servicio vinculado al proyecto host con VPC compartida, un Administrador de proyecto de servicio debe quitar todas las dependencias del proyecto host. Las dependencias incluyen instancias, grupos de instancias, plantillas de instancias y reglas de reenvío para el balanceo de cargas TCP/UDP interno.

Determinar los recursos afectados

A fin de identificar los recursos que dependen del proyecto host con VPC compartida, el Administrador de proyecto de servicio puede realizar una lista de sus subredes compartidas. Cuando el proyecto de servicios se desconecte del proyecto host, estas subredes ya no estarán disponibles; por lo tanto, todos los recursos que dependan de ellas se verán afectados.

Borra los recursos

Una vez que el Administrador de proyecto de servicio ha identificado los recursos que estarán afectados a causa del proceso de desaprovisionamiento, estos deben borrarse:

Tareas del Administrador de VPC compartida

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

Desconectar el proyecto de servicio

Repite estos pasos para cada proyecto de servicio que tengas que desconectar del proyecto host con VPC compartida.

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. Desconecta el proyecto de servicio del proyecto host. 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 remove SERVICE_PROJECT_ID
            --host-project HOST_PROJECT_ID
        

    Si tienes una función de Administrador de VPC compartida a nivel de la carpeta

        gcloud beta compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
            --host-project HOST_PROJECT_ID
        
  3. Confirma que el proyecto de servicio se haya desconectado mediante uno de los comandos siguientes:

        gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
        
        gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
        
  4. Si solo necesitabas desconectar proyectos de servicio, sal de gcloud para proteger las credenciales de la cuenta de Administrador de VPC compartida. De lo contrario, omite este paso y procede con la inhabilitación del proyecto host.

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Desconecta el proyecto de servicio.

    • Si tienes la función de Administrador de VPC compartida en el nivel de la organización, usa la API de v1:

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnResource
          {
          "xpnResource": {
            "id": "SERVICE_PROJECT_ID"
          }
          }
          
    • Si tienes la función de Administrador de VPC compartida en el nivel de la carpeta, usa la API Beta:

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

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

    • HOST_PROJECT_ID es el ID del proyecto host.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio que se debe desconectar.

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

  2. Confirma que el proyecto de servicio se desconectó.

    • Comprueba que el proyecto de servicio no esté conectado a ningún proyecto host.

          GET https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/getXpnHost
          

      Reemplaza SERVICE_PROJECT_ID por el ID del proyecto de servicio.

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

    • Enumera los proyectos de servicio conectados al proyecto host de VPC compartida para confirmar que el proyecto ya no aparece en la lista.

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

      Reemplaza HOST_PROJECT_ID por el ID del proyecto host.

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

Inhabilitar el proyecto host

Inhabilitar la VPC compartida para el proyecto host solo es posible después de desconectar todos los proyectos de servicio. Cuando se inhabilita, se quita de forma automática la retención que impedía que se borrara con facilidad.

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. Inhabilita la VPC compartida para el 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 disable HOST_PROJECT_ID
        

    Si tienes una función de Administrador de VPC compartida a nivel de la carpeta

        gcloud beta compute shared-vpc disable HOST_PROJECT_ID
        
  3. Confirma que el proyecto ya no esté señalado como proyecto host de 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 inhabilitar 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 la eliminación de proyectos.

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Inhabilita la VPC compartida para el proyecto.

    • Si tienes la función de Administrador de VPC compartida en el nivel de la organización, usa la API de v1:

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

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

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host.

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

  2. Enumera tus proyectos host para confirmar que el proyecto no aparece en la lista.

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

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host.

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

Cómo borrar proyectos

En esta sección, se explica cómo borrar proyectos que ya no se usen; por ejemplo, tal vez tengas proyectos de servicio que deban borrarse después de haberlos desconectado de un proyecto host, o tal vez ya no necesites el proyecto host después de inhabilitarlo.

Borra el proyecto host

Puedes elegir entre conservarlo como un proyecto normal o cerrarlo. Esta acción borra el proyecto.

Cualquier miembro de IAM definido en tu organización puede borrar el proyecto host si tiene la función resourcemanager.projectDeleter para tu organización o si es el propietario del proyecto host. Los Administradores de VPC compartida tal vez puedan borrar proyectos host si tienen la función correspondiente o la propiedad del proyecto.

Borra los proyectos de servicio

Tal vez optes por cerrar todos los proyectos de servicio si ya no los necesitas. Antes de hacerlo, verifica que se haya desconectado el proyecto de servicio del proyecto host.

Cualquier miembro de IAM definido en tu organización puede borrar un proyecto de servicio si tiene la función resourcemanager.projectDeleter para tu organización o si el miembro es el propietario del proyecto de servicio. Los Administradores de proyectos de servicio tal vez puedan borrar proyectos de servicios si tienen la función correspondiente o la propiedad del proyecto.

Borra un proyecto host a la fuerza

Mientras la VPC compartida está activa para un proyecto host, se establece una retención en el proyecto que impide que se borre por accidente. Debido a que los propietarios del proyecto pueden quitar esta retención, los lineamientos sobre cómo aprovisionar una VPC compartida incluyen los pasos para definir una política organizativa que limite qué miembros de IAM pueden quitar una retención de proyecto.

En general, el proyecto host debe borrarse después de haber completado las siguientes tareas, en este orden:

Cuando la VPC compartida se inhabilita, la retención que protege el proyecto host desaparece de forma automática.

En esta sección, se explica cómo cerrar un proyecto host por la fuerza. Solo deberías considerar esta opción en las siguientes circunstancias:

  • No puedes seguir los pasos normales a fin de desconectar proyectos de servicio y para inhabilitar la VPC compartida.
  • Hay retenciones adicionales que protegen el servicio host además de la que se agrega de forma automática.

Si cierras un proyecto host por la fuerza y tienes recursos en proyectos de servicio que usan la red de VPC compartida, ocurrirá lo siguiente:

  • Se borrarán todas las redes de VPC compartidas, sus subredes, rutas, reglas de firewall y todos los recursos de red del proyecto host.
  • Se detendrán los recursos, como las instancias en ejecución en los proyectos de servicio conectados al proyecto host.
  • Los balanceadores de cargas TCP/UDP internos se inhabilitarán si sus reglas de reenvío dependen de la red de VPC compartida.

gcloud

  1. Autentícate en gcloud como miembro de IAM con permiso para quitar una retención de proyecto. Si tienes una política organizativa que limita qué miembros pueden quitar retenciones, debes autenticarte como miembro de IAM con la función resourcemanager.lienModifier para tu organización. Si no estableciste esta política, el propietario del proyecto host puede quitar la retención.

    Reemplaza ACCOUNT por el nombre del miembro de IAM correspondiente:

        gcloud auth login ACCOUNT
        
  2. Enumera las retenciones asociadas con el proyecto host. Reemplaza HOST_PROJECT_ID por el ID del proyecto host.

        gcloud alpha resource-manager liens list \
        --project HOST_PROJECT_ID
        
  3. Quita cada retención por nombre, una a la vez, hasta que no quede ninguna. Reemplaza LIEN_NAME por el nombre de la retención que deseas quitar.

        gcloud alpha resource-manager liens delete LIEN_NAME \
        --project HOST_PROJECT_ID
        
  4. Confirma que se hayan quitado todas las retenciones.

        gcloud alpha resource-manager liens list \
        --project HOST_PROJECT_ID
        
  5. Después de quitar la retención, puedes salir de gcloud a fin de proteger las credenciales del miembro de IAM que tiene permiso para realizar esta acción.

        gcloud auth revoke ACCOUNT
        
  6. El proyecto host ahora puede cerrarse.

API

  1. Enumera las retenciones que están asociadas al proyecto host.

        GET https://cloudresourcemanager.googleapis.com/v1/liens?parent=projects:HOST_PROJECT_ID
        

    Reemplaza HOST_PROJECT_ID por el ID del proyecto host.

    Para obtener más información, consulta el método liens.list.

  2. Quita cada retención por nombre hasta que no quede ninguna.

        DELETE https://cloudresourcemanager.googleapis.com/v1/liens/LIEN_NAME
        

    Reemplaza LIEN_NAME por el nombre de la retención que deseas borrar.

    Para obtener más información, consulta el método liens.delete.

  3. Vuelve a enumerar las retenciones para confirmar que se quitaron.

Próximos pasos