全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Bidang CRD ASMLocalRateLimiter

更新时间:Nov 11, 2025

Service Mesh (ASM) memungkinkan Anda mengonfigurasi pembatasan laju lokal secara deklaratif melalui CustomResourceDefinition (CRD) ASMLocalRateLimiter. Topik ini menyediakan contoh konfigurasi dan menjelaskan berbagai bidang dalam ASMLocalRateLimiter.

Contoh konfigurasi

Contoh 1: Pembatasan laju gerbang

Konfigurasi berikut menerapkan pembatasan laju pada gerbang untuk mencegah layanan downstream kewalahan oleh lalu lintas masuk. Dengan mengatur seconds ke 1 dan quota ke 100, sistem mengeluarkan 100 token per detik, sehingga gerbang dapat memproses maksimal 100 permintaan per detik.

Catatan

limit.quota dalam konfigurasi ini berlaku untuk satu instans gerbang. Jika gerbang memiliki n instans, ambang batas pembatasan laju untuk layanan backend dari rute test1 adalah n × quota. Jika Anda mengubah jumlah instans gerbang, Anda juga harus menyesuaikan ambang batas pembatasan laju tersebut.

Perluas untuk melihat konten YAML

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMLocalRateLimiter
metadata:
  name: for-api-test
  namespace: default
spec:
  workloadSelector:
    labels:
      app: istio-ingressgateway
  isGateway: true
  configs:
    - match:
        vhost:
          name: "www.example1.com"   # Jika beberapa nama domain host dikonfigurasi di gerbang, Anda hanya perlu memasukkan yang terakhir.
          port: 80
          route:
            name_match: "test1"   # Nama rute dalam konfigurasi routing VirtualService. Jika tidak ada rute dengan nama yang sesuai dalam konfigurasi routing VirtualService, konfigurasi ini tidak berlaku.
      limit:
         fill_interval:
            seconds: 1
         quota: 10
    - match:
        vhost:
          name: "www.example2.com"
          port: 80
          route:
            name_match: "test1"
      limit:
         fill_interval:
            seconds: 1
         quota: 100

Contoh 2: Pembatasan laju sisi klien

Catatan

Contoh ini memerlukan instans ASM versi 1.25.6.74 atau lebih baru.

Contoh berikut membatasi aplikasi sleep menjadi satu permintaan ke layanan httpbin setiap 10 detik.

Perluas untuk melihat konten YAML

apiVersion: istio.alibabacloud.com/v1
kind: ASMLocalRateLimiter
metadata:
  name: client-limit
spec:
  configs:
    - limit:
        custom_response_body: '{"ret_code": xxx, "message": "Your request be limited" }'
        fill_interval:
          seconds: 10
        quota: 1
      target_services:
      - name: httpbin
        port: 8000
  applyToTraffic: sidecar_outbound
  workloadSelector:
    labels:
      app: sleep

Contoh 3: Pembatasan laju sisi server

Catatan

Contoh ini memerlukan instans ASM versi 1.25.6.74 atau lebih baru.

Contoh berikut membatasi akses ke aplikasi httpbin menjadi sekali setiap 10 detik.

Perluas untuk melihat konten YAML

apiVersion: istio.alibabacloud.com/v1
kind: ASMLocalRateLimiter
metadata:
  name: server-limit
spec:
  configs:
    - limit:
        custom_response_body: '{"ret_code": xxx, "message": "Your request be limited" }'
        fill_interval:
          seconds: 10
        quota: 1
      target_services:
      - name: httpbin
        port: 8000
  applyToTraffic: sidecar_inbound
  workloadSelector:
    labels:
      app: httpbin

Contoh 4: Pembatasan laju waypoint

Contoh berikut membatasi waypoint bernama default agar hanya meneruskan satu permintaan ke layanan httpbin setiap 10 detik.

Contoh ini hanya berlaku untuk mode Ambient dan memerlukan instans ASM versi 1.25.6.74 atau lebih baru.

Perluas untuk melihat konten YAML

apiVersion: istio.alibabacloud.com/v1
kind: ASMLocalRateLimiter
metadata:
  name: waypoint-limit
