Prasyarat untuk mengimpor dan mengekspor image VM


Dokumen ini menjelaskan prasyarat untuk mengimpor dan mengekspor image di Compute Engine.

Anda dapat berbagi instance virtual machine (VM), file disk virtual, dan image mesin dari lingkungan cloud lain atau dari lingkungan lokal dengan mengimpor dan mengekspor image dari Cloud Storage. Checklist berikut merangkum persyaratan yang harus Anda penuhi sebelum mengimpor dan mengekspor image:

  1. Menyiapkan akses ke bucket Cloud Storage
  2. Memberikan peran yang diperlukan ke akun pengguna Anda
  3. Memberikan peran yang diperlukan ke akun layanan Cloud Build
  4. Memberikan peran yang diperlukan ke akun layanan Compute Engine

Sebelum memulai

  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Menyiapkan akses ke bucket Cloud Storage

Anda harus memiliki akses ke bucket Cloud Storage yang dapat digunakan oleh alat impor atau ekspor. Jika Anda tidak memiliki bucket Cloud Storage, lihat artikel Membuat bucket Cloud Storage.

Untuk menyiapkan akses ke bucket Cloud Storage, lihat artikel Memberikan peran yang diperlukan ke akun Anda dan akun layanan Compute Engine.

  • Jika Anda mengekspor image, alat ekspor akan mengupload image tersebut ke bucket Cloud Storage.

  • Jika Anda hendak mengimpor image, Anda harus mengupload image tersebut ke bucket Cloud Storage terlebih dahulu. Alat impor akan mendownload file dari bucket Cloud Storage ke Compute Engine, lalu alat ini akan membuat image di Compute Engine dari file disk tersebut.

Memberikan peran IAM yang diperlukan

Alat impor dan ekspor image VM memerlukan akun berikut untuk menjalankan operasi atas namanya:

  • Akun pengguna. Akun tempat Anda menjalankan perintah impor dan ekspor.
  • Akun layanan Cloud Build. Akun layanan Cloud Build default yang dibuat saat alat impor atau ekspor mengaktifkan Cloud Build API.
  • Akun layanan Compute Engine Akun layanan Compute Engine default atau khusus kyang diperlukan untuk alur kerja impor dan ekspor.

Memberikan peran yang diperlukan ke akun pengguna Anda

Untuk mengimpor atau mengekspor image, akun pengguna Anda memerlukan peran berikut:

  • Peran Storage Admin (roles/storage.admin)
  • Peran pelihat (roles/viewer)
  • Peran Admin IAM Project (roles/resourcemanager.projectIamAdmin)
  • Peran Editor Cloud Build (roles/cloudbuild.builds.editor)

Konsol

  1. Buka halaman IAM & Admin untuk project atau organisasi.

    Buka IAM & Admin

  2. Cari akun Anda dan klik Edit.

  3. Di daftar Select a role, pilih peran berikut:

    • Cloud Storage > Storage Admin
    • Project > Viewer
    • Resource Manager > Project IAM Admin
    • Cloud Build > Cloud Build Editor
  4. Simpan perubahan Anda.

gcloud

Pada langkah-langkah berikut, Anda akan menggunakan perintah gcloud projects add-iam-policy-binding untuk memberikan peran yang diperlukan di level project.

  1. Berikan peran roles/storage.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/storage.admin'
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Google Cloud untuk project Anda
    • MEMBER: akun yang menjalankan perintah impor dan ekspor—misalnya, user:export-user@gmail.com
  2. Berikan peran roles/viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/viewer'
    
  3. Berikan peran roles/resourcemanager.projectIamAdmin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/resourcemanager.projectIamAdmin'
    
  4. Berikan peran roles/cloudbuild.builds.editor:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/cloudbuild.builds.editor'
    

