Menjadwalkan eksperimen

Halaman ini menjelaskan cara menjadwalkan eksperimen di Pengujian Injeksi Kesalahan dan cara menggunakan layanan penjadwalan eksternal untuk mengotomatiskan pengujian ketahanan Anda.

Dengan menjadwalkan eksperimen, Anda dapat mengotomatiskan proses pengujian dan menjalankan eksperimen selama periode yang meminimalkan dampak pada pengguna, seperti:

  • Di luar jam sibuk atau masa pemeliharaan yang direncanakan.
  • Hari game atau latihan rekayasa kekacauan yang dijadwalkan secara rutin.
  • Pipeline pengujian otomatis (CI/CD) untuk memverifikasi ketahanan sebelum deployment.

Menjadwalkan eksperimen membantu Anda menetapkan validasi berkelanjutan terhadap toleransi kesalahan sistem tanpa memerlukan intervensi manual untuk setiap pengujian.

Cara kerja eksperimen terjadwal

Pengujian Injeksi Kesalahan tidak menyertakan layanan penjadwalan bawaan. Sebagai gantinya, Anda menjadwalkan eksperimen dengan mengintegrasikan Pengujian Injeksi Kesalahan dengan layanan penjadwalan eksternal, seperti Cloud Scheduler.

Untuk menjadwalkan eksperimen, Anda mengonfigurasi penjadwal eksternal untuk memanggil Fault Injection Testing API atau menjalankan perintah gcloud pada waktu tertentu. Untuk mendukung integrasi ini, Pengujian Injeksi Kesalahan menyediakan parameter startOnCreateEnabled. Jika ditetapkan ke true, parameter ini akan memberi tahu sistem untuk otomatis memulai eksperimen segera setelah dibuat.

Memilih target untuk eksperimen terjadwal

Resource target untuk eksperimen terjadwal ditentukan dalam template eksperimen, bukan dalam konfigurasi penjadwalan itu sendiri. Berikut cara Pengujian Injeksi Kesalahan menangani target:

  • Saat membuat template eksperimen, Anda menentukan jenis kesalahan dan kriteria pemilihan untuk resource target. Contoh resource mencakup instance VM tertentu, resource dengan tag yang cocok, atau resource di zona tertentu.
  • Saat Anda mengonfigurasi penjadwal eksternal, payload API akan mereferensikan template eksperimen Anda.
  • Pada waktu yang dijadwalkan, penjadwal eksternal akan memicu pembuatan eksperimen. Pengujian Injeksi Kesalahan kemudian mengevaluasi aturan pemilihan target dalam template pada saat tersebut untuk menentukan resource mana yang terpengaruh.

Jika template Anda menargetkan VM berdasarkan tag, eksperimen terjadwal akan memengaruhi VM mana pun yang memiliki tag tersebut pada saat eksperimen dijalankan.

Menyiapkan eksperimen terjadwal

Sebelum melanjutkan, pastikan Anda memiliki peran roles/faulttesting.operator atau roles/faulttesting.admin.

Mengonfigurasi jadwal menggunakan Google Cloud konsol dan Cloud Scheduler

Meskipun Anda tidak dapat membuat jadwal langsung di dalam konsol Pengujian Injeksi Kesalahan, konsol ini menyediakan parameter yang Anda perlukan untuk menyiapkan tugas di Cloud Scheduler.

  1. Di Google Cloud konsol, buka halaman Experiment templates.
  2. Pilih template untuk melihat detailnya.
  3. Di halaman detail, perhatikan hal berikut:

    • Payload JSON, yang mencakup "startOnCreateEnabled": true.
    • URL endpoint REST API untuk membuat eksperimen.

    Anda akan menggunakannya di Cloud Scheduler.

  4. Di Google Cloud konsol, buka halaman Cloud Scheduler , lalu klik Create job.

  5. Tentukan jadwal dan zona waktu tugas Anda.

  6. Di bagian Target type, pilih HTTP.

  7. Tetapkan URL ke URL endpoint REST API dari halaman detail Experiment templates.

  8. Tetapkan HTTP method ke POST.

  9. Di kolom Body, masukkan payload JSON:

    {
      "experimentTemplate": "projects/PROJECT_ID/locations/REGION/experimentTemplates/TEMPLATE_ID",
      "startOnCreateEnabled": true,
      "description": "DESCRIPTION"
    }
    
  10. Konfigurasi autentikasi untuk tugas. Lihat praktik terbaik untuk rekomendasi akun layanan.

  11. Klik Create.