spec:
  configs:
    - limit:
        custom_response_body: '{"ret_code": xxx, "message": "Your request be limited" }'
        fill_interval:
          seconds: 10
        quota: 1
      target_services:
      - name: httpbin
        port: 8000
  applyToTraffic: waypoint
  workloadSelector:
    labels:
      gateway.networking.k8s.io/gateway-name: default

Deskripsi bidang

apiVersion

  • Jika instans ASM Anda versi 1.15.3.105 atau lebih baru, gunakan apiVersion: istio.alibabacloud.com/v1. Jika Anda memiliki konfigurasi yang sudah ada di kluster ACK, ubah apiVersion: istio.alibabacloud.com/v1beta1 dalam CRD ASMLocalRateLimiter yang sesuai menjadi apiVersion: istio.alibabacloud.com/v1, lalu redeploy.

  • Jika versi instans ASM Anda lebih lama dari 1.15.3.105, gunakan apiVersion: istio.alibabacloud.com/v1beta1.

spec

Tabel berikut menjelaskan bidang-bidang dalam bagian spec. Untuk informasi selengkapnya tentang fitur-fitur ASMLocalRateLimiter dan contoh penggunaannya, lihat Konfigurasikan pembatasan laju lokal untuk gerbang masuk.

Bidang

Tipe

Diperlukan

Deskripsi

workloadSelector

map<string, string>

Ya

Satu atau beberapa label yang digunakan untuk menentukan kumpulan pod tertentu tempat konfigurasi pembatasan laju berlaku. Cakupan pencarian label dibatasi pada namespace konfigurasi tempat sumber daya tersebut berada. Untuk informasi selengkapnya, lihat Workload Selector.

isGateway

bool

Tidak

Menentukan apakah konfigurasi berlaku untuk gerbang. Nilai default adalah false.

configs

LocalRateLimiterConfig[]

Ya

Konfigurasi pembatasan laju lokal. Anda dapat mengonfigurasi beberapa konfigurasi.

applyToTraffic

string

Tidak

Jenis lalu lintas tempat kebijakan pembatasan laju diterapkan. Parameter opsional:

  • sidecar_inbound: Lalu lintas arah masuk sidecar, yaitu lalu lintas yang diterima oleh aplikasi dengan sidecar terpasang yang bertindak sebagai server.

  • sidecar_outbound: Lalu lintas arah keluar sidecar, yaitu lalu lintas yang dikirim oleh aplikasi dengan sidecar terpasang yang bertindak sebagai klien.

  • waypoint: Lalu lintas yang diproses oleh Waypoint dalam mode Ambient.

  • gateway: Lalu lintas gerbang.

Nilai default adalah sidecar_inbound.

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

LocalRateLimiterConfig

Bidang

Tipe

Diperlukan

Deskripsi

name

string

Ya

Nama konfigurasi pembatasan laju tunggal.

match

RatelimitMatch

Ya

Kondisi pencocokan.

limit

LimitConfig

Ya

Konfigurasi ambang batas pembatasan laju.

limit_overrides

RateLimitOverrideConfig[]

Tidak

Konfigurasi penggantian ambang batas pembatasan laju. Anda dapat menggunakan bidang ini untuk menentukan ambang batas pembatasan laju terpisah untuk permintaan tertentu. Anda dapat mengonfigurasi beberapa konfigurasi penggantian.

Catatan

Hanya didukung di ASM versi 1.19.0 dan yang lebih baru.

target_services

TargetServiceRef[]

Tidak

Layanan tempat kebijakan pembatasan laju diterapkan.

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

TargetServiceRef

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

Bidang

Tipe

Wajib

Deskripsi

kind

string

Tidak

Jenis layanan tempat kebijakan pembatasan laju diterapkan. Nilai valid:

  • Service

  • ServiceEntry

  • VirtualService

Nilai default adalah Service.

name

string

Ya

Nama layanan tempat kebijakan pembatasan laju diterapkan.

namespace

string

Tidak

Namespace tempat layanan yang dikenai kebijakan pembatasan laju berada. Nilai default adalah namespace tempat Anda mendefinisikan kebijakan pembatasan laju.

port

int32

Tidak

Port layanan tempat kebijakan pembatasan laju diterapkan.

section_name

string

Tidak

