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:
- Menyiapkan akses ke bucket Cloud Storage
- Memberikan peran yang diperlukan ke akun pengguna Anda
- Memberikan peran yang diperlukan ke akun layanan Cloud Build
- 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
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- 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
Buka halaman IAM & Admin untuk project atau organisasi.
Cari akun Anda dan klik
Edit.Di daftar Select a role, pilih peran berikut:
- Cloud Storage > Storage Admin
- Project > Viewer
- Resource Manager > Project IAM Admin
- Cloud Build > Cloud Build Editor
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.
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 AndaMEMBER
: akun yang menjalankan perintah impor dan ekspor—misalnya,user:export-user@gmail.com
Berikan peran
roles/viewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
Berikan peran
roles/resourcemanager.projectIamAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
Berikan peran
roles/cloudbuild.builds.editor
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
REST
Baca kebijakan yang ada dengan metode
getIamPolicy
resource. Untuk project, gunakan metodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Ganti
PROJECT_ID
dengan project ID, misalnya,my-project-1
.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" ] } }
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
Setelah mengaktifkan Cloud Build API, buka halaman IAM & Admin untuk project atau organisasi.
Temukan akun layanan Cloud Build, lalu klik
Edit.Jika peran yang diperlukan tidak tercantum, lakukan hal berikut:
- Klik Add another role.
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.
Klik Save untuk menyimpan perubahan.
Opsional: Jika Anda mengimpor atau mengekspor image yang menggunakan VPC Bersama, pilih peran Compute Network User di project VPC Bersama:
- Dari pemilih project di bagian atas konsol, pilih project host VPC Bersama.
- Di halaman IAM & Admin, klik Grant access.
- Pada kolom New principals, masukkan alamat email
akun layanan Cloud Build:
PROJECT_NUMBER@cloudbuild.gserviceaccount.com'
GantiPROJECT_NUMBER
dengan nomor unik project tempat Anda mengimpor atau mengekspor image. - Dalam daftar Select a role, pilih Compute Engine > peran Compute Network User.
- 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.
Berikan peran
roles/compute.admin
ke akun layanan Cloud Build. Agar tidak memberikan peranroles/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:
PROJECT_ID
: project ID Google Cloud untuk project AndaPROJECT_NUMBER
: nomor project Google Cloud untuk project Anda
Berikan peran
roles/iam.serviceAccountUser
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
Berikan peran
roles/iam.serviceAccountTokenCreator
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
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 beradaPROJECT_NUMBER
: nomor unik project tempat Anda mengimpor atau mengekspor image
REST
Baca kebijakan yang ada dengan metode
getIamPolicy
resource. Untuk project, gunakan metodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Ganti
PROJECT_ID
dengan project ID, misalnya,my-project-1
.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.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" ] } }
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
Buka halaman IAM & Admin untuk project atau organisasi.
Temukan akun layanan Compute Engine, lalu klik
Edit.Di daftar Select a role, pilih peran berikut:
- Compute Engine > Compute Storage Admin
- Cloud Storage > Storage Object Viewer
- Cloud Storage > Storage Object Admin
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.
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'
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'
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
Baca kebijakan yang ada dengan metode
getIamPolicy
resource. Untuk project, gunakan metodeprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Ganti
PROJECT_ID
dengan project ID, misalnya,my-project-1
.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" ] } }
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:
- Mengimpor disk virtual dengan akun layanan khusus
- Mengimpor peralatan virtual dengan akun layanan khusus
- Mengimpor image mesin dari peralatan virtual dengan akun layanan khusus
- Mengekspor image khusus dengan akun layanan khusus
Langkah selanjutnya
- Mengekspor image khusus ke Cloud Storage.
- Membagikan image Anda ke seluruh project.
- Memilih metode impor.
- Mengimpor disk virtual
- Mengimpor perangkat virtual
- Mengimpor image mesin dari perangkat virtual