All Products
Search
Document Center

Alibaba Cloud Service Mesh:Rilis canary layanan Knative dengan pemisahan traffic

Last Updated:Mar 12, 2026

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:

  1. Buat Revision baru dan tetapkan traffic-nya sebesar 0%.

  2. Verifikasi bahwa Revision baru berfungsi dengan benar.

  3. Secara bertahap alihkan traffic dari Revision sebelumnya ke yang baru (misalnya, 10% → 50% → 100%).

  4. 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:

Catatan

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.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.

  3. Klik tab Services. Temukan layanan Anda dan klik namanya. Di pojok kanan atas, klik Create Revision.

  4. Pada langkah Basic Information, klik Advanced di bagian bawah. Klik Add di samping Environment Variables dan konfigurasikan pengaturan berikut. Klik Next.

    ParameterNilai
    TypeCustom
    Variable KeyTARGET
    Value/ValueFromKnative on ASM
  5. Pada langkah Traffic Splitting Settings, atur Percent % menjadi 0 untuk Latest Revision dan 100 untuk Revision sebelumnya. Klik Create.

    Catatan

    Persentase traffic untuk semua Revision harus berjumlah total 100%.

  6. Setelah Revision dibuat, klik tab Services dan klik nama layanan Anda. Di bagian Revision Information, verifikasi bahwa Revision baru muncul.

  7. 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; done
       Hello World!

Langkah 2: Alihkan traffic ke Revision baru

Tingkatkan persentase traffic untuk Revision baru secara bertahap sambil memantau adanya masalah.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.

  3. Klik tab Services dan klik nama layanan Anda. Di pojok kanan atas, klik Split Traffic. Pada kotak dialog Split Traffic, atur Percent % menjadi 50 untuk Revision terbaru dan Revision sebelumnya, lalu klik OK.

  4. Setelah Anda menyimpan pemisahan traffic, klik tab Services dan klik nama layanan Anda. Di bagian Revision Information, verifikasi persentase traffic yang telah diperbarui.

  5. Kirimkan beberapa permintaan untuk memverifikasi bahwa traffic didistribusikan di antara kedua Revision: Output yang diharapkan (disingkat): Tanggapan bergantian antara Hello World! (Revision sebelumnya) dan Hello Knative on ASM! (Revision baru), sesuai dengan pembagian 50/50.

       for i in $(seq 20); do curl http://helloworld-go.default.example.com; done
       Hello Knative on ASM!
       Hello Knative on ASM!
       Hello World!
       Hello Knative on ASM!
       Hello World!
       ...
  6. Jika Revision baru stabil, ulangi langkah 3 untuk meningkatkan persentase traffic-nya. Lanjutkan hingga Revision baru menangani 100% traffic.

  7. 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; done
       Hello 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:

  1. Pada halaman detail layanan, klik Split Traffic di pojok kanan atas.

  2. Pada kotak dialog Split Traffic, atur Percent % menjadi 0 untuk Revision baru dan 100 untuk Revision sebelumnya. Klik OK.

  3. 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.