Como gerenciar unidades de locação

Nesta página, você aprenderá a gerenciar unidades de locação para o seu serviço. Uma unidade de locação é um recurso leve que representa a relação entre um consumidor de serviço e um serviço gerenciado. Cada consumidor de serviço pode ter apenas uma unidade de locação ativa para um serviço gerenciado. Esse é um recurso fornecido pela infraestrutura de serviços.

O nome do recurso de uma unidade de locação tem o seguinte formato:

services/{your service name}/projects/{consumer project number}/tenancyUnits/{id}

O ID de uma unidade de locação é gerado automaticamente quando você a cria. Também é possível fornecer um ID ao chamar o método services.tenancyUnits.create. Se você fornecer um ID, ele precisará ser globalmente exclusivo no escopo do serviço gerenciado entre todos os consumidores de serviço.

Os exemplos nesta página usam chamadas diretas para a API REST da Gestão de consumidores de serviço. Para uso em produção, recomendamos o uso de bibliotecas de cliente fornecidas pelo Google para melhorar a usabilidade e a confiabilidade.

Antes de começar

  • A API Service Consumer Management destina-se ao uso com serviços gerenciados e projetos de produtor de serviço. Você precisa já ter um Google Cloud projeto e um serviço gerenciado (como um serviço criado usando o Cloud Endpoints) nesse projeto.
  • Para usar unidades de locação, a API Service Consumer Management precisa criar projetos de locatário na sua organização de produtor de serviços. Verifique se você tem cota suficiente para o número necessário de projetos de locatário para os consumidores do seu serviço.
  • Para criar e excluir unidades de locação, siga as instruções de configuração iniciais em Primeiros passos com a API Service Consumer Management.
  • Cada projeto de locatário criado em uma unidade de locação precisa estar também em uma pasta especificada como parte da configuração do projeto de locatário. Por isso, você precisa de uma organização para usar unidades de locação.

Autenticação

Selecione as guias para definir como você quer acessar a API:

gcloud

Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

gcloud init

Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

Bibliotecas de cliente

Para usar bibliotecas de cliente em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.

  1. Instale a Google Cloud CLI.

  2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  3. Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:

    gcloud auth application-default login

    Não é necessário fazer isso se você estiver usando o Cloud Shell.

    Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.

Saiba mais em Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .

REST

Para usar a API REST em um ambiente de desenvolvimento local, use as credenciais que você vai informar à CLI gcloud.

    Instale a Google Cloud CLI.

    Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Para informações sobre como configurar a autenticação em um ambiente de produção, consulte Configurar o Application Default Credentials para código em execução em Google Cloud na documentação de autenticação. Google Cloud

Como criar uma unidade de locação

As unidades de locação e os projetos de locatário normalmente são criados quando são criados recursos no seu próprio serviço que dependem de outros recursos do Google Cloud a serem provisionados para os consumidores.

Crie uma unidade de locação usando o services.tenancyUnits.create método:

POST https://serviceconsumermanagement.googleapis.com/v1/services/service.example.com/projects/12345678901/tenancyUnits

Aqui, "projects/12345678901" representa o consumidor de serviço, e service.example.com é o nome do serviço.

A estrutura de dados retornada tem o nome da unidade de locação, com um código exclusivo gerado que pode ser usado para acessá-la. Neste exemplo, o nome gerado é services/your-service.example.com/projects/12345678901/tenancyUnits/absdef.

Como adicionar um projeto de locatário

Agora você pode adicionar um projeto para o usuário. Para adicionar um novo projeto de locatário à unidade de locação criada na etapa anterior, use o services.tenancyUnits.addProject método:

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef:addProject

com os seguintes dados:

{"tag":"tag1", "project_config":{"folder":"folders/9876543210", "tenant_project_policy":{"policy_bindings":{"role":"roles/owner", "members":"user:bob@example.com"}}, "billing_config":{"billing_account":"billingAccounts/123456-472F22-28F9AA"}}}

O valor tag é um identificador que você fornece para o projeto na unidade de locação. Pode ser o que você quiser (aqui é tag1), como uma região, uma rede de consumidores ou apenas um ID de string.

Essa chamada retorna uma operação de longa duração que pode ser consultada para verificar se a criação do projeto foi bem-sucedida.

Se você precisar aplicar uma configuração diferente, por exemplo, para adicionar novos serviços gerenciados, poderá chamar o método services.tenancyUnits.applyProjectConfig.

Como procurar suas unidades de locação

Encontrar uma unidade de locação para um consumidor de serviço

Para localizar uma unidade de locação para um consumidor de serviço específico, use o services.tenancyUnits.list método, especificando o número do projeto do consumidor de serviço:

GET https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits

Pesquisar unidades de locação

Você pode usar o services.search método para procurar unidades de locação definidas para o serviço. Por exemplo, a seguinte consulta retornará todas as unidades que têm um projeto com a tag "tag1".

GET https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com:search?query=tenant_resources.tag=tag1

Como limpar unidades de locação

Quando um consumidor de serviço para de usar seu serviço, você precisa remover a unidade de locação para liberar recursos e garantir que os dados do usuário sejam excluídos.

Remover projetos de locatário

Você precisa excluir todos os projetos de locatário antes de excluir a unidade de locação correspondente. Use o services.tenancyUnits.removeProject método para excluir um projeto de locatário e todos os recursos nele:

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef:removeProject

Excluir uma unidade de locação

Depois de excluir todos os projetos de locatário em uma unidade de locação ou quando todos eles estiverem no estado DELETED, exclua a unidade de locação usando o método services.tenancyUnits.delete:

DELETE https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef