Dokumen ini menjelaskan cara mengonfigurasi dan menggunakan strategi deployment canary.
Apa yang dimaksud dengan deployment canary?
Deployment canary adalah peluncuran progresif aplikasi yang membagi traffic antara versi yang sudah di-deploy dan versi baru, meluncurkannya ke sebagian pengguna sebelum meluncurkan sepenuhnya.
Jenis target yang didukung
Deployment canary di Cloud Deploy mendukung semua jenis target, termasuk yang berikut:
Google Kubernetes Engine dan GKE Enterprise
Cloud Run (khusus layanan—bukan tugas)
Canary juga berfungsi dengan multi-target.
Mengapa menggunakan strategi deployment canary?
Deployment canary memberi Anda kesempatan untuk merilis aplikasi sebagian. Dengan cara ini, Anda dapat memastikan versi baru aplikasi Anda andal sebelum Anda menyajikannya kepada semua pengguna.
Jika Anda men-deploy ke GKE atau GKE Enterprise, misalnya, Anda akan men-deploy versi baru aplikasi ke sejumlah kecil pod. Versi lama akan terus berjalan, tetapi dengan lebih banyak traffic yang dikirim ke pod baru.
Jika Anda men-deploy ke Cloud Run, Cloud Run sendiri akan membagi traffic antara revisi lama dan baru, sesuai dengan persentase yang Anda konfigurasi.
Jenis canary
Cloud Deploy memungkinkan Anda mengonfigurasi jenis deployment canary berikut:
Otomatis
Dengan deployment canary otomatis (untuk jaringan layanan, API gateway, atau Cloud Run), Anda mengonfigurasi Cloud Deploy dengan serangkaian persentase yang menyatakan deployment progresif. Cloud Deploy melakukan operasi tambahan atas nama Anda, untuk membagi persentase traffic antara versi lama dan baru.
Otomatis kustom
Untuk canary yang otomatis kustom (untuk service networking, gateway api, atau Cloud Run), Anda dapat memberikan berikut ini:
- Nama fase
- Sasaran persentase
- Profil Skaffold yang akan digunakan untuk fase ini
- Apakah akan menyertakan tugas verifikasi atau tidak
- Apakah akan menyertakan tugas pra-deploy atau pasca-deploy, atau keduanya
Namun, Anda tidak perlu memberikan informasi penyeimbangan traffic; Cloud Deploy membuat resource yang diperlukan (untuk jaringan layanan, API gateway, atau Cloud Run).
Kustom
Dengan canary kustom (untuk jaringan layanan, gateway API, atau Cloud Run), Anda mengonfigurasi setiap fase canary secara terpisah, termasuk yang berikut:
- Nama fase
- Sasaran persentase
- Profil Skaffold yang akan digunakan untuk fase ini
- Apakah akan menyertakan tugas verifikasi atau tidak
- Apakah akan menyertakan tugas pra-deploy atau pasca-deploy, atau keduanya
Selain itu, untuk canary yang sepenuhnya kustom, Anda memberikan semua konfigurasi penyeimbangan traffic.
Fase deployment canary
Saat Anda membuat rilis untuk deployment canary, peluncuran akan dibuat dengan
tahap untuk setiap penambahan canary, ditambah tahap stable
akhir untuk 100%.
Misalnya, jika Anda mengonfigurasi canary untuk inkremen 25%, 50%, dan 75%, peluncuran akan memiliki fase berikut:
canary-25
canary-50
canary-75
stable
Anda dapat membaca lebih lanjut tentang fase peluncuran, tugas, dan eksekusi tugas di Mengelola peluncuran.
Menggunakan deployment paralel dengan strategi deployment canary
Anda dapat menjalankan deployment canary menggunakan deployment paralel. Artinya, target yang Anda deploy secara progresif dapat terdiri dari dua atau lebih target turunan. Misalnya, Anda dapat men-deploy secara progresif ke cluster di region terpisah, secara bersamaan.
Perbedaan antara canary paralel dan canary target tunggal
Seperti deployment canary target tunggal, jika men-deploy ke target GKE, Anda memerlukan konfigurasi Deployment Kubernetes dan konfigurasi Layanan Kubernetes dalam manifes.
Seperti deployment canary target tunggal, konfigurasi pipeline pengiriman Anda harus menyertakan stanza
strategy.canary
di dalam definisi tahap untuk tahap yang berlaku.Selain itu, Anda perlu mengonfigurasi multi-target, dan Anda perlu mengonfigurasi target turunan yang dirujuk oleh multi-target tersebut.
Saat Anda membuat rilis, peluncuran pengontrol dan peluncuran turunan akan dibuat.
Kedua jenis peluncuran—pengontrol dan turunan—memiliki fase terpisah untuk semua persentase canary yang dikonfigurasi, dan fase
stable
untuk canary 100%.Anda tidak dapat mempercepat peluncuran anak.
Anda hanya dapat memajukan peluncuran pengontrol. Saat Anda memajukan peluncuran pengontrol ke tahap berikutnya, peluncuran turunan juga akan dimajukan oleh Cloud Deploy.
Anda tidak dapat mencoba ulang tugas yang gagal dalam peluncuran pengontrol.
Anda hanya dapat mencoba ulang tugas dalam peluncuran anak.
Anda tidak dapat mengabaikan tugas yang gagal dalam peluncuran pengontrol.
Anda hanya dapat mengabaikan tugas yang gagal dalam peluncuran turunan.
Anda dapat membatalkan peluncuran pengontrol, tetapi Anda tidak dapat membatalkan peluncuran turunan.
Anda dapat menghentikan eksekusi tugas hanya dalam peluncuran turunan, bukan peluncuran pengontrol.
Yang harus dilakukan jika peluncuran paralel gagal di canary
Jika peluncuran turunan gagal, peluncuran pengontrol dapat bertransisi ke status yang berbeda, bergantung pada apa yang terjadi dengan peluncuran turunan:
Jika satu atau beberapa peluncuran turunan gagal, tetapi setidaknya satu peluncuran turunan masih
IN_PROGRESS
, peluncuran pengontrol tetapIN_PROGRESS
.Jika satu atau beberapa peluncuran anak gagal, tetapi setidaknya satu peluncuran anak berhasil, peluncuran pengontrol adalah
HALTED
jika ada lebih banyak fase setelah fase saat ini.Jika ini adalah fase
stable
, peluncuran pengontrol adalahFAILED
.HALTED
memberi Anda kesempatan untuk mengabaikan, mencoba lagi tugas yang gagal dalam peluncuran turunan yang gagal, atau membatalkan peluncuran pengontrol dan mencegah tindakan lebih lanjut pada peluncuran turunan.Jika peluncuran pengontrol berada dalam status
HALTED
karena peluncuran turunan gagal, dan Anda mengabaikan tugas yang gagal dalam peluncuran turunan, peluncuran pengontrol akan kembali ke statusIN_PROGRESS
.
Langkah berikutnya
Cari tahu cara mengelola siklus proses peluncuran canary Anda.
Lanjutkan ke panduan yang relevan dengan lingkungan target spesifik Anda: