All Products
Search
Document Center

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

Last Updated:Jun 21, 2026

Anda dapat menerapkan rilis canary aplikasi frontend dengan kebijakan pemantauan dan rollback untuk membangun mekanisme andal yang menjamin stabilitas sistem. Koordinasi ketiga kebijakan tersebut membantu menjaga performa dan stabilitas tinggi aplikasi frontend selama iterasi dan pembaruan berkelanjutan. Topik ini menjelaskan cara mengonfigurasi Microservices Engine (MSE) cloud-native gateway untuk mengimplementasikan rilis canary pada aplikasi frontend.

Implementasikan rilis canary ujung ke ujung

Dalam skenario layanan mikro, panggilan antaraplikasi bersifat acak. Jika tersedia versi baru untuk aplikasi Spring Cloud atau Dubbo yang Anda deploy, traffic dengan karakteristik tertentu mungkin tidak diarahkan ke versi baru tersebut. Untuk mengimplementasikan rilis canary ujung ke ujung, Anda dapat menggabungkan rilis canary aplikasi frontend dengan rilis canary ujung ke ujung berbasis gateway cloud-native yang disediakan oleh MSE.

Setiap permintaan dari pengguna frontend melewati Cloud-native Gateway, tempat permintaan diautentikasi oleh sistem permission, lalu menambahkan identifier unik pengguna, seperti userid: 001, ke cookie permintaan.

Catatan

Gateway dikonfigurasi dengan plug-in frontend-gray yang memetakan dan meneruskan traffic grayscale berdasarkan aturan yang telah dikonfigurasi.

Prasyarat

Implementasikan rilis canary pada aplikasi frontend menggunakan gateway MSE Ingress

Penting

Instal MSE Ingress Controller dan gunakan gateway MSE Ingress untuk mengakses kluster ACK. Untuk informasi selengkapnya, lihat Gunakan gateway MSE Ingress untuk mengakses layanan di kluster ACK dan kluster ACS.

Langkah 1: Deploy aplikasi di kluster ACK

Untuk informasi selengkapnya tentang cara mendeploy aplikasi, lihat Buat aplikasi tanpa status menggunakan Deployment.

Tampilkan kode 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

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  labels:
    ingress-controller: mse
  namespace: default
  name: frontend-base-ingress
spec:
  ingressClassName: mse
  rules:
    - http:
        paths:
          - backend:
              service:
                name: frontend-base-svc
                port:
                  number: 80
            path: /
            pathType: Prefix
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

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  labels:
    ingress-controller: mse
  annotations:
    nginx.ingress.kubernetes.io/canary: 'true'
    nginx.ingress.kubernetes.io/canary-by-header: x-higress-tag
    nginx.ingress.kubernetes.io/canary-by-header-value: gray
  name: frontend-gray-ingress
  namespace: default
spec:
  ingressClassName: mse
  rules:
    - http:
        paths:
          - backend:
              service:
                name: frontend-gray-svc
                port:
                  number: 80
            path: /
            pathType: Prefix

Langkah 2: Konfigurasi plug-in frontend-gray di Konsol MSE

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

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

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

  5. Di halaman yang muncul, klik tab Plug-in Configuration, pilih Domain-level plug-in rules di bagian Rule Levels, lalu klik Add Rule. Di panel Add Rule, konfigurasikan aturan berikut. Untuk detail konfigurasi, lihat Configure rules.

    grayKey: userid
    rules:
      - name: beta-user
        grayKeyValue:
          - "00000002"
          - "00000003"
    baseDeployment:
      version: base
    grayDeployments:
      - name: beta-user
        version: gray
        enabled: true

    Aktifkan sakelar Enable. Di daftar drop-down Target, pilih * (semua domain). Klik OK.

Langkah 3: Verifikasi hasil

  1. Masuk ke Konsol Container Service for Kubernetes (ACK). Di panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, klik kluster Anda. Di halaman detail kluster, buka Network > Routes untuk menemukan titik akhir publik.

    Di daftar rute, Anda dapat melihat dua Ingress berbasis gateway MSE: frontend-base-ingress (aturan: /frontend-base-svc) dan frontend-gray-ingress (aturan: /frontend-gray-svc). Salin alamat endpoint dari kolom Endpoint pada frontend-base-ingress untuk verifikasi selanjutnya.

  2. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun admin/ice untuk mengakses versi dasar. ID pengguna adalah 00000001.

  3. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun pengguna standar user/ice untuk mengakses versi canary. ID pengguna adalah 00000002.

