All Products
Search
Document Center

Alibaba Cloud Service Mesh:Deskripsi CRD ASMGlobalRateLimiter

Last Updated:Nov 28, 2025

Service Mesh (ASM) memungkinkan Anda mendefinisikan konfigurasi ASMGlobalRateLimiter secara deklaratif melalui Custom Resource Definition (CRD) untuk menerapkan throttling global. Topik ini menjelaskan bidang-bidang dalam CRD ASMGlobalRateLimiter.

Contoh konfigurasi

Contoh 1: Throttling sisi server

Catatan

Contoh ini memerlukan instans ASM versi 1.25.6.74 atau yang lebih baru.

Contoh berikut membatasi akses ke aplikasi httpbin menjadi satu kali per menit.

Klik untuk melihat file YAML

apiVersion: istio.alibabacloud.com/v1
kind: ASMGlobalRateLimiter
metadata:
  name: global-test
spec:
  configs:
  - limit:
      quota: 1
      unit: MINUTE
    target_services:
    - name: httpbin
      port: 8000
    name: default
  applyToTraffic: sidecar_inbound
  rateLimitService:
    host: ratelimit.default.svc.cluster.local # Mengkueri layanan ini untuk menentukan apakah permintaan saat ini perlu di-throttle.
    port: 8081
    timeout:
      seconds: 5
  workloadSelector:
    labels:
      app: httpbin

Contoh 2: Throttling sisi klien

Catatan

Contoh ini memerlukan instans ASM versi 1.25.6.74 atau yang lebih baru.

Contoh berikut membatasi aplikasi sleep agar hanya dapat mengakses layanan httpbin satu kali per menit.

Klik untuk melihat file YAML

apiVersion: istio.alibabacloud.com/v1
kind: ASMGlobalRateLimiter
metadata:
  name: global-test
spec:
  configs:
  - limit:
      quota: 1
      unit: MINUTE
    target_services:
    - name: httpbin
      port: 8000
    name: default
  applyToTraffic: sidecar_outbound
  rateLimitService:
    host: ratelimit.default.svc.cluster.local # Mengkueri layanan ini untuk menentukan apakah permintaan saat ini perlu di-throttle.
    port: 8081
    timeout:
      seconds: 5
  workloadSelector:
    labels:
      app: sleep

Contoh 3: Throttling Waypoint

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

Contoh ini mengonfigurasi aturan throttling untuk sebuah aplikasi pada waypoint default. Jika suatu permintaan berisi header permintaan x-user, sebuah bucket dialokasikan berdasarkan nilai header tersebut untuk membatasi akses menjadi satu kali per menit. Jika permintaan tidak berisi header tersebut, akses dibatasi hingga 20 kali per menit.

Klik untuk melihat file YAML

apiVersion: istio.alibabacloud.com/v1
kind: ASMGlobalRateLimiter
metadata:
  name: global-test
spec:
  configs:
  - limit_overrides:
    - limit:
        quota: 1
        unit: MINUTE
      request_match:
        header_match:
        - distinct: true
          name: x-user
    limit:
      quota: 20
      unit: MINUTE
    target_services:
    - name: httpbin
      port: 8000
    name: default
  applyToTraffic: waypoint
  rateLimitService:
    host: ratelimit.default.svc.cluster.local # Mengkueri layanan ini untuk menentukan apakah permintaan saat ini perlu di-throttle.
    port: 8081
    timeout:
      seconds: 5
  workloadSelector:
    labels:
      gateway.networking.k8s.io/gateway-name: default

spec

Bidang

Tipe

Wajib

Deskripsi

workloadSelector

map<string, string>

Ya

Satu atau lebih label yang menentukan sekumpulan beban kerja di mana aturan throttling berlaku. Ruang lingkup pencarian berbasis label dibatasi pada namespace tempat sumber daya tersebut berada. Untuk informasi lebih lanjut, lihat Pemilih Beban Kerja.

isGateway

bool

Tidak

Menentukan apakah aturan throttling berlaku pada gateway. Nilai default: false.

rateLimitService

RateLimitServiceConfig

Ya

Konfigurasi layanan throttling global.

configs

