Como desprovisionar a VPC compartilhada

Nesta página, você verá como desprovisionar uma configuração de VPC compartilhada atual, 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 incluem instâncias, grupos de instâncias, modelos de instâncias e regras de encaminhamento para balanceamento de carga TCP/UDP interno.

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, será preciso exclui-los:

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 esses passos para cada projeto de serviço que precisa ser desanexado do projeto host da VPC compartilhada.

gcloud

  1. Se ainda não tiver feito isso, autentique-se para a gcloud como administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador de 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 de 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 da gcloud para proteger as credenciais da conta de administrador de VPC compartilhada. Caso contrário, pule este passo 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. Ao ser desativada, a garantia que impede a exclusão é removida automaticamente.

gcloud

  1. Se ainda não tiver feito isso, autentique-se para a gcloud como administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador de 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 de 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 da gcloud para proteger as credenciais da conta de administrador de VPC compartilhada. Caso contrário, pule este passo 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, você aprenderá sobre a exclusão de projetos que não são mais usados. Por exemplo, é possível ter projetos de serviço que precisem ser excluídos depois de terem sido desanexados de um projeto host, ou não precisar mais do projeto host depois de ele 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 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 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 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. Os administradores de projetos de serviço podem 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 provisionamento de uma VPC compartilhada incluem passos para definir uma política organizacional que limite 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 seguintes circunstâncias:

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

Se você forçar o encerramento de um projeto host e tiver recursos em projetos de serviço que usem 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 serão excluídos.
  • Os recursos, como a execução de instâncias nos projetos de serviço anexados ao projeto host, serão interrompidos.
  • Os balanceadores de carga TCP/UDP internos serão desativados se as regras de encaminhamento dependerem da rede VPC compartilhada.

gcloud

  1. Faça a autenticação para a gcloud como membro do IAM que pode remover uma garantia do projeto. Se você tiver uma política organizacional que limite quais membros podem remover garantias, faça a autenticação como membro do IAM com o papel resourcemanager.lienModifier da 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 ID 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 que 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 da 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 que 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