Rilis canary memungkinkan Anda menguji versi baru aplikasi dengan menyebarkannya berdampingan dengan versi stabil. Metode ini membantu Anda mengidentifikasi dan memperbaiki masalah lebih awal tanpa mengorbankan stabilitas sistem. Topik ini menjelaskan cara menggunakan upgrade canary untuk meningkatkan stabilitas instans ASM Anda.
Prasyarat
-
Anda memiliki instans ASM Edisi Perusahaan atau Edisi Ultimate yang menjalankan versi 1.22.6.114 atau lebih baru. Untuk informasi selengkapnya, lihat Create an ASM instance.
-
Anda telah membuat kluster ACK dan menambahkannya ke instans ASM. Untuk informasi selengkapnya, lihat Add a cluster to an ASM instance.
-
Anda telah men-deploy aplikasi Bookinfo. Untuk informasi selengkapnya, lihat Men-deploy aplikasi di Kluster ACK yang terkait dengan Instans ASM.
Cara kerja
Service Mesh (ASM) Alibaba Cloud mendukung model upgrade berbasis revisi yang menggunakan label. Hal ini memungkinkan Anda melakukan upgrade canary pada lapisan kontrol untuk stabilitas dan keamanan yang lebih baik. Dalam model ini, setiap proxy sidecar pada bidang data dikaitkan dengan versi lapisan kontrol tertentu, atau revisi. Revisi baru dapat diterapkan dengan risiko minimal karena tidak ada proxy yang akan terhubung ke revisi tersebut hingga Anda secara eksplisit memigrasikan workload. Setiap lapisan kontrol independen disebut revisi dan diidentifikasi oleh label istio.io/rev.
Untuk mendukung upgrade berbasis revisi, Istio menggunakan label istio.io/rev untuk namespace. Label ini memberi tahu lapisan kontrol revisi mana yang harus digunakan untuk menyuntikkan proxy sidecar ke dalam workload di namespace tersebut. Misalnya, label istio.io/rev=1-23-6 menginstruksikan lapisan kontrol untuk menyuntikkan proxy sidecar versi 1.23.6 ke workload di namespace tersebut.
Selama upgrade canary, Anda dapat memverifikasi versi target dengan terlebih dahulu meng-upgrade subset kecil layanan. Jika verifikasi gagal, Anda dapat segera melakukan rollback untuk memastikan stabilitas layanan. Setelah versi baru diverifikasi, Anda dapat mempromosikan versi canary menjadi versi stabil baru, meng-upgrade semua workload menggunakan rolling update, lalu membatalkan publikasi versi lama untuk menyelesaikan proses upgrade.
Persiapan
Upgrade canary mengharuskan Anda secara eksplisit menentukan versi proxy sidecar yang akan disuntikkan dengan menggunakan label namespace. Oleh karena itu, Anda harus memastikan bahwa kebijakan injeksi Anda dikonfigurasi dengan benar. Ikuti langkah-langkah berikut untuk memverifikasi konfigurasi kebijakan injeksi Anda.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Sidecar Proxy injection, di bawah Injection strategy configuration management, pastikan bahwa The labels of the pod's namespace must meet the conditions. diatur ke Include istio-injection: enabled. Pada bagian Select the pods that require sidecar injection di halaman Injection policy configuration, kondisi label untuk namespace pod adalah Contains istio-injection: enabled secara default.
CatatanLabel
istio-injection: enabledsecara semantik setara denganistio.io/rev: stable. Selama upgrade canary, labelistio.io/rev: stablemenyuntikkan revisi stabil proxy sidecar ke pod di namespace yang sesuai, sedangkan labelistio.io/rev: canarymenyuntikkan revisi canary.Setelah upgrade, Anda tidak perlu mengganti
istio.io/rev:stabledenganistio-injection: enabledkarena keduanya secara semantik identik.
Langkah 1: Upgrade lapisan kontrol
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Upgrade Management, klik tab Canary Upgrade. Pada tab Control Plane, pilih Canary version: dan Create a new Server Load Balancer (CLB) instance, lalu klik Confirm. Pada kotak dialog Confirm upgrade?, klik OK.
Upgrade canary dapat melewati paling banyak satu versi minor. Dalam contoh ini, instans ASM adalah versi 1.22, sehingga Anda dapat meng-upgrade hingga versi 1.23. Topik ini menggunakan v1.23.6 sebagai contoh. Saat Anda menerapkan versi target dari upgrade canary, ASM membuat dan mengaitkan instans Server Load Balancer (CLB) dengan versi target tersebut. Jika Anda tidak memiliki persyaratan khusus, Anda dapat menggunakan spesifikasi default untuk instans CLB. Untuk informasi selengkapnya tentang penagihan CLB, lihat Billing overview of CLB.
Tunggu hingga komponen diterapkan. Setelah penerapan selesai, halaman akan diperbarui secara otomatis.
Bilah kemajuan menunjukkan bahwa proses berada pada langkah kedua, Deploy new version. Status versi saat ini dan versi canary keduanya adalah Canary upgrading. Halaman menunjukkan bahwa lapisan kontrol baru telah diterapkan dan meminta Anda untuk memverifikasi versi baru tersebut. Anda dapat mengklik Version switch untuk melanjutkan upgrade atau mengklik Revoke upgrade untuk melakukan rollback.
Langkah 2: Upgrade proxy sidecar reviews-v2
Pada Langkah 1, Anda telah menerapkan lapisan kontrol Istio versi v1.23.6 menggunakan upgrade canary. Langkah-langkah berikut menjelaskan cara memverifikasi versi ini dengan memperbarui proxy sidecar yang disuntikkan untuk layanan reviews-v2 dari aplikasi Bookinfo ke v1.23.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Global Namespace, pada kolom Automatic Sidecar Injection, periksa apakah label untuk namespace default adalah
istio-injection: enabled.Jika label tersebut adalah
istio-injection: enabled, artinya proxy sidecar versi 1.22 disuntikkan. -
Pada halaman Global Namespace, temukan namespace default. Pada kolom Automatic Sidecar Injection, klik Switch to inject 1-23-6 version. Pada kotak dialog Confirm, klik OK.
Label namespace global default diubah menjadi
istio.io/rev: canary, dan label namespace default pada bidang data juga disinkronkan menjadiistio.io/rev: canary. Halaman Global Namespace menunjukkan bahwa proxy sidecar versi 1.23 disuntikkan untuk namespace default. Pod baru yang dibuat di namespace default akan memiliki proxy sidecar versi 1.23 yang disuntikkan. Label namespace lain tidak berubah, sehingga mereka tetap menggunakan proxy sidecar versi 1.22.CatatanLangkah-langkah di atas menjelaskan cara mengganti versi proxy sidecar untuk namespace yang sudah memiliki injeksi otomatis diaktifkan sebelum upgrade. Untuk namespace yang belum mengaktifkan injeksi otomatis, Anda dapat mengaktifkannya dan memilih versi proxy sidecar yang diinginkan. ASM akan menambahkan label
istio.io/rev:stableatauistio.io/rev:canaryke namespace berdasarkan pilihan Anda. -
Lakukan rolling update workload reviews-v2.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, temukan reviews-v2. Pada kolom Actions, pilih . Pada kotak dialog Redeploy, klik OK.
-
Pada halaman Deployments, klik reviews-v2. Pada tab Pods, periksa apakah pod untuk reviews-v2 berhasil dimulai setelah rolling update dan apakah pod baru memiliki proxy sidecar versi 1.23 yang disuntikkan.
Pod untuk reviews-v2 berhasil dimulai setelah rolling update, dan proxy sidecar v1.23 disuntikkan ke pod baru tersebut.
-
Buka browser dan kunjungi halaman Bookinfo untuk memeriksa apakah trafik diarahkan sesuai harapan.
Seperti yang ditunjukkan pada gambar berikut, Anda dapat mengakses layanan reviews-v2 sesuai harapan. Halaman Bookinfo dimuat dengan benar. Bagian Book Reviews menampilkan ulasan buku dengan peringkat bintang hitam, dan di pojok kanan bawah halaman ditampilkan
Reviews served by: reviews-v2-5b5fdb5d7c-xxx. Ini menunjukkan bahwa pod reviews-v2 melayani ulasan dan trafik diarahkan sesuai harapan.
Langkah 3: Rollback reviews-v2
Jika verifikasi pada Langkah 2 gagal, atau jika Anda perlu melakukan rollback karena alasan lain, ikuti langkah-langkah berikut.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Global Namespace, temukan namespace default. Pada kolom Automatic Sidecar Injection, klik Switch to inject 1-22-6 version. Pada kotak dialog Confirm, klik OK.
Sebelum rollback, label namespace adalah
istio.io/rev: canary, dan proxy sidecar versi 1.23 disuntikkan untuk namespace default.Setelah rollback, label diubah menjadi
istio.io/rev: stable, dan label namespacedefaultpada bidang data juga diperbarui menjadiistio.io/rev: stable. Akibatnya, proxy mesh versi 1.22 disuntikkan ke namespacedefault. -
Redeploy workload reviews-v2 di Konsol ACK.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, pilih default dari daftar drop-down Namespace. Temukan reviews-v2. Pada kolom Actions, pilih . Pada kotak dialog Redeploy, klik OK.
-
Pada halaman Deployments, klik reviews-v2. Pada tab Pods, periksa apakah pod untuk reviews-v2 berhasil dimulai setelah rolling update dan apakah pod baru memiliki proxy sidecar versi 1.22 yang disuntikkan.
Pod untuk reviews-v2 berhasil dimulai setelah rolling update, dan proxy sidecar versi 1.22 disuntikkan ke pod baru tersebut.
Langkah 4: Batalkan upgrade
Setelah rollback berhasil, Anda dapat membatalkan upgrade canary untuk mengembalikan instans ASM ke versi awal 1.22.
Sebelum membatalkan upgrade, pastikan bahwa versi proxy sidecar stabil disuntikkan ke semua namespace. Jika tidak, pembatalan akan gagal.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Upgrade Management, pada tab Canary Upgrade, klik Undo upgrade. Pada kotak dialog Confirm the cancellation of the upgrade?, klik OK.
Setelah Anda mengklik Revoke upgrade, komponen lapisan kontrol canary (versi 1.23 dalam contoh ini) dihapus. Hanya komponen lapisan kontrol stabil (versi 1.22 dalam contoh ini) yang dipertahankan.
Langkah 5: Coba lagi upgrade dan verifikasi
Pada titik ini, instans ASM berada dalam kondisi yang sama seperti sebelum Langkah 1. Contoh ini hanya memverifikasi workload reviews-v1, reviews-v2, dan reviews-v3. Dalam skenario dunia nyata, Anda harus memverifikasi semua workload yang diperlukan hingga verifikasi berhasil.
-
Ulangi Langkah 1 untuk menerapkan versi canary lapisan kontrol untuk kluster ASM.
-
Ulangi Langkah 2 untuk memverifikasi bahwa proxy sidecar versi baru yang disuntikkan berfungsi sebagaimana mestinya.
Misalnya, redeploy deployment reviews-v1, reviews-v2, dan reviews-v3 dari Konsol ACK. Anda dapat melihat bahwa proxy sidecar versi 1.23 disuntikkan ke pod reviews-v1, reviews-v2, dan reviews-v3.
Langkah 6: Promosikan versi baru
Setelah memverifikasi bahwa reviews-v1, reviews-v2, dan reviews-v3 berfungsi sebagaimana mestinya dengan proxy sidecar versi baru 1.23, Anda dapat mempromosikan versi 1.23 menjadi versi stabil.
-
Setelah Anda mempromosikan versi, proses upgrade melanjutkan ke tahap unpublishing untuk versi lama. Semua workload harus dialihkan ke proxy sidecar versi baru 1.23, dan Anda tidak dapat lagi membatalkan upgrade. Pastikan untuk menyelesaikan semua verifikasi selama tahap New version deployment.
-
Setelah Anda mempromosikan versi, ASM akan menyuntikkan proxy sidecar versi baru 1.23 ke namespace dengan label
istio.io/rev: stableatauistio-injection: enabled. Labelistio.io/rev: canarytidak lagi berlaku. Oleh karena itu, saat Anda mempromosikan versi, ASM secara otomatis mengubah semua labelistio.io/rev: canarymenjadiistio.io/rev: stable. Konfirmasi perubahan ini saat Anda mengklik Version switching pada tab Canary Upgrade di halaman Upgrade Management.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Upgrade Management, pada tab Canary Upgrade, klik Update Version. Pada kotak dialog Confirm version switching?, baca prompt dengan cermat, lalu klik OK.
Setelah promosi, workload yang ada dengan proxy sidecar versi 1.22 tidak terpengaruh. Namun, semua pod yang diredeploy akan memiliki proxy sidecar versi 1.23 yang disuntikkan. Halaman diperbarui setelah promosi selesai.
Bilah kemajuan menunjukkan bahwa proses berada pada langkah ketiga, Switch version. Status versi saat ini dan versi canary keduanya adalah Canary upgrading. Halaman menunjukkan bahwa pergantian versi berhasil. Anda sekarang dapat meng-upgrade bidang data. Pada titik ini, Anda dapat mengklik Upgrade data plane untuk melanjutkan atau Unpublish old version untuk menyelesaikan upgrade.
Langkah 7: Tingkatkan bidang data
Pada titik ini, versi ASM adalah 1.23.6. Namespace dengan label istio.io/rev=stable, istio.io/rev=1-23-6, atau istio-injection=enabled akan memiliki proxy sidecar versi 1.23 yang disuntikkan. Anda dapat menyelesaikan upgrade bidang data dengan melakukan rolling update workload Anda untuk meng-upgrade proxy sidecar yang disuntikkan ke versi baru 1.23.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Upgrade Management, pada tab Canary Upgrade, klik tab Data plane untuk meng-upgrade gerbang ASM atau workload sesuai kebutuhan.
-
Upgrade gerbang ASM: Pada bagian ASM Gateways, temukan gerbang target. Pada kolom Actions, klik Rolling Upgrade. Pada kotak dialog Confirm to perform rolling upgrade?, klik OK untuk meng-upgrade gerbang ASM ke versi baru 1.23.
-
Upgrade workload: Pada bagian Workload to be upgraded, pilih Namespace. Temukan workload target. Pada kolom Actions, klik Rolling Upgrade. Pada kotak dialog Confirm to perform rolling upgrade?, klik OK untuk meng-upgrade workload ke versi baru 1.23.
CatatanGerbang ASM atau workload yang telah di-upgrade tidak ditampilkan dalam daftar.
Anda juga dapat mengklik Instances Status di panel navigasi kiri untuk melihat semua workload atau instans gerbang yang belum di-upgrade.
-
Langkah 8: Batalkan publikasi versi lama
Setelah meng-upgrade semua workload bidang data, Anda dapat membatalkan publikasi versi lama 1.22.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Upgrade Management, pada tab Canary Upgrade, klik Offline old version. Pada kotak dialog Are you sure to offline the previous version of the Control Plane?, klik OK.