Saya sedang melihat penggunaan penyebaran kenari di Istio tetapi tampaknya secara acak mendistribusikan permintaan ke versi baru dan lama berdasarkan bobot. Ini menyiratkan pengguna dalam bisnis dapat melihat satu perilaku dalam satu menit dan perilaku yang berbeda pada menit berikutnya & orang-orang dalam tim dapat mengalami perilaku yang berbeda satu sama lain. Untuk alasan ini tampaknya jika saya ingin perilaku yang konsisten untuk pengguna atau tim, saya perlu membangun mekanisme peluncuran saya sendiri di mana saya dapat mengontrol siapa yang pindah ke versi layanan baru.

Apakah saya benar atau saya salah memahami cara kerja peluncuran kenari Istio?

1
Bryn Davis 12 Mei 2021, 10:47

1 menjawab

Jawaban Terbaik

Jika Anda melakukan distribusi lalu lintas dasar berdasarkan berat, Anda benar.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: helloworld
spec:
  hosts:
    - helloworld
  http:
  - route:
    - destination:
        host: helloworld
        subset: v1
      weight: 90
    - destination:
        host: helloworld
        subset: v2
      weight: 10

Di sini 10% lalu lintas diarahkan ke v2 secara acak. Setiap permintaan mungkin memanggil versi yang berbeda.

Tetapi Anda dapat melakukan perutean yang lebih canggih.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: helloworld
spec:
  hosts:
    - helloworld
  http:
  - match:
    - headers:
        group:
          exact: testing
    route:
    - destination:
        host: helloworld
        subset: v2
  - route:
    - destination:
        host: helloworld
        subset: v1

Sekarang ada dua rute:

  • Pengguna dengan header group=testing akan dikirim ke v2
  • Semua pengguna lain akan dikirim ke v1

Header dalam contoh ini dapat disetel di frontend berdasarkan pengguna, jadi permintaan backend untuk pengguna tersebut akan memanggil v2.

Atau Anda dapat mengatur cookie untuk grup tertentu dan mengarahkannya ke frontend yang berbeda dengan menggunakan sesuatu seperti:

- match:
    - headers:
        cookie: 
           [...]

Ada beberapa kecocokan kriteria, termasuk headers, queryParams dan authority.

2
Christoph Raab 12 Mei 2021, 10:38