All Products
Search
Document Center

Alibaba Cloud Service Mesh:Migrasikan traffic dari gerbang masuk Istio yang dikelola sendiri ke gerbang masuk ASM

Last Updated:Mar 12, 2026

Saat bermigrasi dari penerapan Istio yang dikelola sendiri ke Service Mesh (ASM), Anda perlu memindahkan traffic ingress. Panduan ini menjelaskan pendekatan pemindahan traffic berbasis bobot: gerbang masuk Istio yang ada dan gerbang masuk ASM yang baru berbagi instans Classic Load Balancer (CLB) yang sama, serta Anda mengontrol distribusi traffic dengan menyesuaikan bobot kelompok vServer.

Migration traffic flow

Prasyarat

  • Instans ASM telah dibuat dan kluster Kubernetes target telah ditambahkan ke mesh.

  • Anda memiliki akses administrator ke kluster Kubernetes tempat gerbang masuk Istio yang dikelola sendiri berjalan.

  • Anda memiliki akses ke konsol CLB untuk mengelola label load balancer dan kelompok vServer.

  • Gerbang masuk Istio yang dikelola sendiri sedang berjalan dan menangani traffic secara normal.

Pilih strategi pemindahan traffic

Anda memiliki dua opsi untuk mengarahkan ulang traffic ke gerbang masuk ASM:

StrategiKapan digunakanCara kerja
DNS-based switchingAnda dapat memodifikasi rekaman DNS secara langsung.Perbarui rekaman Domain Name System (DNS) domain Anda agar mengarah ke alamat IP gerbang masuk ASM.
Weight-based shiftingAnda tidak dapat memodifikasi rekaman DNS atau memerlukan migrasi bertahap dan terkendali.Kedua gerbang berbagi instans CLB; sesuaikan bobot kelompok vServer untuk memindahkan traffic secara bertahap.

Panduan ini berfokus pada weight-based shifting. Jika Anda menggunakan DNS-based switching, lewati konfigurasi penggunaan ulang CLB dan perbarui rekaman DNS Anda setelah membuat gerbang masuk ASM.

Buat gerbang masuk ASM

Buat gerbang masuk ASM di kluster Kubernetes yang sama dengan gerbang masuk Istio yang dikelola sendiri. Untuk petunjuk lengkap, lihat Create an ingress gateway.

Saat membuat gerbang tersebut:

  • Gunakan nama yang berbeda. Nama gerbang masuk ASM harus berbeda dari nama gerbang masuk Istio yang sudah ada. Tambahkan -asm untuk membedakannya—misalnya, ingressgateway-asm.

  • Deploy ke kluster yang sama. Pada Langkah 3 topik Create an ingress gateway, atur parameter Cluster ke kluster Kubernetes tempat gerbang masuk Istio sumber berada.

Gunakan ulang instans CLB yang ada

Untuk berbagi instans CLB antara kedua gerbang, tambahkan anotasi layanan berikut dalam YAML gerbang masuk ASM:

AnotasiTujuanNilai
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idMenentukan instans CLB yang akan digunakan ulangID instans CLB yang terkait dengan gerbang masuk Istio sumber Anda
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listenersMengontrol apakah listener yang ada akan ditimpafalse (mempertahankan listener yang ada)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-portMemetakan kelompok vServer ke portID kelompok vServer dan port, dipisahkan koma (misalnya, "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443")
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weightMenetapkan bobot traffic untuk gerbang masuk ASMSesuaikan berdasarkan kebutuhan bisnis Anda. Atur ke 0 saat belum ada aturan routing yang dikonfigurasi atau terjadi pengecualian

Contoh konfigurasi serviceAnnotations:

serviceAnnotations:
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxx"  # Ganti dengan ID instans CLB Anda
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false'  # Pertahankan listener yang ada
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:80"  # Ganti dengan ID kelompok vServer Anda
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60"  # Atur ke 0 saat belum ada aturan routing atau terjadi pengecualian
Catatan

Untuk informasi selengkapnya tentang penggunaan ulang instans CLB yang dibuat menggunakan tipe layanan LoadBalancer, lihat FAQ di akhir topik ini.

Verifikasi gerbang

Setelah membuat gerbang masuk ASM, pastikan Pod gerbang tersebut sedang berjalan:

kubectl get pods -n istio-system -l istio=ingressgateway-asm

Output yang diharapkan (nama Pod dan usia akan berbeda):

NAME                                    READY   STATUS    RESTARTS   AGE
ingressgateway-asm-5d8f7b9c4f-xxxxx    1/1     Running   0          1m

