Como desprovisionar a VPC compartilhada

Nesta página, descrevemos como desprovisionar uma configuração de VPC compartilhada existente, desconectando todos os projetos de serviço de um projeto host de VPC compartilhada. O desprovisionamento é um processo unidirecional. Primeiro, familiarize-se com as páginas Visão geral da VPC compartilhada e Como provisionar a VPC compartilhada.

Tarefas administrativas do projeto de serviço

Em cada projeto de serviço anexado ao projeto host da VPC compartilhada, um Administrador do projeto de serviço precisa remover todas as dependências do projeto host. As dependências podem incluir instâncias, grupos de instâncias, modelos de instâncias e regras de encaminhamento do balanceador de carga.

Determinar recursos afetados

Para identificar recursos que dependem do projeto host da VPC compartilhada, um Administrador do projeto de serviço pode listar as sub-redes compartilhadas. Quando o projeto de serviço é desanexado do projeto host, essas sub-redes não ficam mais disponíveis para ele. Assim, quaisquer recursos que dependam delas serão afetados.

Excluir recursos

Depois que um Administrador do projeto de serviço identificar os recursos que serão afetados pelo processo de desprovisionamento, esses recursos precisarão ser excluídos:

Tarefas de administrador de VPC compartilhada

Todas as tarefas nesta seção precisam ser executadas por um Administrador de VPC compartilhada.

Desanexar projetos de serviço

Repita essas etapas para cada projeto de serviço que você precisa desanexar do projeto host da VPC compartilhada.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador da VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Desanexe o projeto de serviço do projeto host. Substitua SERVICE_PROJECT_ID pelo ID do projeto de serviço e HOST_PROJECT_ID pelo ID do projeto host.

    Se você tiver o papel Administrador de VPC compartilhada no nível da organização

    gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
        --host-project HOST_PROJECT_ID
    

    Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta

    gcloud beta compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
        --host-project HOST_PROJECT_ID
    
  3. Confirme se o projeto de serviço foi desanexado usando um destes comandos:

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  4. Se bastava desanexar os projetos de serviço, saia do gcloud para proteger as credenciais da conta de administrador da VPC compartilhada. Caso contrário, pule esta etapa e continue a desativação do projeto host.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Desanexe o projeto de serviço.

    • Se você tiver o papel de Administrador de VPC compartilhada no nível da organização, use a API v1:

      POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT_ID"
      }
      }
      
    • Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta, use a API Beta:

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

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o ID do projeto host.
    • SERVICE_PROJECT_ID é o ID do projeto de serviço que será desanexado.

    Para mais informações, consulte o método projects.disableXpnResource.

  2. Confirme se o projeto de serviço foi desanexado.

    • Verifique se o projeto de serviço não está anexado a nenhum projeto host.

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

      Substitua SERVICE_PROJECT_ID pelo ID do projeto de serviço.

      Para mais informações, consulte o método projects.getXpnHost.

    • Liste os projetos de serviço anexados ao projeto host da VPC compartilhada para confirmar se o projeto não está mais listado.

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

      Substitua HOST_PROJECT_ID pelo ID do projeto host.

      Para mais informações, consulte o método projects.getXpnResources.

Desativar projeto host

