Mengelola Unit Tenancy

Halaman ini menunjukkan cara mengelola unit tenancy untuk layanan Anda. Unit tenancy adalah resource ringan yang mewakili hubungan antara konsumen layanan dan layanan terkelola. Setiap konsumen layanan hanya dapat memiliki satu unit sewa aktif untuk layanan terkelola. Ini adalah fitur yang disediakan oleh Service Infrastructure.

Nama resource unit sewa memiliki format berikut:

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

ID unit sewa dibuat secara otomatis saat Anda membuatnya. Anda juga dapat memberikan ID saat memanggil metode services.tenancyUnits.create. Jika Anda memberikan ID, ID tersebut harus unik secara global dalam cakupan layanan terkelola di semua konsumen layanan.

Contoh di halaman ini menggunakan panggilan langsung ke REST API Service Consumer Management. Untuk penggunaan produksi, sebaiknya gunakan library klien yang disediakan Google untuk kegunaan dan keandalan yang lebih baik.

Sebelum memulai

  • Service Consumer Management API ditujukan untuk digunakan dengan project layanan terkelola dan produser layanan. Anda harus sudah memiliki project Google Cloud dan layanan terkelola (seperti layanan yang dibuat menggunakan Cloud Endpoints) di project tersebut.
  • Untuk menggunakan unit sewa, Service Consumer Management API perlu membuat project tenant di organisasi produsen layanan Anda. Pastikan Anda memiliki kuota yang memadai untuk jumlah project tenant yang diperlukan bagi konsumen layanan Anda.
  • Setiap project tenant yang dibuat di unit sewa juga harus berada dalam folder yang Anda tentukan sebagai bagian dari konfigurasi project tenant. Oleh karena itu, Anda memerlukan Organisasi untuk menggunakan unit tenancy.

Autentikasi

Cloud API seperti Service Consumer Management API hanya menerima panggilan yang diautentikasi. Jika Anda belum memilikinya, cari tahu cara membuat akun layanan dan mendapatkan kunci JSON untuk mengautentikasi ke Cloud API di Memulai Autentikasi. Jika menggunakan library klien Google, Anda dapat menyiapkan lingkungan agar menggunakan kredensial akun layanan secara default. Untuk panggilan langsung ke REST API, Anda harus memberikan token akses di setiap header, seperti dalam contoh berikut:

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"

Untuk membuat dan menghapus unit sewa, Anda harus mengikuti petunjuk penyiapan awal di artikel Memulai Service Consumer Management API.

Membuat unit tenancy

Unit tenancy dan project tenant di dalamnya biasanya dibuat saat resource di layanan Anda sendiri dibuat yang bergantung pada resource Google Cloud tambahan yang akan disediakan untuk konsumen.

Anda membuat unit tenancy sebagai berikut:

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

Di sini, 'projects/12345678901' mewakili konsumen layanan, dan service.example.com adalah nama layanan Anda.

Struktur data yang ditampilkan memiliki nama unit sewa, dengan ID unik yang dihasilkan yang dapat digunakan untuk mengaksesnya. Dalam contoh ini, nama yang dihasilkan adalah services/your-service.example.com/projects/12345678901/tenancyUnits/absdef.

Menambahkan project tenant

Sekarang Anda dapat menambahkan project untuk pengguna. Untuk menambahkan project tenant baru ke unit tenancy yang dibuat di langkah sebelumnya, panggil metode berikut:

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

dengan data berikut:

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

Nilai tag adalah ID yang Anda berikan untuk project dalam unit tenancy: ini dapat berupa apa pun yang Anda sukai (di sini adalah tag1), seperti region, jaringan konsumen, atau hanya ID string.

Panggilan ini menampilkan operasi yang berjalan lama yang dapat Anda buat kueri untuk mengetahui apakah pembuatan project berhasil.

Jika perlu menerapkan konfigurasi yang berbeda, misalnya untuk menambahkan layanan terkelola baru, Anda dapat memanggil metode services.tenancyUnits.applyProjectConfig.

Menelusuri unit tenancy

Menemukan unit tenancy untuk konsumen layanan

Untuk menemukan unit sewa untuk konsumen layanan tertentu, gunakan metode services.tenancyUnits.ListTenancyUnits, yang menentukan nomor project konsumen layanan mereka:

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

Menelusuri unit tenancy

Anda dapat menggunakan metode services.tenancyUnits.SearchTenancyUnits untuk menelusuri unit tenancy yang ditentukan untuk layanan Anda. Misalnya, kueri berikut akan menampilkan semua unit yang berisi project dengan tag 'tag1':

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

Membersihkan unit tenancy

Saat konsumen layanan berhenti menggunakan layanan Anda, Anda harus menghapus unit tenancy-nya untuk mengosongkan resource dan memastikan data pengguna dihapus.

Menghapus project tenant

Anda harus menghapus semua project tenant sebelum menghapus unit sewa yang sesuai. Anda harus menggunakan metode services.tenancyUnits.removeProject untuk menghapus project tenant dan semua resource di dalamnya:

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

Menghapus unit tenancy

Setelah menghapus semua project tenant di unit tenancy, atau semuanya berada dalam status DELETED, Anda dapat menghapus unit tenancy:

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