Migrasikan konfigurasi Istio

Migrasikan konfigurasi routing Istio ke gerbang masuk ASM. Ikuti urutan make-before-break berikut untuk mencegah error 503 akibat propagasi konfigurasi yang bersifat eventually consistent.

1. Terapkan resource DestinationRule terlebih dahulu

Terapkan konfigurasi DestinationRule yang dibutuhkan oleh gerbang masuk ASM. Tunggu beberapa detik hingga konfigurasi tersebut tersebar ke sidecar Envoy sebelum melanjutkan.

2. Perbarui selector Gateway

Pada YAML Gateway Istio, perbarui selector.istio agar sesuai dengan nama gerbang masuk ASM Anda:

spec:
  selector:
    istio: ingressgateway-asm

3. Terapkan konfigurasi VirtualService

Setelah pembaruan selector Gateway dan konfigurasi DestinationRule telah tersebar, terapkan konfigurasi VirtualService yang mereferensikan gerbang masuk ASM.

Penting

Selalu terapkan DestinationRule sebelum VirtualService saat menambahkan aturan routing baru. Jika VirtualService mereferensikan subset yang belum ada di DestinationRule, traffic ke subset tersebut akan menghasilkan error 503 hingga DestinationRule tersebar.

Verifikasi konfigurasi

Pastikan gerbang masuk ASM telah menerima konfigurasi routing yang diharapkan:

kubectl get gateway,virtualservice,destinationrule -n istio-system

Periksa bahwa semua resource Gateway, VirtualService, dan DestinationRule tercantum dan mereferensikan nama gerbang yang benar.

Pindahkan traffic secara bertahap

Dengan konfigurasi yang telah siap, pindahkan traffic dari gerbang masuk Istio yang dikelola sendiri ke gerbang masuk ASM dengan menyesuaikan bobot CLB.

  1. Atur bobot gerbang masuk ASM ke nilai kecil, seperti 10, untuk mengarahkan sebagian kecil traffic ke gerbang tersebut. Edit anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight pada Service gerbang masuk ASM.

  2. Verifikasi bahwa traffic mengalir dengan benar melalui gerbang masuk ASM. Periksa log aplikasi, kode respons, dan latensi:

       kubectl logs -n istio-system -l istio=ingressgateway-asm --tail=50
  3. Tingkatkan bobot gerbang masuk ASM secara bertahap (misalnya, 10 → 30 → 60 → 100) sambil menurunkan bobot gerbang masuk Istio sumber secara proporsional.

  4. Setelah seluruh traffic dialihkan ke gerbang masuk ASM, atur bobot gerbang masuk Istio sumber menjadi 0.

Cara menyesuaikan bobot

GatewayAksi
Sumber gerbang masuk IstioEdit anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight pada Service Kubernetes-nya
Gerbang masuk ASMEdit anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight pada Service gerbang masuk ASM

Rollback

Jika gerbang masuk ASM tidak berfungsi seperti yang diharapkan pada tahap apa pun selama migrasi:

  1. Atur bobot gerbang masuk ASM menjadi 0 untuk menghentikan pengiriman traffic ke gerbang tersebut.

  2. Atur kembali bobot gerbang masuk Istio sumber ke 100.

  3. Kembalikan konfigurasi Gateway, VirtualService, dan DestinationRule agar mengarah ke gerbang masuk Istio asli. Saat menghapus subset, perbarui VirtualService terlebih dahulu, tunggu beberapa detik, lalu perbarui DestinationRule.

FAQ: Gunakan ulang instans CLB yang dibuat otomatis oleh Service gerbang masuk Istio

Jika instans CLB dibuat otomatis saat Service dibuat untuk gerbang masuk Istio yang dikelola sendiri, lakukan langkah-langkah berikut sebelum menggunakannya ulang untuk gerbang masuk ASM:

  1. Buka konsol CLB dan temukan instans CLB tersebut.

  2. Hapus dua label berikut dari instans CLB:

    • kubernetes.do.not.delete

    • ack.aliyun.com

  3. Tambahkan anotasi berikut ke Service gerbang masuk Istio yang dikelola sendiri. Ganti placeholder berikut dengan nilai aktual Anda:

    PlaceholderDeskripsiContoh
    <your-clb-instance-id>ID instans CLBlb-bp1abc2defg
    <your-vserver-group-id>ID kelompok vServerrsp-bp1abc3defg
    <port>Nomor port listener80
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "false"
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: <your-clb-instance-id>
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: <your-vserver-group-id>:<port>
       service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100"