Membuat instance VM dari image mesin


Setelah membuat image mesin, Anda dapat menggunakannya untuk membuat salinan instance VM sumber. Untuk mengetahui informasi selengkapnya tentang penggunaan image mesin, lihat kapan harus menggunakan image mesin.

Image mesin berisi sebagian besar informasi dan data yang diperlukan untuk cloning instance.

Image mesin tidak dapat diubah. Namun, Anda dapat mengganti hampir semua properti image mesin saat membuat instance dari image mesin.

Anda dapat membuat instance dari image mesin menggunakan Konsol Google Cloud, Google Cloud CLI, atau REST.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Pembatasan

Batasan berikut berlaku saat Anda membuat VM dari image mesin:

  • Anda dapat membuat maksimal 6 VM dari image mesin sumber dalam 60 menit. Jika Anda melebihi batas ini, operasi pembuatan instance akan gagal dan menampilkan error seperti berikut:

    Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'.
    Too frequent operations from the source resource.
    

    Untuk membuat lebih banyak VM dari batas yang ditetapkan (6 VM dalam 60 menit), buat image mesin tambahan dari VM sumber atau buat image mesin berumur singkat dari VM baru. Anda kemudian dapat membuat sejumlah VM yang diperlukan dari image mesin baru.

  • Anda tidak dapat membuat VM dari image mesin dengan persistent disk regional yang terpasang menggunakan konsol Google Cloud. Gunakan Google Cloud CLI atau REST dan tentukan parameter replicaZones dan deviceName untuk setiap persistent disk regional yang terpasang. Untuk mengetahui informasi selengkapnya, baca artikel Membuat VM dari image mesin dengan penggantian properti.

Membuat VM dari image mesin (tanpa penggantian)

Jika Anda ingin membuat VM yang sepenuhnya didasarkan pada image mesin tanpa perubahan pada propertinya, gunakan metode ini.

Konsol

  1. Di konsol Google Cloud, buka halaman Create an instance.

    Buka Buat instance

  2. Klik Instance VM baru dari image mesin.

  3. Pilih image mesin, lalu klik Continue.

  4. Opsional: Sesuaikan detail VM.

  5. Klik Buat.

gcloud

Gunakan perintah gcloud compute instances create untuk membuat instance dari image mesin.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --source-machine-image=SOURCE_MACHINE_IMAGE_NAME

Ganti kode berikut:

  • VM_NAME: nama VM yang akan dibuat.
  • ZONE: zona untuk VM.
  • SOURCE_MACHINE_IMAGE_NAME: image mesin yang akan digunakan untuk membuat VM.

Contoh

Misalnya, Anda dapat menggunakan perintah gcloud berikut untuk membuat VM bernama my-instance di zona us-east1-b, dari image mesin yang disebut my-machine-image.

gcloud compute instances create my-instance \
    --zone=us-east1-b \
    --source-machine-image=my-machine-image

Setelah VM dibuat, outputnya akan terlihat seperti berikut:

Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance].
NAME               ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
my-instance        us-east1-b  e2-standard-2               192.0.2.1   203.224.0.113  RUNNING

REST

Di API, buat permintaan POST ke metode instances.insert. Dalam isi permintaan, sertakan parameter berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL"
}

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda..
  • ZONE: zona untuk VM.
  • VM_NAME: nama VM yang akan dibuat.
  • SOURCE_MACHINE_IMAGE_URL: URL lengkap atau sebagian dari image mesin yang ingin Anda gunakan untuk membuat VM. Misalnya, jika Anda memiliki image mesin bernama my-machine-image dalam project bernama myProject. URL berikut valid:

    • https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
    • projects/myProject/global/machineImages/my-machine-image
    • global/machineImages/my-machine-image

Membuat VM dari image mesin dengan penggantian properti

Jika Anda ingin membuat VM yang utamanya berdasarkan image mesin tetapi dengan beberapa perubahan, Anda dapat menggunakan perilaku penggantian. Untuk menggunakan perilaku penggantian, Anda meneruskan atribut untuk mengganti properti image mesin yang ada saat membuat instance.

Saat Anda menggunakan fitur penggantian, pertimbangkan hal-hal berikut:

  • Anda tidak dapat mengganti properti disk yang terpasang selain nama disk saat membuat VM dari image mesin.
  • Anda harus menentukan parameter replicaZones untuk setiap persistent disk regional yang terpasang beserta deviceName disk regional dari image mesin.

  • Jika VM sumber yang digunakan untuk membuat image mesin dan VM baru termasuk dalam project dan region yang sama, hal berikut akan berlaku:

    • Sebagian besar properti instance sumber dan VM baru sama. Properti yang berbeda adalah seperti alamat IP sementara yang ditetapkan secara otomatis.
    • Jika instance VM sumber masih ada saat Anda membuat VM baru, VM baru tersebut tidak dapat menggunakan nama dan zona yang sama dengan instance sumber.
  • Jika VM sumber yang digunakan untuk membuat image mesin dan VM baru berada dalam project yang sama tetapi berbeda region, hal berikut akan berlaku:

    • Anda harus mengganti semua resource zona dan regional untuk VM baru. Misalnya, jika Anda membuat instance VM dari image mesin yang instance sumbernya berada di region berbeda, Anda perlu mengganti resource regional seperti subnetwork dan aturan firewall regional. Namun, resource global seperti load balancer dan akun layanan tidak memerlukan penggantian, kecuali jika Anda ingin mengubahnya.

