Menginstal ekstensi VM dengan membuat kebijakan ekstensi

Dokumen ini menjelaskan cara membuat kebijakan ekstensi VM, yang memungkinkan Anda menginstal dan mengelola ekstensi secara otomatis di sejumlah mesin virtual (VM) Compute Engine. Dengan menentukan kebijakan, Anda dapat memastikan bahwa ekstensi tertentu diinstal dan dikelola di VM mana pun yang cocok dengan kriteria yang Anda tentukan, seperti label VM.

Sebelum memulai

Peran IAM yang diperlukan

Untuk mendapatkan izin yang diperlukan guna membuat kebijakan ekstensi, minta administrator untuk memberi Anda peran IAM VM Extension Policy Admin (roles/compute.vmExtensionPolicyAdmin). Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin compute.vmExtensionPolicies.create, yang diperlukan untuk membuat kebijakan ekstensi.

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di Compute Engine, lihat Peran dan izin Compute Engine.

Prioritas kebijakan dan resolusi konflik

Jika beberapa kebijakan berlaku untuk VM yang sama, VM Extension Manager akan menggunakan prioritas kebijakan untuk menyelesaikan konflik.

Jika dua kebijakan bertentangan untuk ekstensi yang sama, kebijakan dengan prioritas yang lebih tinggi akan diutamakan. Nilai prioritas berkisar dari 0 hingga 65535, dengan angka yang lebih rendah menunjukkan prioritas yang lebih tinggi. Prioritas defaultnya adalah 1000. Jika beberapa kebijakan memiliki prioritas yang sama, VM Extension Manager akan menerapkan kebijakan yang baru saja diupdate ke VM. Menghapus kebijakan tidak akan menghapus ekstensi jika kebijakan dengan prioritas lebih rendah masih berlaku untuk VM.

Membuat kebijakan ekstensi VM global

Anda dapat membuat kebijakan ekstensi VM global untuk menginstal ekstensi di VM di beberapa zona dalam project Anda sesuai dengan rencana peluncuran. Kebijakan ekstensi VM global tidak diterapkan secara langsung ke VM; sebagai gantinya, saat kebijakan diluncurkan, VM Extension Manager membuat kebijakan di setiap zona berdasarkan rencana peluncuran. Kebijakan ini kemudian mengelola penginstalan ekstensi di VM dalam zona masing-masing.

Anda dapat menggunakan gcloud atau metode globalVmExtensionPolicies.insert untuk membuat kebijakan ekstensi global.

Tentang rencana peluncuran

Kebijakan ekstensi VM global menggunakan rencana peluncuran untuk mengelola deployment ekstensi di berbagai lokasi. Anda dapat menggunakan salah satu rencana peluncuran yang telah ditentukan sebelumnya atau membuat rencana peluncuran kustom.

Rencana peluncuran standar

  • slow_rollout: Meluncurkan kebijakan selama lima hari. Peluncuran lambat adalah rencana peluncuran default.
  • fast_rollout: Segera meluncurkan kebijakan ke semua zona.

Rencana peluncuran kustom

Anda dapat membuat rencana peluncuran kustom menggunakan metode rolloutPlans.insert. Misalnya, JSON berikut menentukan rencana peluncuran bernama test-rollout-plan yang menargetkan dua zona:

{
  "name": "test-rollout-plan",
  "waves": [
    {
      "selectors": [
        {
          "locationSelector": {
            "includedLocations": [
              "us-central1-a",
              "us-west1-a"
            ]
          }
        }
      ],
      "validation": {
        "type": "time",
        "timeBasedValidationMetadata": {
          "waitDuration": "0s"
        }
      },
      "orchestrationOptions": {
        "maxConcurrentResourcesPerLocation": "10",
        "maxConcurrentLocations": "10"
      }
    }
  ]
}

Kemudian, Anda dapat menggunakan rencana peluncuran kustom ini saat membuat kebijakan global, seperti yang ditunjukkan dalam Contoh 2.

Membuat kebijakan global

Gunakan perintah gcloud beta compute global-vm-extension-policies create untuk membuat kebijakan ekstensi VM global:

  gcloud beta compute global-vm-extension-policies create POLICY_NAME 
--description="DESCRIPTION"
--extensions=EXTENSION_NAME_1,EXTENSION_NAME_2
--version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2
--config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2
--inclusion-labels=KEY_1=VALUE_1
--priority=PRIORITY
--rollout-predefined-plan=ROLLOUT_PLAN
--rollout-conflict-behavior=ROLLOUT_CONFLICT_BEHAVIOR

