Mem-build image virtual machine (VM)

Halaman ini membantu Anda membuat image mesin publik untuk produk Anda agar dapat berjalan di Compute Engine.

An image berisi boot loader, sistem operasi, dan sistem file root yang diperlukan untuk memulai instance. Anda dapat mengonfigurasi image dengan serangkaian aplikasi dan layanan untuk produk Anda. Image digunakan oleh pelanggan untuk meluncurkan instance virtual machine (VM) di cloud.

Sebaiknya mulai dengan membuat image di project pengembangan Anda, lalu pindahkan ke project publik Anda setelah Google Partner Engineer Anda memverifikasi image tersebut.

Sebelum memulai

  1. Download the Google Cloud SDK.

Membuat VM produk dasar

Untuk membuat image mesin kustom untuk Cloud Marketplace, Anda harus menyelesaikan langkah-langkah berikut (dijelaskan di bagian berikutnya):

  • Gunakan salah satu image publik dasar yang didukung Google untuk membuat VM, dan instal paket serta konfigurasi khusus aplikasi Anda.

    Anda dapat memilih image yang menggunakan prosesor Arm atau yang menggunakan prosesor x86. Anda juga dapat menyertakan beberapa image, yang menargetkan jenis mesin yang berbeda, dalam satu produk VM. Untuk mengetahui informasi selengkapnya tentang platform CPU dan jenis mesin yang mendukungnya, lihat Platform CPU.

  • Jika Anda ingin memberikan dukungan kepada pelanggan, instal skrip untuk mengambil kredensial pengguna aplikasi.

Membuat image VM berlisensi

  1. Gunakan gcloud untuk menetapkan setelan default untuk Google Cloud CLI:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. Buat instance utama yang digunakan untuk menginstal software Anda, dan nantinya, dikonversi menjadi image untuk digunakan di Cloud Marketplace. Untuk mengetahui informasi selengkapnya tentang cara membuat instance, lihat Membuat dan memulai instance.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. Instal dan sesuaikan software Anda. Sertakan skrip startup yang diperlukan, seperti skrip untuk membuat kredensial otorisasi.

    Untuk membuat kredensial otorisasi menggunakan sandi acak yang aman, ikuti langkah-langkah di Membuat kredensial otorisasi, di bagian berikut.

    Setelah Anda membuat dan menyesuaikan instance utama, siapkan disk yang diperlukan untuk membuat image VM.

  4. Bersihkan disk Anda. Membuat image VM langsung dari VM Anda juga akan mentransfer direktori pengguna dan kunci SSH ke VM pelanggan Anda, sehingga Anda harus membersihkan disk input saat membuat image VM.

    Untuk membersihkan disk:

    1. Di menu VM Instances Compute Engine, klik nama instance yang ingin Anda bersihkan, lalu klik Edit.

    2. Scroll ke bawah dan hapus centang pada kotak Delete boot disk when instance is deleted , lalu klik Save. Anda menggunakan disk untuk membuat image.

    3. Hapus VM sambil mempertahankan disk. Anda akan diminta untuk mengonfirmasi penghapusan. Jangan pilih Also delete boot disk.

    4. Selanjutnya, Anda harus membuat Instance VM baru. Luaskan opsi Management, disk, networking, SSH keys.

    5. Di bagian disk, lampirkan disk dari instance sebelumnya sebagai disk data tambahan. Pastikan Keep disk dipilih untuk When deleting instance.

      Sekarang Anda dapat melakukan SSH ke instance dan menghapus direktori utama atau file sementara lainnya yang dibuat selama proses penginstalan software. Anda harus memasang disk data sebelum dapat mengaksesnya. Untuk mengetahui informasi selengkapnya tentang cara memasang disk, lihat Menambahkan atau Mengubah Ukuran Persistent Disk.

    6. Setelah selesai, matikan dan hapus instance sambil mempertahankan disk data yang diperbarui. Sekarang Anda dapat membuat image VM dengan menyelesaikan langkah-langkah berikut.

  5. Dapatkan nama lisensi untuk produk VM Anda di Producer Portal menggunakan langkah-langkah berikut:

    1. Buka Producer Portal di Google Cloud konsol:

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      Ganti YOUR_PROJECT_ID dengan ID untuk project pengembangan atau project publik Anda. Sebaiknya mulai dengan membuat image di project pengembangan Anda, lalu pindahkan ke project publik Anda setelah Google Partner Engineer Anda memverifikasi image tersebut.

    2. Klik nama produk Anda.

    3. Buka bagian Deployment Package. Di bagian VM license, catat namanya. Anda akan menggunakan nama lisensi ini pada langkah berikutnya, saat membuat image.

  6. Buat image berlisensi dengan menjalankan perintah berikut gcloud:

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION

    Ganti kode berikut:

    • CREATE_IMAGE_NAME: Nama image Anda dan arsitektur CPU yang didukungnya, dalam format who-vmOS-image-architecture-date, ganti architecture dengan Arm atau x86_64, bergantung pada arsitektur CPU yang didukung image. Anda harus menggunakan nama baru dan unik setiap kali memperbarui image untuk produk Anda.

    • PUBLIC_PROJECT_NAME: Project ID untuk project publik Anda untuk Cloud Marketplace. Anda harus telah diberi peran Compute Storage Admin (roles/compute.storageAdmin) untuk project ini.

    • LICENSE_NAME: Nama lisensi untuk produk VM Anda yang Anda catat pada langkah sebelumnya.

    • DEV_PROJECT_NAME: Project ID untuk project yang Anda buat untuk pengembangan dan pengujian untuk Cloud Marketplace. Anda harus memiliki peran Compute Image User (roles/compute.imageUser) untuk project ini.

    • SOURCE_DISK_ZONE: Zona disk sumber.

    • SOURCE_DISK_NAME: Nama disk sumber.

    • ADD_DESCRIPTION: Deskripsi teks opsional untuk image yang sedang dibuat.

