Topik ini menjelaskan cara memigrasikan trafik dari Nginx Ingress Controller ke ingress gateway.
Prasyarat
Instans Service Mesh (ASM) Edisi Enterprise atau Edisi Ultimate telah dibuat dan merupakan versi terbaru. Untuk informasi lebih lanjut, lihat Buat Instans ASM.
Klaster Container Service for Kubernetes (ACK) telah ditambahkan ke instans ASM. Untuk informasi lebih lanjut, lihat Tambahkan Klaster ke Instans ASM.
Alur trafik

Prosedur
Langkah 1: Buat ingress gateway
Buat file YAML untuk Istio gateway dengan menggunakan kembali instans Classic Load Balancer (CLB) yang terkait dengan Nginx Ingress Controller. Perhatikan hal-hal berikut:
Untuk informasi lebih lanjut tentang penggunaan kembali instans CLB yang dibuat menggunakan tipe layanan LoadBalancer, lihat FAQ.
Edit pengaturan terkait instans CLB untuk parameter serviceAnnotations di file YAML.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: menentukan instans CLB yang ingin digunakan kembali.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: menentukan apakah akan menimpa pendengar (listeners) yang ada pada instans CLB. Atur nilainya menjadi false.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: menentukan grup vServer dari instans CLB yang ingin digunakan kembali. Pisahkan beberapa port dan grup vServer dengan koma (,). Contoh: "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443".
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: menentukan bobot ingress gateway. Anda dapat mengatur bobot menjadi 0 ketika aturan routing belum dikonfigurasi untuk ingress gateway atau terjadi pengecualian. Saat Anda mengatur bobot menjadi 0, instans CLB tidak akan meneruskan trafik ke ingress gateway. Sebelum menentukan parameter ini, pastikan bahwa algoritma penjadwalan untuk instans CLB adalah weighted round-robin (WRR).
Contoh konfigurasi service annotations:
serviceAnnotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxx" //Ganti lb-xxxxx dengan ID instans CLB yang Anda buat di konsol CLB.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'false' //Atur nilai menjadi false karena pendengar yang ada secara default tertimpa berdasarkan Istio gateway.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:80" //Ganti ${YOUR_VGROUP_ID} dengan ID grup vServer dari instans CLB.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "60" //Jika Anda mengatur bobot menjadi 0, ingress gateway tidak lagi menerima trafik.
Langkah 2: Secara manual terjemahkan konfigurasi Ingress ke konfigurasi sumber daya Istio seperti konfigurasi VirtualService dan DestinationRule
Kode YAML berikut memberikan contoh cara menerjemahkan konfigurasi Ingress ke konfigurasi VirtualService:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloworld
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- backend:
serviceName: helloworld
servicePort: 80
path: /helloworld(/|$)(.*)
host: example.comKonfigurasi VirtualService yang diterjemahkan:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: example-vs
spec:
gateways:
- istio-system/ingressgateway ## nama gateway Anda
hosts:
- example.com
http:
- name: route-helloworld
match:
- uri:
prefix: /helloworld/
- uri:
prefix: /helloworld
rewrite:
uri: /
route:
- destination:
host: helloworld
port:
number: 80VirtualService dan DestinationRule dapat diterapkan di namespace yang sama dengan penyebaran layanan terkait. Jika Anda menerapkannya di namespace yang berbeda, atur nilai destination.host dalam format FQDN.
Langkah 3: Verifikasi konfigurasi
Verifikasi bahwa konfigurasi valid dan berlaku dengan memeriksa alur trafik. Buat instans CLB, kirimkan trafik ke instans CLB, dan periksa apakah alur trafik sesuai dengan harapan. Untuk informasi lebih lanjut, lihat Alur Trafik.
Langkah 4: Sesuaikan bobot setiap instans backend yang terpasang pada instans CLB yang terkait dengan Nginx Ingress Controller untuk secara bertahap memigrasikan trafik ke ingress gateway
Disarankan untuk pertama-tama mengatur bobot ingress gateway ke nilai kecil, seperti 1, dan memeriksa apakah alur trafik sesuai dengan harapan. Kemudian, tingkatkan bobot secara bertahap hingga semua trafik diarahkan ke ingress gateway.
Metode Penyesuaian Bobot:
Untuk menyesuaikan bobot ingress gateway, edit anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight.
Untuk menyesuaikan bobot instans backend yang terpasang pada instans CLB yang terkait dengan Nginx Ingress Controller, edit anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight dari Layanan terkait. Jika tidak ada anotasi terkait bobot yang dikonfigurasi untuk Layanan, pergi ke konsol CLB untuk menyesuaikan bobot.