全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Migrasikan trafik dari Nginx Ingress Controller ke ingress gateway

更新时间:Jul 02, 2025

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

ASM

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:

Catatan

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.com

Konfigurasi 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: 80

VirtualService 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.