GlobalRateLimiterConfig[]

Ya

Aturan throttling global. Anda dapat mengonfigurasi beberapa aturan.

applyToTraffic

string

Tidak

Jenis traffic tempat kebijakan pembatasan laju diterapkan. Parameter opsional:

  • sidecar_inbound: Traffic masuk sidecar, yaitu traffic yang diterima oleh aplikasi dengan sidecar terpasang yang bertindak sebagai server.

  • sidecar_outbound: Traffic keluar sidecar, yaitu traffic yang dikirim oleh aplikasi dengan sidecar terpasang yang bertindak sebagai klien.

  • waypoint: Traffic yang diproses oleh Waypoint dalam mode Ambient.

  • gateway: Traffic gateway.

Nilai default adalah sidecar_inbound.

Catatan

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

RateLimitServiceConfig

Bidang

Tipe

Wajib

Deskripsi

host

string

Ya

Nama domain kluster tempat layanan throttling global berada.

port

int

Ya

Port layanan gRPC dari layanan throttling global.

timeout

Duration

Tidak

Periode timeout untuk proxy mesh saat menghubungi layanan throttling global. Contoh: seconds: 1 dan nanos: 1000. nanos menunjukkan nanodetik.

GlobalRateLimiterConfig

Bidang

Tipe

Wajib

Deskripsi

name

string

Ya

Nama aturan throttling.

match

RatelimitMatch

Ya

Kriteria cocok.

limit

GlobalServiceLimitConfig

Ya

Konfigurasi ambang batas throttling.

limit_overrides

GlobalRateLimitOverrideConfig[]

Tidak

Menentukan apakah akan menimpa ambang batas throttling yang telah dikonfigurasi. Anda dapat menggunakan bidang ini untuk menentukan ambang batas throttling secara individual untuk permintaan tertentu. Anda dapat mengonfigurasi beberapa penimpaan ambang batas throttling.

Catatan

Bidang ini didukung hanya oleh instance ASM versi V1.19.0 atau lebih baru.

target_services

TargetServiceRef[]

Tidak

Layanan tempat kebijakan throttling 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 yang 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 tersebut.

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 entri 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 dalam 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 tersebut.

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

Contoh 3

Asumsikan VirtualService berikut ada dalam 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 entri rute bernama default dalam VirtualService tersebut.

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

RatelimitMatch

Bidang

Tipe

Wajib

Deskripsi

vhost

VirtualHostMatch

Ya

Kriteria cocok untuk host virtual.

GlobalServiceLimitConfig

Bidang

Tipe

Wajib

Deskripsi

unit

string

Ya

Satuan waktu throttling. Nilai valid:

  • MINUTE: menit

  • SECOND: detik

quota

int

Ya

Jumlah total permintaan yang diizinkan per satuan waktu.

GlobalRateLimitOverrideConfig

Bidang

Tipe

Wajib

Deskripsi

request_match

RequestMatcher

Ya

Kriteria yang harus dipenuhi permintaan saat konfigurasi penimpaan ambang batas throttling diterapkan. Ambang batas throttling yang ditentukan dalam konfigurasi penimpaan hanya diterapkan pada permintaan yang sesuai dengan kriteria.

limit

GlobalServiceLimitConfig

Ya

Ambang batas throttling yang ditentukan dalam konfigurasi penimpaan ambang batas throttling.

VirtualHostMatch

Bidang

Tipe

Wajib

Deskripsi

name

string

Ya

Nama host virtual yang akan dicocokkan.

port

int

Tidak

Port permintaan yang akan dicocokkan.

route

RouteMatch

Tidak

Nama rute yang sesuai dengan port permintaan yang akan dicocokkan.

RouteMatch

Bidang

Tipe

Wajib

Deskripsi

name_match

string

Tidak

Nama rute yang akan dicocokkan. Bidang ini menentukan satu rute dalam layanan virtual.

header_match

HeaderMatcher[]

Tidak

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

Catatan

Pada instance ASM versi V1.19.0 dan lebih baru, bidang ini sudah tidak digunakan lagi. Kami merekomendasikan Anda menggunakan GlobalRateLimitOverrideConfig untuk mencocokkan permintaan.