Konsol

  1. Di konsol Google Cloud, buka halaman Create an instance.

    Buka Buat instance

  2. Klik Instance VM baru dari image mesin.

  3. Pilih image mesin, lalu klik Continue.

  4. Opsional: Sesuaikan detail VM.

  5. Klik Buat.

    Untuk detail penyiapan selengkapnya, baca artikel Membuat instance VM dari image.

gcloud

Gunakan perintah gcloud compute instances create untuk membuat instance dari image mesin dan menambahkan properti yang ingin Anda ganti.

Misalnya, Anda dapat menggunakan perintah gcloud berikut untuk membuat VM bernama my-instance di zona us-east1-b, dari image mesin yang disebut my-machine-image. Dalam contoh ini, penggantian diterapkan untuk mengubah jenis mesin, menghentikan kebijakan pemeliharaan host, dan mengonfigurasi persistent disk regional dengan nama regional-disk-0.

gcloud compute instances create my-instance \
    --zone=us-east1-b \
    --source-machine-image=my-machine-image \
    --machine-type=e2-standard-2 \
    --maintenance-policy=TERMINATE \
    --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \
    --create-disk=device-name=regional-disk-0,\
      replica-zones=^:^us-east1-b:us-east1-c,boot=false

REST

Untuk mengganti properti image mesin selama pembuatan VM, gunakan instances.insert() API dan berikan kolom apa pun yang ingin diganti dalam isi permintaan.

Di API, buat permintaan POST ke metode instances.insert. Dalam isi permintaan, sertakan parameter sourceMachineImage dan penggantian yang Anda perlukan. Anda dapat menambahkan properti apa pun yang biasanya ditetapkan selama pembuatan instance. Misalnya, untuk mengubah jenis mesin, panggilan API Anda akan menyertakan parameter machineType.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE",
  "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL"
}

Ganti kode berikut:

  • PROJECT_ID: ID project.
  • ZONE: zona untuk VM.
  • VM_NAME: nama VM yang akan dibuat.
  • NEW_MACHINE_TYPE: jenis mesin yang ingin Anda gunakan untuk VM.
  • SOURCE_MACHINE_IMAGE_URL: URL lengkap atau sebagian dari image mesin yang ingin Anda gunakan untuk membuat instance. Misalnya, jika Anda memiliki image mesin bernama my-machine-image dalam project bernama myProject. URL berikut valid:

    • https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
    • projects/myProject/global/machineImages/my-machine-image
    • global/machineImages/my-machine-image

Perilaku penggantian

Perilaku penggantian dalam API mengikuti aturan patch penggabungan JSON, yang dijelaskan oleh RFC 7396. Singkatnya, aturan berikut berlaku:

  • Jika Anda mengganti kolom dasar, kolom dasar yang terkait pada image mesin akan diganti dengan nilai kolom dasar dalam permintaan. Kolom dasar mencakup parameter seperti machineType dan name.
  • Jika Anda mengganti kolom berulang, semua nilai berulang untuk properti tersebut akan diganti dengan nilai yang sesuai yang diberikan dalam permintaan. Kolom berulang umumnya merupakan properti dari jenis list. Misalnya, disks dan networkInterfaces adalah kolom berulang.
  • Jika Anda mengganti nested object, objek dalam image mesin akan digabungkan dengan spesifikasi objek yang sesuai dalam permintaan. Perlu diketahui bahwa jika objek bertingkat berada dalam kolom berulang, kolom tersebut akan diperlakukan sesuai dengan aturan untuk kolom berulang. Label adalah pengecualian untuk aturan ini, dan diperlakukan sebagai kolom berulang meskipun label adalah jenis object.

Misalnya, jika Anda ingin membuat VM dari image mesin, dan membuat persistent disk regional dengan VM, gunakan penggantian untuk disk tersebut sehingga Anda dapat menentukan opsi replicaZones. Karena kolom disks adalah kolom berulang, Anda harus menentukan konfigurasi disk untuk semua disk yang terpasang dan boot disk, bukan hanya disk regional.

POST /compute/projects/my-proj/zones/us-west1-a/instances
{
  "name": "vm-from-image",
  "sourceMachineImage": "global/machineImages/my-machine-image",
  "disks": [
    {
      "kind": "compute#attachedDisks",
      "boot": true,
      "autoDelete": true,
      "deviceName": "boot-device",
      "initializeParams": {
        "sourceImage": "projects/my-proj/global/images/my-image",
        "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard",
      }
    },
    {
      "kind": "compute#attachedDisk",
      "boot": false,
      "autoDelete": true,
      "deviceName": "regional-device-0",
      "initializeParams": {
         "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard",
         "replicaZones": [
            "projects/my-proj/zones/us-west1-a",
            "projects/my-proj/zones/us-west1-c"
         ]
      }
    }
  ]
}

Membuat VM menggunakan image mesin dari project berbeda

Saat membuat VM menggunakan image mesin dari project lain, Anda mungkin tidak memiliki akses ke akun layanan yang terkait dengan project sumber tersebut. Jika ingin membuat VM dari image mesin yang terletak di project berbeda, pastikan Anda memiliki akses ke image mesin dan mengganti properti akun layanan pada VM baru.

Jika Anda membagikan image mesin di seluruh project yang menggunakan jaringan VPC Bersama, Anda harus menentukan detail VPC Bersama secara eksplisit saat membuat VM dari image mesin. Misalnya, saat Anda membuat VM di project non-host, berikan detail VPC Bersama project host menggunakan opsi --network, --subnet, atau --network-interface.

Bagian berikut menguraikan cara membuat VM dari image mesin yang terletak di project yang berbeda menggunakan Google Cloud CLI.

  1. Berikan akses ke image mesin yang disimpan di project lain.

    Izin dapat diberikan pada project sumber atau image mesin. Gunakan perintah gcloud compute machine-images add-iam-policy-binding untuk memberikan izin pada image mesin.

    gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \
        --project=MACHINE_IMAGE_PROJECT \
        --member='ACCOUNT_EMAIL' \
        --role='roles/compute.admin'
    

    Ganti kode berikut:

    • MACHINE_IMAGE_PROJECT: project ID untuk project yang berisi image mesin sumber.
    • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda tambahkan binding izin.
    • ACCOUNT_EMAIL: alamat email serviceAccount atau user yang membuat VM. Pastikan email diformat untuk menyertakan awalan yang diperlukan, dan awalan tersebut harus salah satu dari berikut ini:

      • user: tentukan hal ini jika alamat email dikaitkan dengan akun pengguna. Contoh: user:user@example.com.
      • serviceAccount: tentukan ini jika alamat email dikaitkan dengan akun layanan. Contoh: serviceAccount:123456789000-compute@developer.gserviceaccount.com.

    Contoh

    Misalnya, untuk menambahkan binding compute.admin ke image mesin yang bernama my-machine-image ke email akun layanan 123456789000-compute@developer.gserviceaccount.com, gunakan perintah gcloud berikut:

    gcloud compute machine-images add-iam-policy-binding my-machine-image \
        --project=machine-image-project \
        --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \
        --role='roles/compute.admin'
    
  2. Berikan peran Service Account User (roles/iam.serviceAccountUser) kepada pengguna yang menjalankan perintah gcloud compute instances create di akun layanan yang terkait dengan image mesin.

  3. Gunakan perintah gcloud compute instances create untuk membuat VM dari image mesin.

    gcloud compute instances create VM_NAME \
        --project=VM_PROJECT_ID \
        --zone=ZONE \
        --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --subnet=SUBNET
    

    Ganti kode berikut:

    • VM_PROJECT_ID: project ID untuk project tempat Anda ingin membuat VM
    • VM_NAME: nama VM yang akan dibuat
    • ZONE: zona untuk VM
    • MACHINE_IMAGE_PROJECT: project ID project tempat image mesin berada
    • MACHINE_IMAGE_NAME: image mesin yang akan digunakan untuk membuat VM
    • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan yang ingin Anda lampirkan ke VM
    • SUBNET: jika subnet dan instance berada dalam project yang sama, ganti SUBNET dengan nama subnet yang berada di region yang sama dengan instance

      Untuk menentukan subnet di jaringan VPC Bersama, ganti SUBNET dengan string dalam format berikut:

      projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
      

      Ganti kode berikut:

      • HOST_PROJECT_ID: project ID dari project host VPC Bersama
      • REGION: region subnet
      • SUBNET_NAME: nama subnet.

      Contoh

      Misalnya, perintah berikut akan membuat VM bernama my-instance di vm-project, dalam zona us-east1-b, dari image mesin yang disebut my-machine-image.

      Flag --service-account menentukan akun layanan yang ingin dilampirkan ke VM yang baru dibuat. Jika flag ini tidak diberikan, akun layanan sumber tidak dapat dibagikan di kedua project dan operasi akan gagal.

      gcloud compute instances create my-instance \
       --project=vm-project \
       --zone=us-east1-b \
       --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \
       --service-account=000123456789-compute@developer.gserviceaccount.com
      

      Setelah VM dibuat, outputnya akan terlihat seperti berikut:

      Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance].
      NAME               ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
      my-instance        us-east1-b  e2-standard-2               192.0.2.1   203.224.0.113  RUNNING
      

Apa langkah selanjutnya?