Mengarahkan semua pengguna ke versi antarmuka depan yang baru sekaligus berisiko mengekspos seluruh pengguna terhadap cacat. Rilis canary antarmuka depan mengarahkan sebagian kecil pengguna—yang diidentifikasi melalui nilai cookie atau header—ke versi baru terlebih dahulu. Anda dapat memantau potensi masalah pada kelompok kecil tersebut, lalu secara bertahap memperluas distribusi atau melakukan rollback tanpa memengaruhi pengguna lain.
Gateway cloud-native Microservices Engine (MSE) mendukung rilis canary antarmuka depan melalui plug-in frontend-gray. Plug-in ini memeriksa setiap permintaan untuk mencari identifikasi pengguna, mencocokkannya dengan aturan canary yang telah dikonfigurasi, lalu mengarahkan permintaan tersebut ke versi dasar atau canary.
Cara kerja
Setiap permintaan pengguna melewati gateway cloud-native MSE. Setelah autentikasi, cookie permintaan berisi identifikasi unik pengguna, seperti userid: 001. Plug-in frontend-gray mengevaluasi identifikasi ini terhadap aturan yang telah dikonfigurasi dan meneruskan permintaan ke versi antarmuka depan yang sesuai.
Permintaan pengguna --> Gateway cloud-native --> plug-in frontend-gray mengevaluasi userid
|-- Sesuai aturan canary --> Versi canary
|-- Tidak sesuai --> Versi dasarPlug-in ini mendukung dua strategi perutean:
| Strategi | Cara kerja | Kasus penggunaan |
|---|---|---|
| Berdasarkan aturan | Mengarahkan pengguna yang identifikasinya sesuai dengan daftar putih (grayKeyValue) ke versi canary | Menargetkan pengguna uji tertentu atau tim internal |
| Berdasarkan bobot | Mengarahkan persentase traffic yang tidak sesuai aturan ke versi canary (weight) | Meluncurkan secara bertahap ke audiens yang lebih luas |
Jika kedua strategi dikonfigurasi, pencocokan berbasis aturan dievaluasi terlebih dahulu. Jika permintaan tidak sesuai dengan aturan apa pun, perutean berbasis bobot akan diterapkan.
Untuk memperluas rilis canary hingga ke seluruh rantai panggilan layanan mikro, gabungkan pendekatan ini dengan rilis canary ujung ke ujung berbasis gateway cloud-native. Pendekatan ini berguna ketika antarmuka depan Anda memanggil layanan backend Spring Cloud atau Dubbo yang juga memiliki versi canary.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster ACK yang dikelola (Container Service for Kubernetes). Untuk informasi lebih lanjut, lihat Buat kluster ACK yang dikelola
gateway cloud-native MSE. Untuk informasi lebih lanjut, lihat Buat gateway cloud-native MSE
Pilih pendekatan penerapan
MSE mendukung empat pendekatan untuk rilis canary antarmuka depan. Pilih pendekatan yang sesuai dengan infrastruktur Anda:
| Pendekatan | Kapan digunakan | Perbedaan utama |
|---|---|---|
| Gateway MSE Ingress | Beban kerja Kubernetes dengan perutean berbasis Ingress | Pemisahan traffic ditentukan melalui anotasi Ingress |
| Kluster ACK dengan rute konsol MSE | Beban kerja Kubernetes dengan perutean yang dikelola melalui konsol | Rute dikonfigurasi di Konsol MSE, bukan melalui resource Ingress |
| Instans ECS | Aplikasi yang diterapkan langsung di ECS | Layanan didaftarkan berdasarkan alamat IP tetap |
| CDN atau OSS | Aset antarmuka depan statis yang dihosting di OSS | Plug-in menulis ulang path untuk menyajikan aset versi dari OSS |
Gateway MSE Ingress
Langkah 1: Terapkan aplikasi dasar dan canary
Terapkan dua versi aplikasi antarmuka depan di kluster ACK: Penyebaran dasar dan Penyebaran canary, masing-masing dengan Service dan resource Ingress sendiri. Untuk detailnya, lihat Buat aplikasi tanpa status menggunakan Deployment.
Pasang MSE Ingress Controller sebelum melanjutkan. Untuk instruksi penyiapan, lihat Gunakan gateway MSE Ingress untuk mengakses layanan di kluster ACK dan kluster ACS.
Ingress canary menggunakan tiga anotasi untuk mengaktifkan pemisahan traffic berbasis header:
| Anotasi | Tujuan |
|---|---|
nginx.ingress.kubernetes.io/canary: 'true' | Menandai Ingress ini sebagai rute canary |
nginx.ingress.kubernetes.io/canary-by-header: x-higress-tag | Menentukan header yang digunakan untuk keputusan perutean |
nginx.ingress.kubernetes.io/canary-by-header-value: gray | Mengarahkan permintaan dengan x-higress-tag: gray ke Service canary |
Langkah 2: Konfigurasikan plug-in frontend-gray
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.
Di panel navigasi kiri, klik Plug-in Marketplace.
Di halaman Plug-in Marketplace, cari
frontend-graylalu klik kartu plug-infrontend-gray.Klik tab Plug-in Configuration, pilih Domain-level plug-in rules, lalu klik Add Rule. Konfigurasikan aturan berikut: Aturan ini mengarahkan pengguna dengan nilai
userid00000002dan00000003ke versi canary (gray). Semua pengguna lain melihat versibase. Untuk semua bidang konfigurasi yang tersedia, lihat Referensi konfigurasi plug-in dan dokumentasi plug-in Higress frontend-gray.grayKey: userid rules: - name: beta-user grayKeyValue: - "00000002" - "00000003" baseDeployment: version: base grayDeployments: - name: beta-user version: gray enabled: true
Langkah 3: Verifikasi hasil
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters. Klik kluster yang telah Anda buat. Di panel navigasi kiri, pilih Network > Ingresses untuk menemukan titik akhir publik.