RequestMatcher

Catatan

Anda dapat menggunakan beberapa bidang dalam bagian RequestMatcher secara bersamaan. Jika demikian, suatu permintaan hanya cocok jika memenuhi semua kriteria yang ditentukan.

Bidang

Tipe

Wajib

Deskripsi

header_match

HeaderMatcher[]

Tidak

Header untuk mencocokkan permintaan. Anda dapat mengonfigurasi beberapa header.

remote_address

RemoteAddressMatcher

Tidak

Alamat IP sumber untuk mencocokkan permintaan.

query_match

QueryParameterMatcher[]

Tidak

Parameter kueri untuk mencocokkan permintaan. Anda dapat mengonfigurasi beberapa parameter kueri.

RemoteAddressMatcher

Bidang

Tipe

Wajib

Deskripsi

address

string

Ya

Alamat IP sumber untuk mencocokkan permintaan.

v4_prefix_mask_len

uint32

Tidak

Jika Anda ingin mencocokkan rentang alamat IPv4, masukkan panjang subnet mask dari alamat IPv4 di bidang ini, dan masukkan alamat IPv4 di bidang alamat. Rentang alamat yang dihitung setelah subnet mask digunakan akan dicocokkan.

v6_prefix_mask_len

uint32

Tidak

Jika Anda ingin mencocokkan rentang alamat IPv6, masukkan panjang subnet mask dari alamat IPv6 di bidang ini, dan masukkan alamat IPv6 di bidang alamat. Rentang alamat yang dihitung setelah subnet mask digunakan akan dicocokkan.

HeaderMatcher

Bidang

Tipe

Wajib

Deskripsi

name

string

Tidak

Nama header.

Pilih salah satu dari berikut

regex_match

string

Tidak

Ekspresi reguler yang digunakan untuk melakukan pencocokan header.

exact_match

string

Tidak

Nilai yang digunakan untuk melakukan pencocokan eksak.

prefix_match

string

Tidak

Awalan yang digunakan untuk melakukan pencocokan awalan.

suffix_match

string

Tidak

Akhiran yang digunakan untuk melakukan pencocokan akhiran.

present_match

bool

Tidak

  • Jika parameter ini diatur ke true, pencocokan header dilakukan berdasarkan keberadaan header dalam permintaan. Nilai header diabaikan.

  • Jika parameter ini diatur ke false, pencocokan header dilakukan berdasarkan ketidakhadiran header.

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 tidak dibalik.

QueryParameterMatcher

Bidang

Tipe

Wajib

Deskripsi

name

string

Ya

Nama parameter kueri.

Pilih salah satu dari berikut

exact_match

string

Tidak

Nilai yang digunakan untuk melakukan pencocokan eksak pada parameter kueri.

prefix_match

string

Tidak

Awalan yang digunakan untuk melakukan pencocokan awalan pada parameter kueri.

suffix_match

string

Tidak

Akhiran yang digunakan untuk melakukan pencocokan akhiran pada parameter kueri.

regex_match

string

Tidak

Ekspresi reguler yang digunakan untuk melakukan pencocokan ekspresi reguler pada parameter kueri.

contains_match

string

Tidak

Konten yang digunakan untuk melakukan pencocokan berdasarkan keberadaan substring pada parameter kueri. Nilai parameter kueri harus mengandung substring yang ditentukan.

present_match

bool

Tidak

  • Jika parameter ini diatur ke true, pencocokan parameter kueri dilakukan berdasarkan keberadaan parameter kueri dalam permintaan. Konten diabaikan.

  • Anda tidak dapat menetapkan parameter ini ke false. Jika Anda menetapkan parameter ini ke false, tidak ada konfigurasi yang ditentukan dan Anda harus menentukan kriteria pencocokan lainnya.

ignore_case

bool

Tidak

Menentukan apakah akan mengabaikan sensitivitas huruf besar/kecil saat Anda melakukan pencocokan parameter kueri.

Referensi

Untuk informasi selengkapnya, lihat Menggunakan ASMGlobalRateLimiter untuk mengonfigurasi throttling global pada gerbang masuk dan traffic masuk ke layanan.