All Products
Search
Document Center

Microservices Engine:Implementasikan rilis canary antarmuka depan menggunakan gateway cloud-native MSE

Last Updated:Mar 12, 2026

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 dasar

Plug-in ini mendukung dua strategi perutean:

StrategiCara kerjaKasus penggunaan
Berdasarkan aturanMengarahkan pengguna yang identifikasinya sesuai dengan daftar putih (grayKeyValue) ke versi canaryMenargetkan pengguna uji tertentu atau tim internal
Berdasarkan bobotMengarahkan 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.

Catatan

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:

Pilih pendekatan penerapan

MSE mendukung empat pendekatan untuk rilis canary antarmuka depan. Pilih pendekatan yang sesuai dengan infrastruktur Anda:

PendekatanKapan digunakanPerbedaan utama
Gateway MSE IngressBeban kerja Kubernetes dengan perutean berbasis IngressPemisahan traffic ditentukan melalui anotasi Ingress
Kluster ACK dengan rute konsol MSEBeban kerja Kubernetes dengan perutean yang dikelola melalui konsolRute dikonfigurasi di Konsol MSE, bukan melalui resource Ingress
Instans ECSAplikasi yang diterapkan langsung di ECSLayanan didaftarkan berdasarkan alamat IP tetap
CDN atau OSSAset antarmuka depan statis yang dihosting di OSSPlug-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.

Penting

Pasang MSE Ingress Controller sebelum melanjutkan. Untuk instruksi penyiapan, lihat Gunakan gateway MSE Ingress untuk mengakses layanan di kluster ACK dan kluster ACS.

Perluas YAML

frontend-base.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - image: 'registry.cn-hangzhou.aliyuncs.com/mse-demo-hz/user-gray:base'
          imagePullPolicy: Always
          name: frontend
          resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-base-svc
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: frontend
  type: ClusterIP
frontend-gray.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-gray
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend-gray
  template:
    metadata:
      labels:
        app: frontend-gray
    spec:
      containers:
        - image: 'registry.cn-hangzhou.aliyuncs.com/mse-demo-hz/user-gray:gray'
          imagePullPolicy: Always
          name: frontend-gray
          resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-gray-svc
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: frontend-gray
  type: ClusterIP

Ingress canary menggunakan tiga anotasi untuk mengaktifkan pemisahan traffic berbasis header:

AnotasiTujuan
nginx.ingress.kubernetes.io/canary: 'true'Menandai Ingress ini sebagai rute canary
nginx.ingress.kubernetes.io/canary-by-header: x-higress-tagMenentukan header yang digunakan untuk keputusan perutean
nginx.ingress.kubernetes.io/canary-by-header-value: grayMengarahkan permintaan dengan x-higress-tag: gray ke Service canary

Langkah 2: Konfigurasikan plug-in frontend-gray

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Plug-in Marketplace.

  4. Di halaman Plug-in Marketplace, cari frontend-gray lalu klik kartu plug-in frontend-gray.

  5. Klik tab Plug-in Configuration, pilih Domain-level plug-in rules, lalu klik Add Rule. Konfigurasikan aturan berikut: Aturan ini mengarahkan pengguna dengan nilai userid 00000002 dan 00000003 ke versi canary (gray). Semua pengguna lain melihat versi base. 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

    Plugin configuration rule panel