Ganti kode berikut:

  • POLICY_NAME: nama untuk kebijakan ekstensi VM.
  • DESCRIPTION: deskripsi opsional untuk kebijakan.
  • EXTENSION_NAME_1,EXTENSION_NAME_2: daftar ekstensi yang dipisahkan koma untuk ditambahkan ke kebijakan. Anda harus menentukan setidaknya satu ekstensi. Nilai yang valid untuk ekstensi adalah:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: daftar pasangan nilai kunci yang dipisahkan koma, dengan kunci adalah nama ekstensi dan nilai adalah versi ekstensi. Jika Anda tidak menentukan versi untuk ekstensi, VM Extension Manager akan menggunakan versi terbaru yang tersedia dan mengupgradenya secara otomatis saat versi baru tersedia.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: daftar pasangan nilai kunci yang dipisahkan koma, dengan kunci adalah nama ekstensi dan nilai adalah jalur ke file konfigurasi untuk ekstensi tersebut. File ini berada di VM tempat Anda menjalankan perintah gcloud, bukan di VM tempat Anda menginstal ekstensi.

    Atau, untuk memberikan konfigurasi sebagai string inline, gunakan flag --config, bukan --config-from-file—misalnya, EXTENSION_NAME_1="CONFIG_1". Anda dapat menggunakan --config-from-file atau --config, tetapi tidak keduanya dalam perintah yang sama.

  • KEY_1=VALUE_1: daftar pasangan nilai kunci yang dipisahkan koma yang menentukan label penyertaan untuk pemilih. VM harus memiliki semua label yang ditentukan dalam pemilih agar dapat menjadi target. Jika Anda menentukan --inclusion-labels beberapa kali, kebijakan menargetkan VM yang cocok dengan salah satu pemilih yang diberikan (OR logis). Jika Anda tidak menyertakan flag ini, kebijakan akan menargetkan semua VM di project Anda di semua zona.

  • PRIORITY: bilangan bulat yang menentukan prioritas kebijakan. Angka yang lebih besar menunjukkan prioritas yang lebih tinggi. Nilai defaultnya adalah 0. Jika beberapa kebijakan memiliki prioritas yang sama, kebijakan yang terakhir diperbarui akan diterapkan ke VM.

  • ROLLOUT_PLAN: tentukan slow_rollout atau fast_rollout. Jika Anda perlu menggunakan rencana peluncuran kustom, gunakan flag --rollout-custom-plan bukan --rollout-predefined-plan dan tentukan nama rencana, misalnya:

      --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    Ganti kode berikut:

    • PROJECT_NUMBER: Project tempat rencana peluncuran ditentukan.
    • ROLLOUT_PLAN_NAME: Nama rencana peluncuran kustom yang Anda tentukan. Jika tidak ada flag rencana peluncuran yang ditentukan, slow_rollout akan digunakan.
  • ROLLOUT_CONFLICT_BEHAVIOR: Menentukan perilaku saat konflik terdeteksi antara kebijakan zonal dan global. Nilainya dapat berupa:

    • "" (string kosong): Nilai kebijakan zonal digunakan.
    • overwrite: Kebijakan global menggantikan kebijakan per zona.

      Untuk mengetahui detail selengkapnya, lihat flag --rollout-conflict-behavior.

    Contoh 1

    Perintah berikut membuat kebijakan bernama global-test-extension-policy yang menginstal ekstensi ops-agent untuk project test-project. Flag --config-from-file menentukan jalur ke file lokal yang berisi konfigurasi YAML untuk Ops Agent, dan --rollout-predefined-plan menentukan paket slow_rollout.

    gcloud beta compute global-vm-extension-policies create global-test-extension-policy \
        --project=test-project \
        --extensions=ops-agent \
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
        --rollout-predefined-plan=slow_rollout

    Contoh 2

    Perintah berikut akan membuat kebijakan bernama global-test-extension-policy-2 yang menginstal ekstensi ops-agent untuk project test-project di VM dengan label env=prod. Prioritas kebijakan ditetapkan ke 500, dan flag --config-from-file menentukan jalur ke file lokal yang berisi konfigurasi YAML untuk Agen Operasi. Flag --rollout-custom-plan menentukan rencana peluncuran kustom.

     gcloud beta compute global-vm-extension-policies create global-test-extension-policy-2 \
        --project=test-project \
        --extensions=ops-agent \
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
        --priority=500 \
        --inclusion-labels=env=prod \
        --rollout-custom-plan=projects/12345678/locations/global/rolloutPlans/test-rollout-plan

Membuat kebijakan ekstensi VM zona

Gunakan salah satu metode berikut untuk membuat kebijakan ekstensi VM zonal. Kebijakan zonal ini menentukan ekstensi mana yang akan diinstal dan di VM mana di zona tertentu.