Mengonfigurasi jadwal menggunakan Google Cloud CLI

Jika menggunakan skrip atau alat yang menjalankan perintah shell, Anda dapat menjadwalkan eksperimen dengan mengonfigurasi Cloud Scheduler atau penjadwal Anda sendiri untuk menjalankan perintah gcloud alpha fault-testing experiments create dengan flag --start-on-create-enabled.

Jalankan perintah berikut untuk membuat dan segera memulai instance eksperimen:

gcloud alpha fault-testing experiments create EXPERIMENT_ID \
    --experiment-template=TEMPLATE_ID \
    --location=REGION \
    --start-on-create-enabled \
    [--description="DESCRIPTION"] \
    [--project=PROJECT_ID]
  • EXPERIMENT_ID: ID unik untuk pengujian eksperimen. Karena perintah ini otomatis, skrip Anda harus membuat ID unik untuk setiap pengujian. Misalnya, Anda dapat menambahkan stempel waktu: scheduled-exp-$(date +%s).
  • TEMPLATE_ID: ID template eksperimen yang telah dikonfigurasi sebelumnya.
  • REGION: Region tempat eksperimen dijalankan. Google Cloud
  • --start-on-create-enabled: Flag ini memberi tahu Pengujian Injeksi Kesalahan untuk memulai eksperimen segera setelah pembuatan.
  • DESCRIPTION: (Opsional) Deskripsi pengujian eksperimen.
  • PROJECT_ID: (Opsional) ID project Anda. Google Cloud

Mengelola pengujian eksperimen

Setiap eksekusi terjadwal akan membuat instance eksperimen baru yang berbeda. Anda dapat mengelola instance ini menggunakan perintah berikut:

  • Untuk mencantumkan semua pengujian eksperimen:

    gcloud alpha fault-testing experiments list --location=REGION
    
  • Untuk melihat detail pengujian tertentu:

    gcloud alpha fault-testing experiments describe EXPERIMENT_ID --location=REGION
    
  • Untuk menghentikan eksperimen yang sedang berjalan lebih awal:

    gcloud alpha fault-testing experiments stop EXPERIMENT_ID --location=REGION
    

Praktik terbaik

Saat menjadwalkan eksperimen, pertimbangkan praktik terbaik berikut:

  • Gunakan akun layanan khusus. Saat mengonfigurasi penjadwal (seperti Cloud Scheduler), kaitkan dengan akun layanan khusus. Berikan akun layanan ini hanya izin minimum yang diperlukan untuk mengelola eksperimen, seperti roles/faulttesting.operator atau roles/faulttesting.admin di project Anda.
  • Buat ID eksperimen yang unik. Saat memicu eksperimen menggunakan skrip, pastikan skrip Anda membuat ID eksperimen yang unik untuk setiap pengujian guna menghindari konflik nama resource.
  • Gunakan nama atau deskripsi deskriptif. Setiap pengujian terjadwal akan membuat instance eksperimen baru. Tindakan ini tidak memulai ulang atau menimpa eksperimen sebelumnya. Gunakan nama atau deskripsi deskriptif untuk membantu melacak pengujian kembali ke jadwalnya.
  • Pantau kegagalan jadwal. Pemicu eksternal dapat gagal karena masalah jaringan, masa berlaku kredensial berakhir, atau kuota API. Siapkan pemantauan dan pemberitahuan pada tugas penjadwal Anda untuk memberi tahu Anda jika tugas gagal dijalankan atau menerima respons error.
  • Koordinasikan dengan masa pengecualian. Pastikan eksperimen terjadwal Anda tidak tumpang-tindih dengan masa pengecualian aktif. Jika eksperimen terjadwal dipicu selama masa pengecualian, Pengujian Injeksi Kesalahan akan memblokir pengujian, dan eksperimen akan gagal dimulai.