Langkah 3: Verifikasi hasil

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

    ACK console Ingresses view

  2. Buka titik akhir publik (misalnya, nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akun admin/ice. Pastikan ID pengguna adalah 00000001 dan Anda melihat versi dasar.

  3. Masuk dengan akun user/ice. Pastikan ID pengguna adalah 00000002 dan 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.

Perluas YAML

frontend-base.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - image: 'registry.cn-hangzhou.aliyuncs.com/mse-demo-hz/user-gray:base'
          imagePullPolicy: Always
          name: frontend
          resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-base-svc
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: frontend
  type: ClusterIP
frontend-gray.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-gray
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend-gray
  template:
    metadata:
      labels:
        app: frontend-gray
    spec:
      containers:
        - image: 'registry.cn-hangzhou.aliyuncs.com/mse-demo-hz/user-gray:gray'
          imagePullPolicy: Always
          name: frontend-gray
          resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-gray-svc
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: frontend-gray
  type: ClusterIP

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.

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik tab Source.

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

    Add Source panel

Langkah 4: Tambahkan layanan

Impor Service Kubernetes dasar dan canary ke gateway.

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik tab Services.

  4. Klik Add Service. Di panel Add Service, konfigurasikan parameter, lalu klik OK.

    Add Service panel

Langkah 5: Tambahkan rute dasar

Buat rute yang mengarahkan traffic default ke Service antarmuka depan dasar.

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik Add Route.

  4. Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

    Add Route page -- base route

Langkah 6: Tambahkan rute canary

Buat rute yang mengarahkan traffic canary ke Service antarmuka depan canary.

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik Add Route.

  4. Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

    Catatan

    Atur versi menjadi gray. Nilai ini sesuai dengan grayDeployments.version dalam konfigurasi plug-in frontend-gray.

    Add Route page -- canary route

Langkah 7: Verifikasi hasil

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di halaman Overview, klik tab Endpoint untuk menemukan titik akhir publik.

    Gateway endpoint

  4. Buka titik akhir publik (misalnya, nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akun admin/ice. Pastikan ID pengguna adalah 00000001 dan Anda melihat versi dasar.

  5. Masuk dengan akun user/ice. Pastikan ID pengguna adalah 00000002 dan 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:80

  • Titik akhir versi canary: 120.***.137.243:8081

Langkah 2: Tambahkan layanan

Daftarkan kedua versi antarmuka depan sebagai layanan berbasis alamat tetap di gateway.

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik tab Services.

  4. Klik Add Service. Di panel Add Service, pilih Fixed Address dari daftar drop-down Service Source, konfigurasikan parameter, lalu klik OK.

    Add Service -- Fixed Address (base)

    Add Service -- Fixed Address (canary)

Langkah 3: Tambahkan rute dasar

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik Add Route.

  4. Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

    Add Route page -- base route

Langkah 4: Tambahkan rute canary

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik Add Route.

  4. Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

    Catatan

    Atur versi menjadi gray. Nilai ini sesuai dengan grayDeployments.version dalam konfigurasi plug-in frontend-gray.

    Add Route page -- canary route

Langkah 5: Konfigurasikan plug-in frontend-gray

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Plug-in Marketplace.

  4. Di halaman Plug-in Marketplace, cari frontend-gray lalu klik kartu plug-in frontend-gray.

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

    Plugin configuration rule panel

Langkah 6: Verifikasi hasil

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di halaman Overview, klik tab Endpoint untuk menemukan titik akhir publik.

    Gateway endpoint

  4. Buka titik akhir publik (misalnya, nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akun admin/ice. Pastikan ID pengguna adalah 00000001 dan Anda melihat versi dasar.

  5. Masuk dengan akun user/ice. Pastikan ID pengguna adalah 00000002 dan 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:

Perluas YAML

- app1                          # Aplikasi
  - dev                         # Versi dasar (pengembangan)
    - index.html
    - js/
    - css/
    - images/
  - 0.0.1                      # Versi canary 1
    - index.html
    - js/
    - css/
    - images/
  - 0.0.2                      # Versi canary 2
    - index.html
    - js/
    - css/
    - images/
- app2
  - dev/
  - 0.0.1/
  - 0.0.2/

Langkah 2: Tambahkan layanan

Daftarkan titik akhir OSS Anda sebagai layanan berbasis nama domain DNS di gateway.

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik tab Services.

  4. Klik Add Service. Di panel Add Service, pilih DNS Domain Name dari daftar drop-down Service Source, masukkan titik akhir OSS, lalu klik OK.

    Penting

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

    Add Service -- DNS Domain Name

Langkah 3: Tambahkan rute

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Klik Add Route.

  4. Di halaman Add Route, konfigurasikan parameter, lalu klik Save and Advertise.

    Add Route page -- CDN/OSS

Langkah 4: Konfigurasikan plug-in frontend-gray

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Plug-in Marketplace.

  4. Di halaman Plug-in Marketplace, cari frontend-gray lalu klik kartu plug-in frontend-gray.

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

    BidangDeskripsi
    rewrite.hostTitik akhir OSS yang menghosting aset antarmuka depan Anda
    rewrite.indexRoutingMemetakan path URL ke file index.html versi di OSS. Placeholder {version} diganti dengan string versi (dev atau 0.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

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Klik ID gateway tersebut.

  3. Di halaman Overview, klik tab Endpoint untuk menemukan titik akhir publik.

    Gateway endpoint

  4. Buka titik akhir publik (misalnya, nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com). Masuk dengan akun admin/ice. Pastikan ID pengguna adalah 00000001 dan Anda melihat versi dasar.

  5. Masuk dengan akun user/ice. Pastikan ID pengguna adalah 00000002 dan 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.

BidangTipeWajibDeskripsi
grayKeystringTidakNama kunci yang digunakan untuk mengekstrak identifikasi pengguna dari cookie atau header. Contoh: userid
graySubKeystringTidakSub-kunci JSON di dalam nilai grayKey. Gunakan ini ketika identifikasi pengguna tertanam dalam cookie atau header berformat JSON
rulesarrayYaDaftar aturan canary. Setiap aturan menentukan nama dan kumpulan nilai identifikasi pengguna untuk dicocokkan
rules[].namestringYaNama aturan. Harus sesuai dengan entri yang sesuai di grayDeployments
rules[].grayKeyValuearray of stringsTidakDaftar nilai identifikasi pengguna. Permintaan dengan identifikasi yang sesuai diarahkan ke versi canary yang sesuai
rules[].grayTagKeystringTidakKunci alternatif untuk pencocokan. Gunakan ini untuk perutean berbasis tag, bukan berbasis ID pengguna
rules[].grayTagValuearray of stringsTidakDaftar nilai tag yang dicocokkan saat menggunakan grayTagKey
baseDeployment.versionstringYaIdentifikasi versi untuk penerapan dasar (produksi)
grayDeploymentsarrayYaDaftar penerapan canary
grayDeployments[].namestringYaNama penerapan canary. Harus sesuai dengan nama aturan di rules
grayDeployments[].versionstringYaIdentifikasi versi untuk penerapan canary ini
grayDeployments[].enabledbooleanYaApakah penerapan canary ini aktif
grayDeployments[].weightinteger (0--100)TidakPersentase traffic yang tidak sesuai aturan yang diarahkan ke versi canary ini. Default-nya 0
rewriteobjectTidakKonfigurasi penulisan ulang path untuk penerapan CDN/OSS
rewrite.hoststringTidakHostname titik akhir OSS
rewrite.indexRoutingmapTidakMemetakan path URL ke file index.html versi. Gunakan {version} sebagai placeholder
rewrite.fileRoutingmapTidakMemetakan path URL ke direktori aset statis versi. Gunakan {version} sebagai placeholder
injectionobjectTidakKonfigurasi injeksi HTML. Menyuntikkan skrip atau gaya ke halaman entri HTML
injection.headarray of stringsTidakPotongan HTML yang disuntikkan ke tag <head>
injection.body.firstarray of stringsTidakPotongan HTML yang disuntikkan di awal tag <body>
injection.body.lastarray of stringsTidakPotongan 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:

  1. Masuk ke Konsol MSE. Buka Plug-in Marketplace gateway Anda dan buka konfigurasi plug-in frontend-gray.

  2. Atur enabled: false di bagian grayDeployments, atau hapus aturan canary sepenuhnya:

       grayDeployments:
         - name: beta-user
           version: gray
           enabled: false    # Menonaktifkan perutean canary; semua traffic dialihkan ke versi dasar
  3. Simpan 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-gray menangani penulisan ulang path secara internal melalui blok konfigurasi rewrite. 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:

PosisiDeskripsi
injection.headDisuntikkan ke tag <head>. Biasanya digunakan untuk gaya CSS atau tag meta
injection.body.firstDisuntikkan di awal tag <body>
injection.body.lastDisuntikkan 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.