Implementasikan rilis canary pada aplikasi frontend menggunakan kluster ACK

Langkah 1: Deploy aplikasi di kluster ACK

Untuk informasi selengkapnya tentang cara mendeploy aplikasi, lihat Buat aplikasi tanpa status menggunakan Deployment.

Tampilkan kode 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: Konfigurasi plug-in frontend-gray di Konsol MSE

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

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

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

  5. Di halaman yang muncul, klik tab Plug-in Configuration, pilih Domain-level plug-in rules di bagian Rule Levels, lalu klik Add Rule. Di panel Add Rule, konfigurasikan aturan berikut. Untuk detail konfigurasi, lihat Configure rules.

    grayKey: userid
    rules:
      - name: beta-user
        grayKeyValue:
          - "00000002"
          - "00000003"
    baseDeployment:
      version: base
    grayDeployments:
      - name: beta-user
        version: gray
        enabled: true

    Aktifkan sakelar Enable. Di daftar drop-down Target, pilih * (semua domain). Klik OK.

Langkah 3: Tambahkan sumber layanan untuk gateway

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

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

  4. Klik Add Source. Di panel Add Source, atur Source Type menjadi Container Service. Untuk ACK/ASK/ACS Cluster, pilih kluster ACK yang telah Anda buat, lalu klik OK.

    Aktifkan sakelar Listen to K8s Ingress. Secara default, gateway mendengarkan resource Ingress di semua namespace. Untuk mengubahnya, klik Custom. Di bagian Security Group Authorization, konfirmasi security group dan range port, yang secara default adalah 1/65535.

Langkah 4: Tambahkan layanan

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Lalu, klik tab Services.

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

    Atur Service Source menjadi Container Service. Untuk Namespace, pilih default. Di daftar layanan, centang kotak untuk frontend-base-svc dan frontend-gray-svc.

Langkah 5: Tambahkan rute dasar

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

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

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

    Atur Route Name menjadi base-route. Untuk Path, pilih Prefix is dan masukkan /. Untuk Destination, pilih Single Service. Untuk Service Name, pilih frontend-base-svc. Atur Service Protocol menjadi HTTP, Service Port menjadi 80, dan Timeout menjadi 60 detik.

Langkah 6: Tambahkan rute canary

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

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

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

    Atur Route Name menjadi gray-route dan Domain menjadi *. Untuk Path, pilih prefix match dan masukkan /. Di bagian Request Header, tambahkan entri baru: atur Header Name menjadi x-higress-tag, Condition menjadi Prefix is, dan Value menjadi gray. Untuk Destination, pilih Single Service dan pilih frontend-gray-svc sebagai Service Name. Atur protokol layanan menjadi HTTP dan port menjadi 80.

    Catatan

    Nilai gray merepresentasikan versi canary dan sesuai dengan pengaturan grayDeployments.version dalam konfigurasi plug-in frontend-gray.

Langkah 7: Verifikasi hasil

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

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

    Konfirmasi bahwa alamat endpoint telah dihasilkan untuk instans NLB dan Association Status adalah Associated.

  4. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun admin/ice untuk mengakses versi dasar. ID pengguna adalah 00000001.

  5. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun pengguna standar user/ice untuk mengakses versi canary. ID pengguna adalah 00000002.

Implementasikan rilis canary pada aplikasi frontend menggunakan Instance ECS

Langkah 1: Deploy dua versi aplikasi frontend pada instance ECS

  • Titik akhir aplikasi dasar: 120.***.137.243:80

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

Langkah 2: Tambahkan layanan

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Lalu, klik tab Services.

  5. Klik Add Service. Di panel Add Service, atur Fixed Address menjadi Fixed Address, konfigurasikan parameter layanan, lalu klik OK.

    Atur Service Name menjadi frontend-base-svc. Untuk Service Address, masukkan alamat IP dan port server dalam format ip:port. Gunakan baris baru untuk setiap alamat. Jika Anda menggunakan alamat IP publik, Anda harus mengonfigurasi gateway NAT di VPC. Atur TLS Mode menjadi Disable, lalu klik OK.

Langkah 3: Tambahkan rute dasar

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Di tab Routes, klik Add Route.

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

    Atur Route Name menjadi base-route. Untuk Path, pilih Prefix is dan masukkan /. Untuk Destination, pilih Single Service. Untuk Service Name, pilih frontend-base-svc. Atur Service Protocol menjadi HTTP, Service Port menjadi 80, dan Timeout menjadi 60 detik.

