Gestione delle unità di tenancy

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina mostra come gestire le unità di tenancy per il tuo servizio. Un'unità di tenancy è una risorsa leggera che rappresenta la relazione tra un consumer Service e un Servizio gestito. Ogni consumer di servizi può avere una sola unità di tenancy attiva per un servizio gestito. Questa è una funzionalità fornita da Service Infrastructure.

Il nome della risorsa di un'unità di tenancy ha il seguente formato:

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

L'ID di un'unità di tenancy viene generato automaticamente quando la crei. Puoi anche fornire un ID quando chiami il metodo services.tenancyUnits.create. Se fornisci un ID, deve essere univoco a livello globale nell'ambito del tuo servizio gestito per tutti i consumer di servizi.

Gli esempi in questa pagina utilizzano le chiamate dirette all'API REST di Service Consumer Management. Per l'utilizzo in produzione, consigliamo di utilizzare le librerie client fornite da Google per migliorare usabilità e affidabilità.

Prima di iniziare

  • L'API Service Consumer Management è destinata all'utilizzo con i servizi gestiti e ai progetti di producer di servizi. Dovrai avere già un progetto Google Cloud e un servizio gestito (ad esempio un servizio creato con Cloud Endpoints) in quel progetto.
  • Per utilizzare le unità di tenancy, l'API Service Consumer Management deve creare progetti tenant nell'organizzazione del producer di servizi. Assicurati di disporre di una quota sufficiente per il numero di progetti tenant necessari per i consumatori del tuo servizio.
  • Ogni progetto tenant creato in un'unità di tenancy deve essere anche in una cartella specificata da te come parte della configurazione del progetto tenant. Per questo motivo, è necessaria un'organizzazione per utilizzare le unità di tenancy.

Autenticazione

Le API Cloud come l'API Service Consumer Management accettano solo chiamate autenticate. Se non ne hai già uno, scopri come creare un account di servizio e ottenere una chiave JSON per l'autenticazione nelle API Cloud in Guida introduttiva all'autenticazione. Se utilizzi una libreria client di Google, puoi configurare l'ambiente in modo che utilizzi le credenziali dell'account di servizio per impostazione predefinita. Per le chiamate dirette all'API REST devi fornire un token di accesso in ogni intestazione, come nell'esempio seguente:

curl --header "Authorization: Bearer ${ACCESS_TOKEN}" --header 'Content-Type: application/json' --data '{"tag":"tag1", "project_config":{"folder":"folders/9876543210", "tenant_project_policy": {"policy_bindings":{"role":"roles/owner", "members":"user:user1@company.com"}}, "billing_config":{"billing_account":"billingAccounts/123456-472F22-28F9AA"}}}' -X POST "https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/consumers/12345678901/tenancyUnits/tu-hello:addProject"

Per creare ed eliminare unità di tenancy devi seguire le istruzioni di configurazione iniziali in Introduzione all'API Service Consumer Management.

Creazione di un'unità di tenancy

Le unità di tenancy e i progetti tenant al loro interno vengono creati normalmente quando vengono create risorse nel tuo servizio che dipendono dal provisioning aggiuntivo delle risorse di Google Cloud per il consumatore.

Crei un'unità di tenancy come segue:

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

Qui, 'projects/12345678901' rappresenta il consumer di servizi e service.example.com è il nome del tuo servizio.

La struttura di dati restituita contiene il nome dell'unità di tenancy, con un ID univoco generato che può essere utilizzato per accedervi. In questo esempio, il nome generato è services/your-service.example.com/projects/12345678901/tenancyUnits/absdef.

Aggiunta di un progetto tenant

Ora puoi aggiungere un progetto per l'utente. Per aggiungere un nuovo progetto tenant all'unità di tenancy creata nel passaggio precedente, chiama il metodo seguente:

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

con i seguenti dati:

{"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"}}}

Il valore tag è un identificatore che fornisci per il progetto all'interno dell'unità di tenancy: può essere qualsiasi cosa ti piace (qui tag1, ad esempio un'area geografica, una rete consumer o solo un ID stringa).

Questa chiamata restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per verificare se la creazione del progetto è andata a buon fine.

Se devi applicare una configurazione diversa, ad esempio per aggiungere nuovi servizi gestiti, puoi chiamare il metodo services.tenancyUnits.applyProjectConfig.

Ricerca delle unità di tenancy

Trova un'unità di tenancy per un consumer di servizi

Per trovare un'unità di tenancy per un particolare consumer di servizi, utilizza il metodo services.tenancyUnits.ListTenancyUnits, specificando il numero di progetto consumer di servizio:

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

Cerca unità di tenancy

Puoi utilizzare il metodo services.tenancyUnits.SearchTenancyUnits per cercare le unità di tenancy definite per il tuo servizio. Ad esempio, la seguente query restituisce tutte le unità che contengono un progetto con il tag 'tag1':

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

Pulizia di unità di tenancy

Quando un consumer di servizi smette di utilizzare il tuo servizio, devi rimuovere la relativa unità di tenancy per liberare risorse e assicurarti che i dati utente vengano eliminati.

Rimuovi progetti tenant

Devi eliminare tutti i progetti tenant prima di eliminare l'unità di tenason corrispondente. Devi utilizzare il metodo services.tenancyUnits.removeProject per eliminare un progetto tenant e tutte le risorse al suo interno:

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

Elimina un'unità di tenancy

Dopo aver eliminato tutti i progetti tenant in un'unità di tenancy o tutti sono in stato DELETED, puoi eliminare l'unità:

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