Buka titik akhir publik (misalnya,
nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akunadmin/ice. Pastikan ID pengguna adalah00000001dan Anda melihat versi dasar.Masuk dengan akun
user/ice. Pastikan ID pengguna adalah00000002dan Anda melihat versi canary.
Kluster ACK dengan rute Konsol MSE
Pendekatan ini menggunakan beban kerja Kubernetes yang sama tetapi mengonfigurasi perutean melalui Konsol MSE, bukan melalui resource Ingress.
Langkah 1: Terapkan aplikasi dasar dan canary
Terapkan Deployment dan Service dasar serta canary di kluster ACK. Gunakan manifes Deployment dan Service yang sama seperti pendekatan gateway MSE Ingress, tetapi hilangkan resource Ingress. Untuk detailnya, lihat Buat aplikasi tanpa status menggunakan Deployment.
Langkah 2: Konfigurasikan plug-in frontend-gray
Ikuti langkah konfigurasi plug-in yang sama seperti pendekatan gateway MSE Ingress.
Langkah 3: Tambahkan sumber layanan
Daftarkan kluster ACK Anda sebagai sumber layanan agar gateway dapat menemukan Service Kubernetes Anda.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik tab Source.
Klik Add Source. Di panel Add Source, pilih Container Service untuk Source Type, pilih kluster ACK Anda dari daftar drop-down ACK/ASK/ACS Cluster, lalu klik OK.

Langkah 4: Tambahkan layanan
Impor Service Kubernetes dasar dan canary ke gateway.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik tab Services.
Klik Add Service. Di panel Add Service, konfigurasikan parameter, lalu klik OK.

Langkah 5: Tambahkan rute dasar
Buat rute yang mengarahkan traffic default ke Service antarmuka depan dasar.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik Add Route.
Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

Langkah 6: Tambahkan rute canary
Buat rute yang mengarahkan traffic canary ke Service antarmuka depan canary.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik Add Route.
Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.
CatatanAtur versi menjadi
gray. Nilai ini sesuai dengangrayDeployments.versiondalam konfigurasi plug-infrontend-gray.
Langkah 7: Verifikasi hasil
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di halaman Overview, klik tab Endpoint untuk menemukan titik akhir publik.

Buka titik akhir publik (misalnya,
nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akunadmin/ice. Pastikan ID pengguna adalah00000001dan Anda melihat versi dasar.Masuk dengan akun
user/ice. Pastikan ID pengguna adalah00000002dan Anda melihat versi canary.
Instans ECS
Gunakan pendekatan ini ketika aplikasi antarmuka depan dijalankan langsung di instans Elastic Compute Service (ECS), bukan di Kubernetes.
Langkah 1: Terapkan dua versi aplikasi antarmuka depan di instans ECS
Terapkan versi dasar dan canary di instans ECS yang sama atau berbeda:
Titik akhir versi dasar:
120.***.137.243:80Titik akhir versi canary:
120.***.137.243:8081
Langkah 2: Tambahkan layanan
Daftarkan kedua versi antarmuka depan sebagai layanan berbasis alamat tetap di gateway.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik tab Services.
Klik Add Service. Di panel Add Service, pilih Fixed Address dari daftar drop-down Service Source, konfigurasikan parameter, lalu klik OK.


Langkah 3: Tambahkan rute dasar
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik Add Route.
Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

Langkah 4: Tambahkan rute canary
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik Add Route.
Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.
CatatanAtur versi menjadi
gray. Nilai ini sesuai dengangrayDeployments.versiondalam konfigurasi plug-infrontend-gray.
Langkah 5: Konfigurasikan plug-in frontend-gray
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Plug-in Marketplace.
Di halaman Plug-in Marketplace, cari
frontend-graylalu klik kartu plug-infrontend-gray.Klik tab Plug-in Configuration, pilih Domain-level plug-in rules, lalu klik Add Rule. Konfigurasikan aturan berikut: Untuk semua bidang konfigurasi yang tersedia, lihat Referensi konfigurasi plug-in dan dokumentasi plug-in Higress frontend-gray.
grayKey: userid rules: - name: beta-user grayKeyValue: - "00000002" - "00000003" baseDeployment: version: base grayDeployments: - name: beta-user version: gray enabled: true
Langkah 6: Verifikasi hasil
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di halaman Overview, klik tab Endpoint untuk menemukan titik akhir publik.

Buka titik akhir publik (misalnya,
nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akunadmin/ice. Pastikan ID pengguna adalah00000001dan Anda melihat versi dasar.Masuk dengan akun
user/ice. Pastikan ID pengguna adalah00000002dan Anda melihat versi canary.
CDN atau OSS
Gunakan pendekatan ini ketika aset antarmuka depan dihosting di Object Storage Service (OSS) dan secara opsional disajikan melalui CDN. Plug-in frontend-gray menulis ulang path permintaan untuk menyajikan aset versi dari direktori OSS yang berbeda.
Langkah 1: Siapkan struktur file OSS Anda
Atur aset antarmuka depan Anda di OSS dengan direktori berbasis versi:
Langkah 2: Tambahkan layanan
Daftarkan titik akhir OSS Anda sebagai layanan berbasis nama domain DNS di gateway.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik tab Services.
Klik Add Service. Di panel Add Service, pilih DNS Domain Name dari daftar drop-down Service Source, masukkan titik akhir OSS, lalu klik OK.
PentingJika OSS dan gateway berada di wilayah yang sama, gunakan titik akhir OSS internal untuk menghindari biaya jaringan publik. Jika berada di wilayah berbeda, gunakan titik akhir publik.

Langkah 3: Tambahkan rute
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Routes. Klik Add Route.
Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

Langkah 4: Konfigurasikan plug-in frontend-gray
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di panel navigasi kiri, klik Plug-in Marketplace.
Di halaman Plug-in Marketplace, cari
frontend-graylalu klik kartu plug-infrontend-gray.Klik tab Plug-in Configuration, pilih Domain-level plug-in rules, lalu klik Add Rule. Konfigurasikan aturan berikut: Pendekatan CDN/OSS berbeda dari pendekatan lain dalam bidang-bidang berikut: Untuk semua bidang konfigurasi yang tersedia, lihat Referensi konfigurasi plug-in dan dokumentasi plug-in Higress frontend-gray.
Bidang Deskripsi rewrite.hostTitik akhir OSS yang menghosting aset antarmuka depan Anda rewrite.indexRoutingMemetakan path URL ke file index.htmlversi di OSS. Placeholder{version}diganti dengan string versi (devatau0.0.1)rewrite.fileRoutingMemetakan path URL ke direktori aset statis versi di OSS baseDeployment.versionAtur ke dev(nama direktori versi dasar di OSS)grayDeployments[0].versionAtur ke 0.0.1(nama direktori versi canary di OSS)grayKey: userid rules: - name: beta-user grayKeyValue: - "00000002" - "00000003" rewrite: host: xx.oss-cn-shanghai.aliyuncs.com ## Ganti dengan titik akhir OSS Anda indexRouting: "/app1": "/project-a/app1/{version}/index.html" # Penulisan ulang path untuk halaman entri HTML fileRouting: "/app1": "/project-a/app1/{version}" # Penulisan ulang path untuk CSS, JavaScript, dan gambar baseDeployment: version: dev grayDeployments: - name: beta-user version: 0.0.1 enabled: true
Langkah 5: Verifikasi hasil
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.
Di halaman Overview, klik tab Endpoint untuk menemukan titik akhir publik.

Buka titik akhir publik (misalnya,
nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akunadmin/ice. Pastikan ID pengguna adalah00000001dan Anda melihat versi dasar.Masuk dengan akun
user/ice. Pastikan ID pengguna adalah00000002dan Anda melihat versi canary.
Referensi konfigurasi plug-in
Tabel berikut mencantumkan bidang konfigurasi utama untuk plug-in frontend-gray. Untuk referensi lengkap semua bidang, lihat dokumentasi plug-in Higress frontend-gray.
| Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
grayKey | string | Tidak | Nama kunci yang digunakan untuk mengekstrak identifikasi pengguna dari cookie atau header. Contoh: userid |
graySubKey | string | Tidak | Sub-kunci JSON di dalam nilai grayKey. Gunakan ini ketika identifikasi pengguna tertanam dalam cookie atau header berformat JSON |
rules | array | Ya | Daftar aturan canary. Setiap aturan menentukan nama dan kumpulan nilai identifikasi pengguna untuk dicocokkan |
rules[].name | string | Ya | Nama aturan. Harus sesuai dengan entri yang sesuai di grayDeployments |
rules[].grayKeyValue | array of strings | Tidak | Daftar nilai identifikasi pengguna. Permintaan dengan identifikasi yang sesuai diarahkan ke versi canary yang sesuai |
rules[].grayTagKey | string | Tidak | Kunci alternatif untuk pencocokan. Gunakan ini untuk perutean berbasis tag, bukan berbasis ID pengguna |
rules[].grayTagValue | array of strings | Tidak | Daftar nilai tag yang dicocokkan saat menggunakan grayTagKey |
baseDeployment.version | string | Ya | Identifikasi versi untuk penerapan dasar (produksi) |
grayDeployments | array | Ya | Daftar penerapan canary |
grayDeployments[].name | string | Ya | Nama penerapan canary. Harus sesuai dengan nama aturan di rules |
grayDeployments[].version | string | Ya | Identifikasi versi untuk penerapan canary ini |
grayDeployments[].enabled | boolean | Ya | Apakah penerapan canary ini aktif |
grayDeployments[].weight | integer (0--100) | Tidak | Persentase traffic yang tidak sesuai aturan yang diarahkan ke versi canary ini. Default-nya 0 |
rewrite | object | Tidak | Konfigurasi penulisan ulang path untuk penerapan CDN/OSS |
rewrite.host | string | Tidak | Hostname titik akhir OSS |
rewrite.indexRouting | map | Tidak | Memetakan path URL ke file index.html versi. Gunakan {version} sebagai placeholder |
rewrite.fileRouting | map | Tidak | Memetakan path URL ke direktori aset statis versi. Gunakan {version} sebagai placeholder |
injection | object | Tidak | Konfigurasi injeksi HTML. Menyuntikkan skrip atau gaya ke halaman entri HTML |
injection.head | array of strings | Tidak | Potongan HTML yang disuntikkan ke tag <head> |
injection.body.first | array of strings | Tidak | Potongan HTML yang disuntikkan di awal tag <body> |
injection.body.last | array of strings | Tidak | Potongan HTML yang disuntikkan di akhir tag <body> |
Monitor dan rollback
Setelah menerapkan rilis canary, pantau versi canary untuk mendeteksi masalah sebelum mempromosikannya ke semua pengguna.
Monitor versi canary:
Periksa log gateway MSE untuk tingkat error pada rute canary. Bandingkan tingkat error antara versi dasar dan canary.
Gunakan Cloud Monitor atau Application Real-Time Monitoring Service (ARMS) untuk melacak waktu pemuatan halaman, error JavaScript, dan tingkat keberhasilan API untuk pengguna canary.
Siapkan alert untuk metrik abnormal seperti peningkatan tingkat error HTTP 5xx atau peningkatan latensi pemuatan halaman pada rute canary.
Rollback versi canary:
Jika versi canary menunjukkan masalah, lakukan rollback dengan menonaktifkan penerapan canary:
Masuk ke Konsol MSE. Buka Plug-in Marketplace gateway Anda dan buka konfigurasi plug-in
frontend-gray.Atur
enabled: falsedi bagiangrayDeployments, atau hapus aturan canary sepenuhnya:grayDeployments: - name: beta-user version: gray enabled: false # Menonaktifkan perutean canary; semua traffic dialihkan ke versi dasarSimpan konfigurasi. Semua traffic langsung kembali ke versi dasar.
Promosikan versi canary:
Setelah validasi berhasil, promosikan versi canary dengan memperbarui image penerapan dasar ke image versi canary dan menghapus aturan canary dari konfigurasi plug-in.
FAQ
Apakah saya bisa menggunakan kebijakan rewrite dan rilis canary antarmuka depan secara bersamaan?
Hal ini bergantung pada sumber layanan Anda:
Sumber non-CDN/OSS (ACK, ECS): Ya. Kebijakan rewrite dan rilis canary bekerja secara independen dan tidak saling bertentangan.
Sumber CDN atau OSS: Tidak. Plug-in
frontend-graymenangani penulisan ulang path secara internal melalui blok konfigurasirewrite. Menambahkan kebijakan rewrite terpisah menyebabkan konflik dan dapat mengembalikan error HTTP 403.
Apakah saya bisa menyuntikkan variabel global ke halaman HTML?
Ya. Gunakan blok konfigurasi injection untuk menyuntikkan JavaScript atau CSS ke halaman entri HTML. Injeksi mendukung tiga posisi:
| Posisi | Deskripsi |
|---|---|
injection.head | Disuntikkan ke tag <head>. Biasanya digunakan untuk gaya CSS atau tag meta |
injection.body.first | Disuntikkan di awal tag <body> |
injection.body.last | Disuntikkan di akhir tag <body> |
Contoh konfigurasi:
grayKey: userid
rules:
- name: inner-user
grayKeyValue:
- '00000001'
- '00000005'
baseDeployment:
version: base
grayDeployments:
- name: beta-user
version: gray
enabled: true
weight: 80
injection:
head:
- <script>console.log('Header')</script>
body:
first:
- <script>console.log('hello world before')</script>
- <script>console.log('hello world before1')</script>
last:
- <script>console.log('hello world after')</script>
- <script>console.log('hello world after2')</script>Contoh ini juga menunjukkan rilis canary berbasis bobot. Dengan weight: 80, 80% traffic yang tidak sesuai aturan diarahkan ke versi canary, dan 20% ke versi dasar.
Kapan versi canary mulai berlaku untuk pengguna?
Versi canary mulai berlaku pada pemuatan halaman penuh berikutnya, bukan secara real-time. Jika pengguna A sedang menggunakan versi 0.0.1 dan Anda menerbitkan versi 0.0.2 dengan aturan canary yang sesuai untuk pengguna A, versi baru hanya muncul setelah pengguna A melakukan refresh atau memuat ulang halaman.
Perilaku ini dirancang untuk dua alasan:
Pengalaman pengguna: Mengganti versi di tengah sesi dapat mengganggu interaksi yang sedang berlangsung, misalnya membuat tombol menghilang saat pengguna sedang mengkliknya.
Penguraian keterkaitan arsitektur: Penggantian versi secara real-time akan mengharuskan backend mengontrol versi antarmuka depan secara dinamis, sehingga menghubungkan rilis antarmuka depan dan backend serta mencegah caching CDN.
Kapan refresh halaman terjadi?
Refresh halaman biasanya terjadi ketika:
Sesi berakhir dan pengguna melakukan autentikasi ulang.
Pengguna menavigasi ke halaman login.
Untuk memuat konfigurasi canary terbaru saat login, lakukan redirect dengan navigasi halaman penuh:
async function handleLogin(values: LoginParams) {
try {
const result = await login(values);
if (result.success) {
message.success('Logon succeeded.');
await updateUserInfo();
const urlParams = new URL(window.location.href).searchParams;
// Redirect halaman penuh memastikan versi canary dimuat
window.location.href = `${urlParams.get('redirect') || '/'}`;
return;
}
console.log(result);
setLoginResult(result);
} catch (error) {
message.error('Logon failed. Try again.');
console.log(error);
}
}Baris kuncinya adalah window.location.href = .... Ini memicu navigasi halaman penuh, memaksa browser meminta halaman dari gateway. Plug-in frontend-gray kemudian mengevaluasi aturan canary dan menyajikan versi yang benar.