Bagian ini menjelaskan parameter untuk layanan canary. Atur Service Name menjadi frontend-gray-svc. Untuk Service Address, masukkan alamat IP dan port layanan target dalam format ip:port. Gunakan baris baru untuk setiap alamat. Jika Anda menggunakan alamat IP publik, Anda harus mengonfigurasi gateway NAT di VPC. Atur TLS Mode menjadi Disable.

Langkah 4: Tambahkan rute canary

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Di tab Routes, klik Add Route.

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

    Catatan

    Nilai gray merepresentasikan versi canary dan sesuai dengan pengaturan grayDeployments.version dalam konfigurasi plug-in frontend-gray.

    Atur Route Name menjadi gray-route dan Domain menjadi *. Untuk Path, pilih prefix match dan masukkan /. Di bagian Request Header, tambahkan entri baru: atur Header Name menjadi x-higress-tag, Condition menjadi Prefix is, dan Value menjadi gray. Untuk Destination, pilih Single Service dan pilih frontend-gray-svc sebagai Service Name. Atur protokol layanan menjadi HTTP dan port menjadi 80.

Langkah 5: Konfigurasi plug-in frontend-gray di Konsol MSE

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

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

  5. Di halaman Plug-in Marketplace, cari frontend-gray dan klik kartu plug-in frontend-gray.

  6. Di halaman yang muncul, klik tab Plug-in Configuration, pilih Domain-level plug-in rules di bagian Rule Levels, lalu klik Add Rule. Di panel Add Rule, konfigurasikan aturan berikut. Untuk detail konfigurasi, lihat Configure rules.

    grayKey: userid
    rules:
      - name: beta-user
        grayKeyValue:
          - "00000002"
          - "00000003"
    baseDeployment:
      version: base
    grayDeployments:
      - name: beta-user
        version: gray
        enabled: true

    Aktifkan sakelar Enable. Di daftar drop-down Target, pilih * (semua domain). Klik OK.

Langkah 6: Verifikasi hasil

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

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

    Konfirmasi bahwa alamat endpoint telah dihasilkan untuk instans NLB dan Association Status adalah Associated.

  4. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun admin/ice untuk mengakses versi dasar. ID pengguna adalah 00000001.

  5. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun pengguna standar user/ice untuk mengakses versi canary. ID pengguna adalah 00000002.

Implementasikan rilis canary pada aplikasi frontend menggunakan CDN atau OSS

Langkah 1: Siapkan file OSS

Tampilkan kode YAML

- app1 # Application
  - dev # dev version
    - index.html
    - js
      ...
    - css
      ...
    - images
      ...
  - 0.0.1  # 001 version
    - index.html
    - js
      ...
    - css
      ...
    - images
      ...
  - 0.0.2  # 002 version
    - index.html
    - js
      ...
    - css
      ...
    - images
      ...
- app2
  - dev
    - index.html
    - js
      ...
    - css
      ...
    - images
      ...
  - 0.0.1
    - index.html
    - js
      ...
    - css
      ...
    - images
      ...
  - 0.0.2
    - index.html
    - js
      ...
    - css
      ...
    - images
      ...

Langkah 2: Tambahkan layanan

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Lalu, klik tab Services.

  5. Klik Add Service. Di panel Add Service, atur DNS Domain Name menjadi DNS Domain Name, masukkan alamat OSS di daftar domain, lalu klik OK.

    Atur Service Name menjadi static-oss, Service Port menjadi 80, dan TLS Mode menjadi Disable.

    Penting

    Jika OSS dan gateway dideploy di wilayah yang sama, kami sarankan Anda memasukkan titik akhir internal OSS. Jika OSS dan gateway tidak dideploy di wilayah yang sama, masukkan titik akhir publik.

Langkah 3: Tambahkan rute

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Di tab Routes, klik Add Route.

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

    Contoh parameter: Atur Route Name menjadi project-a-app-1. Atur Domain menjadi *. Untuk Path, pilih Prefix is, masukkan /app1, dan centang kotak Case-sensitive. Untuk Destination, pilih Single Service. Di bagian backend service, pilih static-oss sebagai Service Name, HTTP sebagai Service Protocol, dan 80 sebagai Service Port. Atur Timeout menjadi 60 detik.

