Menggunakan Gambar dari Project Lain

Halaman ini menjelaskan cara mengonfigurasi project Anda, sehingga Deployment Manager dapat membuat instance virtual machine Compute Engine menggunakan image sistem operasi milik project lain.

Misalnya, Anda memiliki project bernama Awesome Project tempat Deployment Manager membuat dan mengelola instance VM. Sekarang, anggaplah Anda perlu menggunakan image pribadi yang berasal dari project lain yang bernama Database Images. Untuk memberikan akses ke image ini, pemilik Database Images harus memberikan peran IAM roles/compute.imageUser ke akun layanan Google API dari Awesome Project, dan Awesome Project selanjutnya dapat menggunakan image dari project Database Images.

Anda juga dapat menggunakan proses ini untuk memberikan akses grup instance terkelola ke image dari project lain.

Sebelum memulai

Batasan

Berikut adalah batasan untuk menggunakan fitur ini:

  • Anda harus memberikan peran compute.imageUser di level project ke akun layanan Google API project Anda.
  • Memberikan peran compute.imageUser akan memberikan izin ke semua gambar dalam project tertentu. Anda tidak dapat membagikan gambar tertentu.
  • Anda harus memberikan peran ini kepada pengguna tertentu, dan bukan kepada allAuthenticatedUsers atau allUsers.

Memberikan akses ke gambar

Untuk memberikan akses ke image milik project lain, pemilik project yang memiliki image tersebut harus memberikan akses ke akun layanan Google API untuk project yang ingin menggunakan image tersebut.

  1. Buka halaman IAM di Konsol Google Cloud project yang memerlukan akses ke image pribadi yang dimiliki oleh project lain.

    Buka halaman IAM

  2. Jika diminta, pilih project Anda dari daftar. Ingatlah untuk memilih project yang memerlukan akses ke gambar yang disimpan di project lain.
  3. Cari akun layanan Google API, yang memiliki alamat email dalam format berikut:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Catat alamat email di atas. Selanjutnya, pemilik project tempat menampilkan gambar yang diinginkan dapat memberikan peran roles/compute.imageUser kepada akun layanan Google API.

    Konsol

    1. Saat berada di Google Cloud Console, buka halaman IAM project yang berisi gambar yang ingin Anda akses.

      Buka halaman IAM

    2. Pilih project dari daftar project.
    3. Klik tombol Add untuk menambahkan anggota baru.
    4. Di kotak Anggota, masukkan alamat email akun layanan.
    5. Luaskan dropdown Roles lalu pilih Compute Engine > Compute Image User.
    6. Klik Tambahkan untuk menambahkan akun.

    gcloud

    Dengan Google Cloud CLI, tambahkan binding ke kebijakan IAM untuk project:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUser

    dengan:

    • [PROJECT_ID] adalah ID project yang berisi gambar yang ingin Anda bagikan.
    • [SERVICE_ACCOUNT_EMAIL] adalah email akun layanan.

    Contoh:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/compute.imageUser

    API

    Di API, buat permintaan POST ke URL berikut, dengan [PROJECT_ID] sebagai ID project yang berisi gambar yang ingin Anda bagikan.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    Isi permintaan harus berisi daftar binding yang ingin Anda terapkan ke project ini. Peran roles/compute.imageUser harus menjadi bagian dari binding. Contoh:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/compute.imageUser",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gservbiceaccount.com"
               ]
           }
           ]
       }
    

    }

Menggunakan gambar dari project lain dalam konfigurasi Anda

Setelah project mendapat akses ke image dari project lain, pengguna project dapat menggunakan gambar tersebut dengan menentukan project ID dari project tempat gambar tersebut berada dalam template atau konfigurasi Anda:

image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]

Misalnya, jika project ID gambar adalah database-images, Anda dapat memberikan URI gambar berikut dalam konfigurasi:

resources:
- name: a-special-vm
  type: compute.v1.instances
  properties:
    machineType: zones/us-central1-a/machineTypes/f1-micro
    image: projects/database-images/global/images/example-database-image
    ...

Setelah menambahkan image, selesaikan pembuatan konfigurasi, lalu deploy.

Apa langkah selanjutnya?