Properti tambahan layanan. Bidang ini hanya berlaku untuk VirtualService.

  • VirtualService: Nilainya adalah nama rute yang didefinisikan dalam VirtualService.

Contoh 1

Contoh berikut berlaku untuk port 8000 layanan httpbin di namespace default.

target_services:
- kind: Service
  namespace: default
  name: httpbin
  port: 8000

Contoh 2

Asumsikan ServiceEntry berikut ada di instans saat ini.

apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
  name: se-httpbin-external
spec:
  hosts:
  - httpbin.test.com
  location: MESH_EXTERNAL
  ports:
  - name: http
    number: 80
    protocol: HTTP
  - name: https
    number: 443
    protocol: HTTPS
  resolution: DNS

Kebijakan berikut berlaku untuk port 80 ServiceEntry ini.

target_services:
- kind: ServiceEntry
  namespace: default
  name: se-httpbin-external
  port: 80

Contoh 3

Asumsikan VirtualService berikut ada di instans saat ini.

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: vs-httpbin
spec:
  hosts:
  - httpbin.test.com
  http:
  - name: default
    route:
    - destination:
        host: httpbin
        port:
          number: 8000

Kebijakan berikut berlaku untuk aturan routing bernama default dalam VirtualService tersebut.

target_services:
- kind: VirtualService
  namespace: default
  name: vs-httpbin
  section_name: default

RemoteAddressMatcher

Bidang

Tipe

Wajib

Deskripsi

distinct

bool

Tidak

Menentukan apakah pembatasan laju diterapkan secara terpisah untuk IP sumber permintaan yang berbeda. Jika distinct diatur ke true, Anda tidak dapat menentukan address.

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

RatelimitMatch

Bidang

Tipe

Diperlukan

Deskripsi

vhost

VirtualHostMatch

Tidak

Kondisi pencocokan VirtualHost.

LimitConfig

Bidang

Tipe

Diperlukan

Deskripsi

status

int

Tidak

Kode respons HTTP kustom untuk permintaan yang dikendalikan alirannya. Saat permintaan dikendalikan alirannya, kode respons ini dikembalikan. Nilai default adalah 429. Nilainya harus lebih besar dari atau sama dengan 400.

Catatan

Bidang ini didukung di ASM versi 1.24.6.64 dan yang lebih baru.

fill_interval

Duration

Tidak

Unit waktu untuk pengisian token, misalnya, seconds: 1 atau nanos: 1000. nanos menunjukkan nanodetik.

quota

int

Tidak

Jumlah token. Nilainya harus berupa bilangan bulat. Contoh: 1000.

per_downstream_connection

bool

Tidak

Cakupan bucket token pengendali laju. Nilai default adalah false.

Nilai valid:

  • false: Bucket token dibagi di antara semua thread pekerja, dan pembatasan laju diterapkan pada setiap proses Envoy.

  • true: Bucket token dialokasikan untuk setiap koneksi. Pembatasan laju diterapkan pada setiap koneksi, memungkinkan permintaan dikendalikan alirannya berdasarkan per koneksi.

Catatan

Hanya didukung di ASM versi 1.13.4 dan yang lebih baru.

custom_response_body

string

Tidak

Konten badan respons kustom yang dikembalikan saat permintaan dikendalikan alirannya.

Catatan

Hanya didukung di ASM versi 1.13.4 dan yang lebih baru.

response_header_to_add

map[string]string

Tidak

Konten header kustom yang ditambahkan saat permintaan dikendalikan alirannya.

Catatan

Hanya didukung di ASM versi 1.13.4 dan yang lebih baru.

RateLimitOverrideConfig

Bidang

Tipe

Diperlukan

Deskripsi

request_match

RequestMatcher

Ya

Kondisi pencocokan permintaan yang ditentukan oleh konfigurasi penggantian ambang batas pembatasan laju. Hanya permintaan yang memenuhi kondisi pencocokan yang akan menerapkan ambang batas pembatasan laju dalam konfigurasi penggantian.

limit

LimitConfig

Ya

Ambang batas pembatasan laju permintaan yang ditentukan oleh konfigurasi penggantian ambang batas pembatasan laju.

Catatan

