Saat merilis versi baru layanan Knative, mengarahkan seluruh traffic langsung ke versi tersebut berisiko menyebabkan downtime jika terjadi masalah. Pemisahan traffic memungkinkan Anda mengarahkan sebagian kecil permintaan ke Revision baru terlebih dahulu, memverifikasi stabilitasnya, lalu secara bertahap meningkatkan porsinya. Jika muncul masalah pada tahap apa pun, Anda dapat segera mengalihkan kembali traffic ke Revision sebelumnya.
Cara kerja
Di Knative pada Alibaba Cloud Service Mesh (ASM), setiap layanan Knative memiliki satu atau beberapa Revision:
Saat membuat layanan Knative, Knative secara otomatis membuat Revision pertama.
Setiap kali Anda memperbarui konfigurasi layanan, Knative membuat Revision baru.
Anda mengontrol persentase traffic yang diarahkan ke setiap Revision. Total persentase dari semua Revision harus mencapai 100%.
Rilis canary khas mengikuti progresi berikut:
Buat Revision baru dan tetapkan traffic-nya sebesar 0%.
Verifikasi bahwa Revision baru berfungsi dengan benar.
Secara bertahap alihkan traffic dari Revision sebelumnya ke yang baru (misalnya, 10% → 50% → 100%).
Jika Revision baru mengalami masalah pada tahap apa pun, atur kembali traffic-nya menjadi 0% dan kembalikan Revision sebelumnya ke 100%.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Men-deploy layanan Knative melalui Knative pada ASM. Untuk detailnya, lihat Gunakan Knative pada ASM untuk men-deploy aplikasi serverless.
Topik ini menggunakan nama domain default example.com. Untuk menggunakan nama domain kustom, lihat Atur nama domain kustom di Knative pada ASM.
Langkah 1: Buat Revision baru dengan traffic 0%
Buat Revision baru tanpa mengirimkan traffic produksi apa pun kepadanya. Hal ini memungkinkan Anda memastikan Revision berhasil diterapkan sebelum diekspos ke pengguna.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.
Klik tab Services. Temukan layanan Anda dan klik namanya. Di pojok kanan atas, klik Create Revision.
Pada langkah Basic Information, klik Advanced di bagian bawah. Klik Add di samping Environment Variables dan konfigurasikan pengaturan berikut. Klik Next.
Parameter Nilai Type Custom Variable Key TARGETValue/ValueFrom Knative on ASMPada langkah Traffic Splitting Settings, atur Percent % menjadi
0untuk Latest Revision dan100untuk Revision sebelumnya. Klik Create.CatatanPersentase traffic untuk semua Revision harus berjumlah total 100%.
Setelah Revision dibuat, klik tab Services dan klik nama layanan Anda. Di bagian Revision Information, verifikasi bahwa Revision baru muncul.
Jalankan perintah berikut untuk memastikan seluruh traffic masih diarahkan ke Revision sebelumnya: Output yang diharapkan: Setiap permintaan mengembalikan
Hello World!, yang mengonfirmasi bahwa Revision sebelumnya masih menangani 100% traffic.for i in $(seq 20); do curl http://helloworld-go.default.example.com; doneHello World!
Langkah 2: Alihkan traffic ke Revision baru
Tingkatkan persentase traffic untuk Revision baru secara bertahap sambil memantau adanya masalah.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.
Klik tab Services dan klik nama layanan Anda. Di pojok kanan atas, klik Split Traffic. Pada kotak dialog Split Traffic, atur Percent % menjadi
50untuk Revision terbaru dan Revision sebelumnya, lalu klik OK.Setelah Anda menyimpan pemisahan traffic, klik tab Services dan klik nama layanan Anda. Di bagian Revision Information, verifikasi persentase traffic yang telah diperbarui.
Kirimkan beberapa permintaan untuk memverifikasi bahwa traffic didistribusikan di antara kedua Revision: Output yang diharapkan (disingkat): Tanggapan bergantian antara
Hello World!(Revision sebelumnya) danHello Knative on ASM!(Revision baru), sesuai dengan pembagian 50/50.for i in $(seq 20); do curl http://helloworld-go.default.example.com; doneHello Knative on ASM! Hello Knative on ASM! Hello World! Hello Knative on ASM! Hello World! ...Jika Revision baru stabil, ulangi langkah 3 untuk meningkatkan persentase traffic-nya. Lanjutkan hingga Revision baru menangani 100% traffic.
Setelah Revision baru mencapai 100%, verifikasi pergantian tersebut: Output yang diharapkan: Setiap permintaan mengembalikan
Hello Knative on ASM!, yang mengonfirmasi bahwa rilis canary telah selesai.for i in $(seq 20); do curl http://helloworld-go.default.example.com; doneHello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! ...
Kembalikan ke Revision sebelumnya
Jika Revision baru menunjukkan error, latensi tinggi, atau perilaku tak terduga pada tahap apa pun selama rilis canary, segera lakukan rollback:
Pada halaman detail layanan, klik Split Traffic di pojok kanan atas.
Pada kotak dialog Split Traffic, atur Percent % menjadi
0untuk Revision baru dan100untuk Revision sebelumnya. Klik OK.Verifikasi rollback dengan mengirimkan permintaan: Semua tanggapan harus mengembalikan
Hello World!, yang mengonfirmasi bahwa traffic telah sepenuhnya dikembalikan ke Revision sebelumnya.for i in $(seq 20); do curl http://helloworld-go.default.example.com; done
Langkah selanjutnya
Setelah rilis canary, konfigurasikan autoscaling agar jumlah pod menyesuaikan secara otomatis dengan volume traffic. Knative Serving menambahkan kontainer Queue Proxy ke setiap pod yang melaporkan metrik konkurensi ke Knative Pod Autoscaler (KPA). KPA kemudian melakukan scaling jumlah pod berdasarkan volume permintaan konkuren. Untuk detailnya, lihat Aktifkan autoscaling pod berdasarkan jumlah permintaan.