Membuat image kustom

Anda dapat membuat image kustom dari disk sumber yang ada dan menggunakannya untuk membuat dan memulai mesin virtual (VM). Image kustom ideal untuk digunakan saat Anda telah membuat dan mengubah persistent boot disk ke status tertentu, dan perlu menyimpan status tersebut untuk membuat VM. Membuat dan menyimpan image kustom untuk digunakan sebagai image VM baru dalam pembuatan VM di masa mendatang akan mencegah duplikasi langkah-langkah penyiapan Anda nanti.

Sebelum memulai

Untuk menggunakan perintah antarmuka command line (CLI) gdcloud, pastikan Anda telah mendownload, menginstal, dan mengonfigurasi CLI gdcloud. Semua perintah untuk appliance GDC air-gapped menggunakan CLI gdcloud atau kubectl, dan memerlukan lingkungan Linux.

Mendapatkan jalur file kubeconfig

Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:

  1. Temukan nama server Management API, atau tanyakan kepada Administrator Platform (PA) Anda nama servernya.

  2. Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.

  3. Gunakan jalur untuk menggantikan MANAGEMENT_API_SERVER{"</var>"}} dalam petunjuk ini.

Meminta izin dan akses

Untuk membuat image kustom, Anda harus memiliki akses image VM tingkat project. Ikuti langkah-langkah yang diberikan untuk Project IAM Admin Anda guna menetapkan peran Project VirtualMachine Image Admin (project-vm-image-admin) kepada Anda di namespace project tempat VM berada. Jika Anda menggunakan konsol GDC atau gdcloud CLI untuk membuat image, Anda juga memerlukan peran Project VirtualMachine Admin (project-vm-admin) dan Project Viewer (project-viewer).

Membuat image kustom

Bagian ini menjelaskan cara membuat image kustom di VM Linux.

Menyiapkan VM untuk image

Anda dapat membuat image dari disk saat disk terpasang ke VM yang sedang berjalan. Namun, image Anda akan lebih andal jika Anda menempatkan VM ke dalam status agar image dapat diambil.

Meminimalkan penulisan data ke persistent disk

Gunakan salah satu proses berikut untuk mengurangi penulisan disk. Hentikan VM, atau minimalkan penulisan ke disk:

  • Hentikan VM agar VM dapat dimatikan dan berhenti menulis data apa pun ke persistent disk.

Jika Anda tidak dapat menghentikan VM sebelum membuat image, minimalkan penulisan ke disk dan sinkronkan sistem file Anda. Untuk meminimalkan penulisan ke persistent disk, ikuti langkah-langkah berikut:

  1. Jeda aplikasi atau proses OS yang menulis data ke persistent disk tersebut. Jalankan penghapusan aplikasi ke disk, jika perlu. Aplikasi lain mungkin memiliki proses yang serupa.
  2. Hentikan aplikasi Anda agar tidak menulis ke persistent disk.
  3. Jalankan sudo sync.

Buat gambar

Ikuti langkah-langkah berikut untuk membuat image disk dari persistent disk, bahkan saat disk tersebut terpasang ke VM:

Konsol

  1. Pilih project.

  2. Di menu navigasi, klik Virtual Machines > Images.

  3. Klik Buat Gambar.

  4. Masukkan nama unik untuk gambar. Nama tidak boleh lebih dari 35 karakter.

  5. Masukkan versi yang akan ditambahkan ke nama gambar.

  6. Di kolom Source Disk, pilih disk.

  7. Di Minimum Disk Size field, masukkan ukuran disk.

  8. Masukkan deskripsi gambar.

  9. Klik Buat.

Gambar akan muncul dalam daftar gambar.

API

  1. Mencantumkan semua objek VirtualMachineDisk:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
       get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT
    
  2. Pilih objek VirtualMachineDisk yang akan digunakan sebagai disk sumber untuk image baru.

  3. Periksa apakah disk VM terpasang ke VM:

      kubectl --kubeconfig MANAGEMENT_API_SERVER \
          get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \
          DISK_NAME -o jsonpath='{.status.virtualMachineAttachments}'
    

    Contoh output yang menunjukkan bahwa disk terpasang ke VM:

      [{"autoDelete":true,"nameRef":{"name":"vm1"},"uid":"...."}]
    
    1. Periksa status berjalan VM. Jika statusnya bukan Stopped, Hentikan VM dan lanjutkan pembuatan VirtualMachineImage.
  4. Dapatkan size dari VirtualMachineDisk untuk membuat gambar:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \
        DISK_NAME -o jsonpath='{.spec.size}'
    
  5. Buat objek VirtualMachineImageImport di server Management API:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: VM_IMAGE_IMPORT_NAME
    spec:
      source:
        diskRef:
          name: DISK_NAME
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: OS_NAME
        minimumDiskSize: MINIMUM_DISK_SIZE
    EOF
    
  6. Pastikan impor gambar telah selesai dan statusnya adalah Ready:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimageimports.virtualmachine.gdc.goog --namespace PROJECT \
        VM_IMAGE_IMPORT_NAME -o jsonpath='{.status}'
    

    Status akan terlihat seperti ini setelah impor selesai:

    {
      "conditions": [
        {
          "lastTransitionTime": "",
          "message": "",
          "observedGeneration": 1,
          "reason": "ImportJobComplete",
          "status": "True",
          "type": "Ready"
        }
      ],
      "imageName": IMAGE_NAME
    }
    
  7. Pastikan image telah dibuat:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimages.virtualmachine.gdc.goog --namespace PROJECT \
        CREATED_IMAGE_NAME
    

    Ganti variabel menggunakan definisi berikut.

    VariabelDefinisi
    MANAGEMENT_API_SERVER File kubeconfig server Management API.
    PROJECT Project GDC tempat membuat image.
    DISK_NAME Nama disk sumber, seperti vm1-boot-disk.
    VM_IMAGE_IMPORT_NAME Nama impor image VM. Nama tidak boleh lebih dari 35 karakter.
    IMAGE_NAME Nama image yang dibuat, seperti custom-image.
    OS_NAME Nama OS gambar harus salah satu dari tiga ini:
    ubuntu-2004, windows-2019, atau rhel-8.
    MINIMUM_DISK_SIZE Ukuran disk minimum dalam impor image VM, seperti 20G:
    minimumDiskSize harus selalu lebih besar atau sama dengan ukuran boot disk sumber.
    CREATED_IMAGE_NAME Nama gambar yang dibuat. Nama gambar yang dibuat harus unik; tidak boleh berupa nama gambar yang sudah ada dalam project.