Konsol

  1. Di konsol Google Cloud , buka halaman VM extension policies.

    Buka kebijakan ekstensi VM

  2. Klik Create extension policy.
  3. Di kolom Name, masukkan nama untuk kebijakan.
  4. Opsional: Di kolom Description, masukkan deskripsi untuk kebijakan.
  5. Di kolom Priority, tentukan nomor prioritas untuk menyelesaikan konflik antar-kebijakan. Angka yang lebih rendah menunjukkan prioritas yang lebih tinggi. Nilai defaultnya adalah 1.000.
  6. Dalam daftar Zone, pilih zona tempat Anda ingin menerapkan kebijakan ini.
  7. Di bagian Ekstensi, klik Tambahkan ekstensi dan lakukan hal berikut untuk setiap ekstensi yang ingin Anda instal di VM target:
    1. Dari daftar Ekstensi, pilih ekstensi. Lihat Ekstensi yang didukung.
    2. Dari daftar Versi, tentukan nomor versi ekstensi. Kosongkan untuk memilih versi terbaru.
      • Untuk Ops Agent, Anda dapat menentukan versi 2.58.0 atau yang lebih baru.
      • Untuk workload Extension for SAP dan Extension for Compute, kosongkan kolom ini untuk memilih versi terbaru.
    3. Opsional: Di kolom Config file content, masukkan parameter konfigurasi untuk ekstensi.
  8. Di bagian Target VM instances, pilih VM untuk kebijakan. Untuk memilih VM dengan label tertentu, klik Tambahkan label dan tambahkan pasangan nilai kunci.
  9. Klik Create.

gcloud

Untuk membuat kebijakan ekstensi VM zonal dan meluncurkan kebijakan ke VM di zona tertentu, gunakan perintah gcloud beta compute zone-vm-extension-policies create:

gcloud beta compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --description="DESCRIPTION" \
    --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
    --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
    --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
    --inclusion-labels=KEY_1=VALUE_1 \
    --priority=PRIORITY

Ganti kode berikut:

  • POLICY_NAME: nama untuk kebijakan ekstensi VM.
  • ZONE: zona tempat kebijakan ini berlaku.
  • DESCRIPTION: deskripsi opsional untuk kebijakan.
  • EXTENSION_NAME_1,EXTENSION_NAME_2: daftar ekstensi yang dipisahkan koma untuk ditambahkan ke kebijakan. Anda harus menentukan setidaknya satu ekstensi. Nilai yang valid untuk ekstensi adalah:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: daftar pasangan nilai kunci yang dipisahkan koma, dengan kunci adalah nama ekstensi dan nilai adalah versi ekstensi. Jika Anda tidak menentukan versi untuk ekstensi, VM Extension Manager akan menggunakan versi terbaru yang tersedia dan mengupgradenya secara otomatis saat versi baru tersedia.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: daftar pasangan nilai kunci yang dipisahkan koma, dengan kunci adalah nama ekstensi dan nilai adalah jalur ke file konfigurasi untuk ekstensi tersebut. Jalur ini ada di VM tempat Anda menjalankan perintah gcloud, bukan di VM tempat Anda menginstal ekstensi.

    Atau, untuk memberikan konfigurasi sebagai string inline, gunakan flag --config, bukan --config-from-file—misalnya, EXTENSION_NAME_1="CONFIG_1". Anda dapat menggunakan --config-from-file atau --config, tetapi tidak keduanya dalam perintah yang sama.

  • KEY_1=VALUE_1: daftar pasangan nilai kunci yang dipisahkan koma yang menentukan label penyertaan untuk pemilih. VM harus memiliki semua label yang ditentukan dalam pemilih agar dapat menjadi target. Jika Anda menentukan --inclusion-labels beberapa kali, kebijakan menargetkan VM yang cocok dengan salah satu pemilih yang diberikan (OR logis). Jika Anda menghapus flag ini, kebijakan akan menargetkan semua VM di zona yang ditentukan.

  • PRIORITY: bilangan bulat dari 0 hingga 65535 yang menentukan prioritas kebijakan. Angka yang lebih rendah menunjukkan prioritas yang lebih tinggi. Nilai defaultnya adalah 1.000.

    Perintah akan gagal jika kebijakan dengan nama yang ditentukan sudah ada di zona.

Contoh 1

Perintah berikut akan membuat kebijakan bernama test-extension-policy yang menginstal ekstensi ops-agent di zona us-central1-f untuk project test-project. Flag --config-from-file menentukan jalur ke file lokal yang berisi konfigurasi YAML untuk Ops Agent.

gcloud beta compute zone-vm-extension-policies create test-extension-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml"

Contoh 2

Perintah berikut akan membuat kebijakan bernama test-extension-policy-2 yang menginstal ekstensi ops-agent di zona us-central1-f untuk project test-project di VM dengan label env=prod. Prioritas kebijakan ditetapkan ke 500, dan flag --config-from-file menentukan jalur ke file lokal yang berisi konfigurasi YAML untuk Agen Operasi.

 gcloud beta compute zone-vm-extension-policies create test-extension-policy-2  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod

Langkah berikutnya