REST

  1. Baca kebijakan yang ada dengan metode getIamPolicy resource. Untuk project, gunakan metode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ganti PROJECT_ID dengan project ID, misalnya, my-project-1.

  2. Untuk memberikan peran yang diperlukan ke akun Anda, edit kebijakan dengan editor teks.

    Misalnya, untuk memberikan peran yang diperlukan ke akun user:export-user@gmail.com Anda, tambahkan binding berikut ke kebijakan:

    {
       {
         "role":"roles/storage.admin",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
       {
         "roles":"roles/viewer",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
       {
         "roles":"roles/resourcemanager.projectIamAdmin",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
       {
         "roles":"roles/cloudbuild.builds.editor",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
    }
    
  3. Untuk menulis kebijakan yang telah diperbarui, gunakan metode setIamPolicy.

    Misalnya, untuk menetapkan kebijakan di level project, gunakan metode project.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

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

Memberikan peran yang diperlukan ke akun layanan Cloud Build

Saat Anda menggunakan konsol Google Cloud atau gcloud CLI guna mengimpor atau mengekspor image untuk pertama kalinya, alat ini akan mencoba mengaktifkan Cloud Build API dan memberikan peran yang diperlukan ke akun layanan Cloud Build.

  • Peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator)
  • Peran Service Account User (roles/iam.serviceAccountUser)
  • Peran Compute Admin(roles/compute.admin)

    Agar tidak memberikan peran Compute Admin, Anda dapat membuat peran khusus dengan izin IAM Compute Engine berikut dan memberikannya ke akun layanan Cloud Build.

  • Peran Compute Network User (roles/compute.networkUser)

    Peran ini hanya diperlukan saat Anda mengimpor atau mengekspor image yang menggunakan VPC Bersama.

    Di project VPC Bersama, berikan peran Compute Network User kepada akun layanan Cloud Build yang berada di project tempat Anda mengimpor atau mengekspor image.

Namun, Anda dapat memberikan peran ini secara manual untuk memastikan bahwa izin yang diperlukan berlaku:

Konsol

  1. Setelah mengaktifkan Cloud Build API, buka halaman IAM & Admin untuk project atau organisasi.

    Buka IAM & Admin

  2. Temukan akun layanan Cloud Build, lalu klik Edit.

  3. Jika peran yang diperlukan tidak tercantum, lakukan hal berikut:

    1. Klik Add another role.
    2. Di daftar Select a role, pilih peran wajib yang ingin Anda tambahkan:

      • Service Account > Service Account Token Creator
      • Service Account > Service Account User
      • Compute Engine > Compute Admin

        Atau, Anda dapat memilih peran Custom. Lihat bagian awal Izin yang diperlukan untuk peran khusus dalam dokumen ini.

    3. Klik Save untuk menyimpan perubahan.

  4. Opsional: Jika Anda mengimpor atau mengekspor image yang menggunakan VPC Bersama, pilih peran Compute Network User di project VPC Bersama:

    1. Dari pemilih project di bagian atas konsol, pilih project host VPC Bersama.
    2. Di halaman IAM & Admin, klik Grant access.
    3. Pada kolom New principals, masukkan alamat email akun layanan Cloud Build:
       PROJECT_NUMBER@cloudbuild.gserviceaccount.com'
       
      Ganti PROJECT_NUMBER dengan nomor unik project tempat Anda mengimpor atau mengekspor image.
    4. Dalam daftar Select a role, pilih Compute Engine > peran Compute Network User.
    5. Klik Save untuk menyimpan perubahan.

gcloud

Pada langkah-langkah berikut, Anda akan menggunakan perintah gcloud projects add-iam-policy-binding untuk memberikan peran yang diperlukan di level project.

  1. Berikan peran roles/compute.admin ke akun layanan Cloud Build. Agar tidak memberikan peran roles/compute.admin, Anda dapat membuat peran khusus dengan izin yang diperlukan, lalu berikan peran tersebut ke akun layanan Cloud Build. Lihat bagian awal Izin yang diperlukan untuk peran khusus dalam dokumen ini.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \
       --role='roles/compute.admin'
    

    Ganti kode berikut:

  2. Berikan peran roles/iam.serviceAccountUser:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \
       --role='roles/iam.serviceAccountUser'
    
  3. Berikan peran roles/iam.serviceAccountTokenCreator:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \
       --role='roles/iam.serviceAccountTokenCreator'
    
  4. Opsional: Jika Anda mengekspor atau mengimpor image yang menggunakan VPC Bersama, berikan peran roles/compute.networkUser:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \
       --role='roles/compute.networkUser'
    

    Ganti kode berikut:

    • HOST_PROJECT_ID: ID project host tempat VPC Bersama berada
    • PROJECT_NUMBER: nomor unik project tempat Anda mengimpor atau mengekspor image

REST

  1. Baca kebijakan yang ada dengan metode getIamPolicy resource. Untuk project, gunakan metode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ganti PROJECT_ID dengan project ID, misalnya, my-project-1.

  2. Untuk memberikan peran yang diperlukan ke akun Anda, edit kebijakan dengan editor teks.

    Misalnya, untuk memberikan peran yang diperlukan ke serviceAccount:12345@cloudbuild.gserviceaccount.com, tambahkan binding berikut ke kebijakan:

    {
       {
         "role":"roles/compute.admin",
         "member":[
           "serviceAccount:12345@cloudbuild.gserviceaccount.com"
         ]
       }
       {
         "roles":"roles/iam.serviceAccountUser",
         "member":[
           "serviceAccount:12345@cloudbuild.gserviceaccount.com"
         ]
       }
      {
         "roles":"roles/iam.serviceAccountTokenCreator",
         "member":[
           "serviceAccount:12345@cloudbuild.gserviceaccount.com"
         ]
       }
    }
    

    Untuk menghindari pemberian peran roles/compute.admin, Anda dapat membuat peran khusus dengan izin yang diperlukan, lalu berikan peran tersebut ke akun layanan Cloud Build. Lihat bagian awal Izin yang diperlukan untuk peran khusus dalam dokumen ini.

  3. Opsional: Jika Anda mengekspor atau mengimpor image yang menggunakan VPC Bersama, berikan peran roles/compute.networkUser pada project VPC Bersama.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
    

    Ganti HOST_PROJECT_ID dengan ID project VPC Bersama.

    Tambahkan binding IAM berikut ke akun layanan Cloud Build:

    {
       {
         "roles":"roles/compute.networkUser",
         "member":[
           "serviceAccount:12345@cloudbuild.gserviceaccount.com"
         ]
       }
    }
    
  4. Untuk menulis kebijakan yang telah diperbarui, gunakan metode setIamPolicy.

    Misalnya, untuk menetapkan kebijakan di level project, gunakan metode project.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

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

Untuk mengetahui informasi selengkapnya tentang cara mengelola akses ke resource, lihat Memberikan, mengubah, dan mencabut akses ke resource.

Memberikan peran yang diperlukan ke akun layanan Compute Engine

Saat Anda menggunakan konsol Google Cloud atau gcloud CLI guna mengimpor atau mengekspor image untuk pertama kalinya, alat ini akan mencoba memberikan peran yang diperlukan ke akun layanan Compute Engine default. Secara default, akun ini memiliki peran Editor IAM (roles/editor) pada project, yang memadai untuk proses ini. Akun layanan Compute Engine Anda harus memiliki peran berikut:

  • Peran Compute Storage Admin (roles/compute.storageAdmin): diperlukan untuk mengekspor dan mengimpor image VM
  • Peran Storage Object Viewer (roles/storage.objectViewer): diperlukan untuk mengimpor image VM
  • Peran Storage Object Admin (roles/storage.objectAdmin): diperlukan untuk mengekspor image VM

Namun, jika Anda mengubah peran dan izin default untuk akun layanan Compute Engine, pastikan akun layanan masih menerapkan peran yang diperlukan.

Konsol

  1. Buka halaman IAM & Admin untuk project atau organisasi.

    Buka IAM & Admin

  2. Temukan akun layanan Compute Engine, lalu klik Edit.

  3. Di daftar Select a role, pilih peran berikut:

    • Compute Engine > Compute Storage Admin
    • Cloud Storage > Storage Object Viewer
    • Cloud Storage > Storage Object Admin
  4. Simpan perubahan Anda.

gcloud

Pada langkah-langkah berikut, Anda akan menggunakan perintah gcloud projects add-iam-policy-binding untuk memberikan peran yang diperlukan di level project.

  1. Berikan peran roles/compute.storageAdmin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \
      --role='roles/compute.storageAdmin'
    
  2. Jika Anda mengimpor image, berikan peran roles/storage.objectViewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \
      --role='roles/storage.objectViewer'
    
  3. Jika Anda mengekspor image, berikan peran roles/storage.objectAdmin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \
      --role='roles/storage.objectAdmin'
    

REST

  1. Baca kebijakan yang ada dengan metode getIamPolicy resource. Untuk project, gunakan metode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ganti PROJECT_ID dengan project ID, misalnya, my-project-1.

  2. Untuk memberikan peran yang diperlukan ke akun Anda, edit kebijakan dengan editor teks.

    Misalnya, untuk memberikan peran yang diperlukan kepada serviceAccount:12345-compute@developer.gserviceaccount.com untuk mengimpor image, tambahkan binding berikut ke kebijakan:

    {
       {
         "role":"roles/compute.storageAdmin",
         "member":[
           "serviceAccount:12345-compute@developer.gserviceaccount.com"
         ]
       }
       {
         "roles":"roles/storage.objectViewer",
         "member":[
           "serviceAccount:12345-compute@developer.gserviceaccount.com"
         ]
       }
    }
    
  3. Untuk menulis kebijakan yang telah diperbarui, gunakan metode setIamPolicy.

    Misalnya, untuk menetapkan kebijakan di level project, gunakan metode project.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

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

Jika tidak ingin menggunakan akun layanan Compute Engine default, Anda dapat menentukan akun layanan yang dikelola pengguna menggunakan flag --compute-service-account dalam gcloud perintah impor dan ekspor. Untuk mengetahui informasi lebih lanjut tentang penggunaan akun layanan Compute Engine khusus, lihat referensi berikut:

Langkah selanjutnya