Langkah 4: Konfigurasi plug-in frontend-gray di Konsol MSE

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

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

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

  5. Di halaman Plug-in Marketplace, cari frontend-gray dan klik kartu plug-in frontend-gray.

  6. Di halaman yang muncul, klik tab Plug-in Configuration, pilih Domain-level plug-in rules di bagian Rule Levels, lalu klik Add Rule. Di panel Add Rule, konfigurasikan aturan berikut. Untuk detail konfigurasi, lihat Configure rules.

    grayKey: userid
    rules:
      - name: beta-user
        grayKeyValue:
          - "00000002"
          - "00000003"
    rewrite:
      host: xx.oss-cn-shanghai.aliyuncs.com ## OSS endpoint
      indexRouting:
        "/app1": "/project-a/app1/{version}/index.html" # Path rewrite of the HTML home page
      fileRouting:
         "/app1": "/project-a/app1/{version}" # Path rewrite of resources such as CSS properties, JavaScript scripts, and images
    baseDeployment:
      version: dev
    grayDeployments:
      - name: beta-user
        version: 0.0.1
        enabled: true

Langkah 5: Verifikasi hasil

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

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

    Konfirmasi bahwa alamat endpoint telah dihasilkan untuk instans NLB dan Association Status adalah Associated.

  4. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun admin/ice untuk mengakses versi dasar. ID pengguna adalah 00000001.

  5. Akses titik akhir publik nlb-qv04p*******cn-hangzhou.nlb.aliyuncsslb.com. Login dengan akun pengguna standar user/ice untuk mengakses versi canary. ID pengguna adalah 00000002.

FAQ

Apakah saya dapat mengonfigurasi kebijakan rewrite dan rilis canary pada aplikasi frontend secara bersamaan?

  • Jika sumber layanan bukan CDN atau OSS, Anda dapat mengonfigurasi rilis canary aplikasi frontend dan kebijakan rewrite secara bersamaan dan membuatnya berlaku.

  • Jika sumber layanan adalah CDN atau OSS, Anda tidak dapat mengonfigurasi rilis canary aplikasi frontend dan kebijakan rewrite secara bersamaan. Hal ini karena kebijakan rewrite terkait sudah diimplementasikan dalam plug-in frontend-gray. Jika Anda mengonfigurasi kebijakan rewrite, konflik mungkin terjadi. Akibatnya, error seperti kode status 403 dikembalikan.

Apakah saya dapat menyuntikkan beberapa variabel global ke halaman utama HTML?

  • Suntikkan beberapa skrip JavaScript global ke tag <head> (biasanya properti seperti gaya CSS) halaman HTML, atau ke posisi pertama dan terakhir tag <body> halaman HTML.

  • Gunakan injection untuk menyuntikkan kode ke halaman utama HTML. Anda dapat menyuntikkan kode ke tag <head>, atau ke posisi first dan last tag <body>.

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>

Kapan versi canary mulai berlaku?

Asumsikan pengguna sedang menggunakan versi 0.0.1 aplikasi frontend. Jika Anda merilis versi 0.0.2 dan pengguna tersebut sesuai dengan aturan canary, apakah versi baru langsung berlaku?

Hal ini disebabkan oleh alasan berikut:

  • Jika versi canary perlu berlaku secara real-time, backend harus mengontrol versi secara dinamis. Rilis frontend tidak dapat dipisahkan dari rilis backend. Akselerasi CDN tidak dapat dilakukan karena stabilitas halaman sangat bergantung pada antarmuka.

  • Jika versi canary berlaku secara real-time, saat pelanggan menggunakan fitur tertentu, tombol yang sedang digunakan mungkin menjadi tidak tersedia kapan saja. Hal ini mengakibatkan pengalaman pengguna yang buruk.

Kapan saya harus refresh halaman?

  • Dalam kebanyakan kasus, Anda perlu login ulang ke website setelah session habis masa berlakunya.

  • Anda dapat login ke aplikasi di halaman login.

Oleh karena itu, halaman harus direfresh selama proses login untuk mengambil informasi rilis canary terbaru. Contoh berikut menunjukkan kode login frontend:

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;
  	    window.location.href = `${urlParams.get('redirect') || '/'}`;
        return;
      }
      console.log(result);
      // Configure an error message that is returned for logon failures. The following code shows a sample error message.
      setLoginResult(result);
    } catch (error) {
      message.error('Logon failed. Try again. ');
      console.log(error);
    }
  }