Saat bidang limit dideklarasikan dalam konfigurasi penggantian ambang batas pembatasan laju (RateLimitOverrideConfig), hanya bidang fill_interval dan quota yang berlaku. Bidang lainnya (per_downstream_connection, custom_response_body, dan response_header_to_add) tetap konsisten dengan deklarasi dalam bidang LocalRateLimiterConfig.limit.

VirtualHostMatch

Bidang

Tipe

Diperlukan

Deskripsi

name

string

Ya

Nama VirtualHost yang dicocokkan.

port

int

Tidak

Port permintaan yang dicocokkan.

route

RouteMatch

Tidak

Nama rute yang sesuai dengan antarmuka permintaan yang dicocokkan.

RouteMatch

Bidang

Tipe

Diperlukan

Deskripsi

name_match

string

Tidak

Nama rute yang dicocokkan, yang sesuai dengan nama rute tunggal di bawah VirtualService.

header_match

HeaderMatcher[]

Tidak

Header permintaan layanan yang dicocokkan. Anda dapat mengonfigurasi beberapa header.

Penting

Di ASM versi 1.19.0 dan yang lebih baru, bidang ini telah ditinggalkan. Gunakan RateLimitOverrideConfig untuk mencocokkan permintaan.

RequestMatcher

Catatan

Anda dapat menggunakan beberapa bidang dalam RequestMatcher secara bersamaan. Jika beberapa bidang digunakan, permintaan harus memenuhi semua kondisi pencocokan agar dianggap cocok.

Bidang

Tipe

Diperlukan

Deskripsi

header_match

HeaderMatcher[]

Tidak

Header permintaan yang dicocokkan. Anda dapat mengonfigurasi beberapa header.

query_match

QueryParameterMatcher[]

Tidak

Parameter kueri permintaan yang dicocokkan. Anda dapat mengonfigurasi beberapa parameter kueri.

HeaderMatcher

Bidang

Tipe

Diperlukan

Deskripsi

name

string

Tidak

Nama header.

Pilih salah satu dari berikut ini

regex_match

string

Tidak

Pencocokan ekspresi reguler.

exact_match

string

Tidak

Pencocokan eksak.

prefix_match

string

Tidak

Pencocokan awalan. Mencocokkan berdasarkan awalan string.

suffix_match

string

Tidak

Pencocokan akhiran. Mencocokkan berdasarkan akhiran string.

present_match

bool

Tidak

  • Jika parameter ini diatur ke true, header permintaan harus ada, terlepas dari nilainya.

  • Jika parameter ini diatur ke false, header permintaan tidak boleh ada.

invert_match

bool

Tidak

Nilai default adalah false.

  • Jika parameter ini diatur ke true, hasil pencocokan dibalik.

  • Jika parameter ini diatur ke false, hasil pencocokan asli digunakan.

distinct

bool

Tidak

Menentukan apakah bucket pembatasan laju terpisah dialokasikan untuk nilai header permintaan yang berbeda. Jika distinct diatur ke true, Anda tidak dapat menggunakan jenis pencocokan lainnya.

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

QueryParameterMatcher

Bidang

Tipe

Diperlukan

Deskripsi

name

string

Ya

Nama parameter query.

Pilih salah satu dari berikut ini

exact_match

string

Tidak

Mencocokkan secara eksak isi parameter kueri.

prefix_match

string

Tidak

Mencocokkan awalan isi parameter kueri.

suffix_match

string

Tidak

Mencocokkan akhiran isi parameter kueri.

regex_match

string

Tidak

Mencocokkan isi parameter kueri dengan ekspresi reguler.

contains_match

string

Tidak

Mencocokkan berdasarkan keberadaan substring tertentu dalam isi parameter kueri.

present_match

bool

Tidak

  • Jika parameter ini diatur ke true, dilakukan pencocokan keberadaan. Parameter kueri yang ditentukan harus ada, terlepas dari nilainya.

  • Anda tidak dapat mengatur parameter ini ke false. Mengaturnya ke false sama dengan tidak mengonfigurasinya, dan Anda harus menentukan kondisi pencocokan lainnya.

ignore_case

bool

Tidak

Menentukan apakah pencocokan parameter kueri mengabaikan perbedaan huruf besar/kecil.