Jika Anda menghadapi tantangan kompatibilitas dan stabilitas saat merilis versi baru aplikasi selama pengembangan iteratif, Anda dapat melakukan rilis canary berdasarkan pemisahan trafik untuk Layanan Knative dengan menggunakan Knative pada ASM. ASM adalah singkatan dari Service Mesh. Saat membuat Layanan Knative, Knative secara otomatis membuat Revisi pertama untuk Layanan tersebut. Setiap kali konfigurasi Layanan Knative diperbarui atau diubah, Knative membuat Revisi baru, dan Anda dapat memodifikasi persentase trafik yang didistribusikan ke Revisi yang berbeda untuk memverifikasi Revisi baru secara real-time dengan akurat. Ini secara signifikan mengurangi risiko potensial dari penyebaran besar-besaran Revisi baru, membantu memastikan kontinuitas layanan dan pengalaman pengguna, serta menemukan dan memperbaiki masalah secara tepat waktu.
Prasyarat
Layanan Knative harus dibuat dengan menggunakan Knative pada ASM. Untuk informasi lebih lanjut, lihat Gunakan Knative pada ASM untuk menyebarkan aplikasi tanpa server.
Dalam topik ini, nama domain default example.com digunakan untuk menunjukkan cara melakukan rilis canary untuk Layanan. Jika Anda perlu menggunakan nama domain kustom, lihat Atur Nama Domain Kustom di Knative pada ASM.
Buat Revisi di konsol ACK
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Klik tab Services. Dalam daftar Layanan, temukan Layanan yang diinginkan dan klik namanya. Di pojok kanan atas halaman yang ditampilkan, klik Create Revision.
Di langkah Basic Information, klik Advanced di bagian bawah. Kemudian, klik Add di sebelah Environment Variables, dan atur Type ke Custom, Variable Key ke TARGET, dan Value/ValueFrom ke Knative on ASM. Lalu, klik Next.
Di langkah Traffic Splitting Settings, atur Percent % ke 0 untuk Latest Revision dan 100 untuk Revisi sebelumnya. Lalu, klik Create.
CatatanTotal persentase trafik untuk semua Revisi harus mencapai 100%.
Setelah Revisi dibuat, klik tab Services. Dalam daftar Layanan, klik nama Layanan yang diinginkan. Di bagian Revision Information, Anda dapat melihat detail Revisi yang telah dibuat.
Jalankan perintah berikut untuk mengakses layanan:
curl http://helloworld-go.default.example.comOutput yang diharapkan:
Hello World!Output yang diharapkan menunjukkan bahwa semua permintaan untuk mengakses layanan helloworld-go dikirim ke Revisi sebelumnya.
Modifikasi persentase pemisahan trafik untuk melakukan rilis canary untuk Layanan
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Klik tab Services. Dalam daftar Layanan, klik nama Layanan yang diinginkan. Di pojok kanan atas halaman yang ditampilkan, klik Split Traffic. Dalam kotak dialog Pisahkan Trafik, atur Persen % ke 50 untuk Revisi terbaru dan Revisi sebelumnya lalu klik OK.
Setelah berhasil mengonfigurasi persentase pemisahan trafik, klik tab Services. Dalam daftar Layanan, klik nama Layanan yang diinginkan. Di bagian Revision Information halaman yang ditampilkan, Anda dapat melihat detail Revisi baru dan sebelumnya.
Jalankan perintah berikut untuk mengakses layanan:
for i in `seq 20`; do curl http://helloworld-go.default.example.com; done;Output yang diharapkan:
Hello Knative on ASM! Hello Knative on ASM! Hello World! Hello Knative on ASM! Hello World! Hello World! Hello World! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello World! Hello Knative on ASM! Hello World! Hello Knative on ASM! Hello Knative on ASM! Hello World! Hello World!Output yang diharapkan menunjukkan bahwa permintaan untuk mengakses layanan helloworld-go hampir merata didistribusikan ke Revisi baru dan Revisi sebelumnya.
Secara bertahap sesuaikan pengaturan parameter Percent % hingga persentase trafik untuk Revisi baru mencapai 100%.
Selama proses ini, Anda dapat mengubah nilai parameter Persen % untuk melakukan rollback jika Anda menemukan masalah di Revisi baru.
Jalankan perintah berikut untuk mengakses layanan lagi:
for i in `seq 20`; do curl http://helloworld-go.default.example.com; done;Output yang diharapkan:
Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM!Output yang diharapkan menunjukkan bahwa semua permintaan untuk mengakses layanan helloworld-go dikirim ke Revisi baru. Ini menunjukkan bahwa rilis canary untuk layanan berhasil dilakukan.
Operasi terkait
Knative Serving menambahkan kontainer Queue Proxy ke setiap pod. Kontainer Queue Proxy mengirim metrik konkurensi dari kontainer aplikasi ke Knative Pod Autoscaler (KPA). Setelah KPA menerima metrik, KPA secara otomatis menyesuaikan jumlah pod yang disediakan untuk Deployment berdasarkan jumlah permintaan bersamaan dan algoritma autoscaling terkait. Untuk informasi lebih lanjut, lihat Aktifkan Autoscaling Pod Berdasarkan Jumlah Permintaan.