Membuat image menjadi publik

Untuk produk non-Terraform yang tidak menggunakan image milik Marketplace, Anda harus membuat image Anda tersedia secara publik agar pelanggan dapat men-deploy-nya ke instance Compute Engine mereka. Untuk membuat image menjadi publik, gunakan Google Cloud konsol, atau Google Cloud CLI:

Konsol

  1. Di project publik Anda, di bagian Compute Engine, buka halaman Images.

    Membuka halaman Images

  2. Pilih image Anda, seperti yang ditunjukkan di bawah:

  3. Jika Anda tidak melihat panel info di kanan atas, klik Show Info Panel.

  4. Di panel info, di kolom Add Members, masukkan allAuthenticatedUsers, dan dari menu Select a role, pilih Compute Image User.

  5. Klik Add untuk membuat image Anda menjadi publik.

Command Line

Gunakan perintah gcloud berikut di Cloud Shell, atau di mesin lokal Anda:

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

Membuat kredensial otorisasi

Jika produk Anda adalah deployment sederhana dari satu instance VM dengan aturan firewall dasar, Anda dapat otomatis menyertakan sandi acak yang aman saat mengonfigurasi paket deployment Anda secara langsung.

Jika Anda berencana membuat paket deployment menggunakan alat open source mpdev, yang kami rekomendasikan untuk sebagian besar kasus penggunaan, Anda dapat menggunakan mpdev untuk otomatis menyertakan beberapa sandi acak yang aman.

Untuk mengetahui langkah-langkah membuat kredensial otorisasi, lihat Membuat paket deployment Anda.

Setelah produk Anda di-deploy, untuk mendapatkan nilai sandi yang Anda buat, gunakan perintah berikut dari dalam instance VM Anda:

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

Menguji image VM

Buat instance VM dengan image yang baru Anda buat, dan verifikasi fungsinya.

Selain itu, untuk memverifikasi ID lisensi, lakukan SSH ke instance dan verifikasi bahwa lisensi yang valid dilampirkan:

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Verifikasi bahwa Python 2.6 atau yang lebih baru telah diinstal:

python -V

Verifikasi bahwa paket berikut telah diinstal:

gcloud --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

Periksa untuk memastikan bahwa tidak ada direktori pengguna lain yang diinstal di instance kecuali milik Anda sendiri, dan tidak ada direktori dan kredensial pengguna yang tersisa selain milik Anda sendiri.