Só é possível desativar a VPC compartilhada do projeto host após todos os projetos de serviço terem sido desanexados. Quando desativada, a garantia que impede sua exclusão é removida automaticamente.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador da VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Desative a VPC compartilhada do projeto host. Substitua HOST_PROJECT_ID pelo ID do projeto host.

    Se você tiver o papel Administrador de VPC compartilhada no nível da organização

    gcloud compute shared-vpc disable HOST_PROJECT_ID
    

    Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta

    gcloud beta compute shared-vpc disable HOST_PROJECT_ID
    
  3. Confirme se o projeto não está mais listado como um projeto host para sua organização. Substitua ORG_ID pelo ID da organização (determinado por gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Se bastava desativar um projeto host, saia do gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada. Caso contrário, pule esta etapa e continue a exclusão de projetos.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Desative a VPC compartilhada do projeto.

    • Se você tiver o papel de Administrador de VPC compartilhada no nível da organização, use a API v1:

      POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnHost
      
    • Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta, use a API Beta:

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

    Substitua HOST_PROJECT_ID pelo ID do projeto host.

    Para mais informações, consulte o método projects.disableXpnHost.

  2. Liste seus projetos host para confirmar que o projeto não está listado.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto host.

    Para mais informações, consulte o método projects.listXpnHosts.

Como excluir projetos

Nesta seção, discutiremos a exclusão de projetos que não são mais usados. Por exemplo, você pode ter projetos de serviço que precisam ser excluídos depois de terem sido desanexados de um projeto host, ou você pode não precisar mais do projeto host depois de ter sido desativado.

Excluir projeto host

É possível mantê-lo como um projeto normal ou encerrá-lo. Encerrar um projeto o exclui.

Qualquer membro do IAM definido na sua organização poderá excluir o projeto host se tiver o papel resourcemanager.projectDeleter ou se for o proprietário do projeto host. Administradores de VPCs compartilhadas podem ter permissão para excluir projetos host se tiverem o papel correto ou forem proprietários dos projetos.

Excluir projetos de serviço

É possível optar por encerrar cada projeto de serviço se não precisar mais deles. Antes de fazer isso, verifique se o projeto de serviço foi desanexado do projeto host.

Qualquer membro do IAM definido na sua organização poderá excluir um projeto de serviço se tiver o papel resourcemanager.projectDeleter ou se for o proprietário do projeto de serviço. Administradores de projetos de serviço podem ter permissão para excluir projetos de serviço se tiverem o papel correto ou forem proprietários dos projetos.

Forçar a exclusão de um projeto host

Enquanto a VPC compartilhada está ativa para um projeto host, uma garantia é colocada no projeto para evitar que ele seja excluído acidentalmente. Como essa garantia pode ser removida por um proprietário do projeto, as diretrizes para o aprovisionamento de uma VPC compartilhada incluem etapas para definir uma política organizacional que limita quais membros do IAM podem remover uma garantia do projeto.

Normalmente, um projeto host precisa ser excluído após a conclusão das seguintes tarefas, nesta ordem:

Quando a VPC compartilhada tiver sido desativada, a garantia que protege o projeto host será automaticamente removida.

Nesta seção, detalhamos como forçar o encerramento de um projeto host. Somente considere essa opção nas circunstâncias abaixo:

  • Não é possível seguir as etapas normais de desanexar projetos de serviço e desativar a VPC compartilhada.
  • Há outras garantias protegendo o projeto host além daquela que é adicionada automaticamente.

Se você forçar o encerramento de um projeto host e tiver recursos em projetos de serviço que usam a rede VPC compartilhada, os seguintes eventos ocorrerão:

  • Todas as redes VPC compartilhadas, as respectivas sub-redes, rotas, regras de firewall e todos os recursos de rede do projeto host são excluídos.
  • Os recursos, como a execução de instâncias nos projetos de serviço anexados ao projeto host, são interrompidos.
  • Os balanceadores de carga TCP/UDP internos são desativados se as regras de encaminhamento dependerem da rede VPC compartilhada.

gcloud

  1. Faça a autenticação no gcloud como membro do IAM que pode remover uma garantia do projeto. Se você tiver uma política organizacional que limita quais membros podem remover garantias, faça a autenticação como membro do IAM com o papel resourcemanager.lienModifier da sua organização. Se essa política não estiver em vigor, o proprietário do projeto host poderá remover a garantia.

    Substitua ACCOUNT pelo nome do membro apropriado do IAM:

    gcloud auth login ACCOUNT
    
  2. Liste as garantias associadas ao projeto host. Substitua HOST_PROJECT_ID pelo código do projeto host.

    gcloud alpha resource-manager liens list \
    --project HOST_PROJECT_ID
    
  3. Remova cada garantia pelo nome, uma de cada vez, até que não haja mais nenhuma. Substitua LIEN_NAME pelo nome da garantia a ser removida.

    gcloud alpha resource-manager liens delete LIEN_NAME \
    --project HOST_PROJECT_ID
    
  4. Confirme se todas as garantias foram removidas.

    gcloud alpha resource-manager liens list \
    --project HOST_PROJECT_ID
    
  5. Depois de remover a garantia, saia do gcloud para proteger as credenciais do membro do IAM que tem permissão para remover garantias.

    gcloud auth revoke ACCOUNT
    
  6. O projeto host agora pode ser encerrado.

API

  1. Liste as garantias associadas ao projeto host.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto host.

    Para mais informações, consulte o método liens.list.

  2. Remova cada garantia pelo nome até que não haja mais nenhuma.

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

    Substitua LIEN_NAME pelo nome da garantia a ser excluída.

    Para mais informações, consulte o método liens.delete.

  3. Liste novamente as garantias para confirmar se elas foram removidas.

A seguir