Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Campos do CRD ASMLocalRateLimiter

Última atualização: Jun 28, 2026

O ASMLocalRateLimiter é uma CustomResourceDefinition (CRD) usada para definir configurações de limitação de taxa local de forma declarativa no Service Mesh (ASM).

Funcionamento

O ASMLocalRateLimiter usa um algoritmo de token bucket para controlar a taxa de requisições:

  1. Cada proxy Envoy mantém um token bucket com uma quantidade configurada de tokens (quota).

  2. Os tokens são reabastecidos em intervalos regulares (fill_interval).

  3. Se não houver tokens disponíveis, o sistema rejeita a requisição com o status HTTP 429 (configurável).

Por padrão, todas as threads de trabalho em um único processo Envoy compartilham o mesmo token bucket. Defina per_downstream_connection como true para alocar um bucket separado por conexão.

Importante

O valor de quota aplica-se a uma única instância do Envoy. Se você tiver n instâncias de gateway, o limite de taxa efetivo para os serviços de backend será n x quota. Recalcule as cotas sempre que dimensionar o número de instâncias.

Visão geral da estrutura do CRD

Este esqueleto mostra como os campos se aninham no CRD:

apiVersion: istio.alibabacloud.com/v1beta1   # or v1
kind: ASMLocalRateLimiter
metadata:
  name: <rule-name>
  namespace: <namespace>
spec:
  workloadSelector:
    labels:
      <label-key>: <label-value>
  isGateway: true | false
  configs:
    - name: <config-name>
      match:
        vhost:
          name: <virtual-host-name>
          port: <port>
          route:
            name_match: <route-name>
      limit:
        status: <http-status-code>
        fill_interval:
          seconds: <int>
          nanos: <int>
        quota: <int>
        per_downstream_connection: true | false
        custom_response_body: <string>
        response_header_to_add:
          <header-name>: <header-value>
      limit_overrides:
        - request_match:
            header_match:
              - name: <header-name>
                exact_match: <value>
            query_match:
              - name: <param-name>
                exact_match: <value>
          limit:
            fill_interval:
              seconds: <int>
            quota: <int>

Exemplo de configuração

O exemplo a seguir aplica limitação de taxa a um gateway de entrada. Dois hosts virtuais recebem limites diferentes: www.example1.com com 10 requisições por segundo e www.example2.com com 100 requisições por segundo.

Expandir para visualizar o conteúdo 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" # If multiple vhosts are configured on the gateway, enter the name of the last vhost.
          port: 80
          route:
            name_match: "test1" # The name of the route that is configured for the virtual service. If the virtual service does not have the specified route, the rate limiting does not take effect.
      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

Valores de apiVersion suportados

Versão do ASM

Valor de apiVersion

1.15.3.105 ou posterior

istio.alibabacloud.com/v1

Anterior a 1.15.3.105

istio.alibabacloud.com/v1beta1

Se você definiu anteriormente o apiVersion como istio.alibabacloud.com/v1beta1 para o ASMCircuitBreaker em um cluster do Container Service for Kubernetes (ACK), altere o valor para istio.alibabacloud.com/v1 e reimplante o cluster.

spec

Para mais informações, consulte Configurar limitação de taxa local em um gateway de entrada.

Campo

Tipo

Obrigatório

Descrição

workloadSelector

map

Sim

Rótulos que selecionam os pods onde a limitação de taxa entra em vigor. A correspondência restringe-se ao namespace do recurso. Para mais detalhes, veja Workload Selector.

isGateway

bool

Não

Defina como true se a regra tiver como alvo um gateway. Padrão: false.

configs

LocalRateLimiterConfig[]

Sim

Regras de limitação de taxa.

LocalRateLimiterConfig

Campo

Tipo

Obrigatório

Descrição

name

string

Sim

Nome da regra de limitação de taxa.

match

RatelimitMatch

Sim

Critérios que determinam a quais requisições esta regra se aplica.

limit

LimitConfig

Sim

Configurações do token bucket que definem o limite de taxa.

limit_overrides

RateLimitOverrideConfig[]

Não

Substituições que aplicam limites de taxa diferentes a requisições específicas. Requer ASM V1.19.0 ou posterior.

RatelimitMatch

Campo

Tipo

Obrigatório

Descrição

vhost

VirtualHostMatch

Não

Critérios para corresponder a um host virtual.

LimitConfig

Campo

Tipo

Obrigatório

Descrição

status

int

Não

Código de status HTTP retornado quando uma requisição atinge o limite de taxa. Padrão: 429. Deve ser 400 ou superior. Requer ASM V1.24.6.64 ou posterior.

fill_interval

Duration

Não

Frequência de adição de tokens ao bucket. Especifique seconds (inteiro) ou nanos (nanossegundos). Por exemplo, seconds: 1 reabastece o bucket a cada segundo. Em conjunto com quota, este campo define a taxa de requisições permitida.

quota

int

Não

Quantidade de tokens. O valor deve ser um número inteiro. Por exemplo, quota: 100 combinado com seconds: 1 permite 100 requisições por segundo por instância do Envoy.

per_downstream_connection

bool

Não

Escopo do token bucket. false (padrão): um bucket compartilhado entre todas as threads de trabalho por processo Envoy. true: um bucket por conexão downstream. Requer ASM V1.13.4 ou posterior.

custom_response_body

string

Não

Corpo da resposta retornado quando uma requisição atinge o limite de taxa. Requer ASM V1.13.4 ou posterior.

response_header_to_add

map[string]string

Não

Cabeçalhos de resposta adicionados quando uma requisição atinge o limite de taxa. Requer ASM V1.13.4 ou posterior.

RateLimitOverrideConfig

Use substituições para aplicar um limite de taxa diferente a requisições que correspondam a cabeçalhos ou parâmetros de consulta específicos, mantendo o limite base para todo o restante do tráfego.

Campo

Tipo

Obrigatório

Descrição

request_match

RequestMatcher

Sim

Critérios que identificam as requisições sujeitas à substituição.

limit

LimitConfig

Sim

Limite de taxa para as requisições correspondentes. Apenas fill_interval e quota têm efeito. Os valores de per_downstream_connection, custom_response_body e response_header_to_add são herdados do LocalRateLimiterConfig.limit pai.

VirtualHostMatch

Campo

Tipo

Obrigatório

Descrição

name

string

Sim

Nome do host virtual a corresponder.

port

int

Não

Porta a corresponder.

route

RouteMatch

Não

Rota a corresponder dentro do host virtual.

RouteMatch

Campo

Tipo

Obrigatório

Descrição

name_match

string

Não

Nome de uma rota específica definida em um serviço virtual.

header_match

HeaderMatcher[]

Não

Obsoleto no ASM V1.19.0 e posteriores. Use RateLimitOverrideConfig em seu lugar.

RequestMatcher

Quando header_match e query_match são especificados, a requisição deve satisfazer todas as condições para haver correspondência.

Campo

Tipo

Obrigatório

Descrição

header_match

HeaderMatcher[]

Não

Critérios de correspondência baseados em cabeçalho.

query_match

QueryParameterMatcher[]

Não

Critérios de correspondência baseados em parâmetro de consulta.

HeaderMatcher

Especifique exatamente um campo de modo de correspondência (regex_match, exact_match, prefix_match, suffix_match ou present_match) por matcher.

Campo

Tipo

Obrigatório

Descrição

name

string

Não

Nome do cabeçalho.

regex_match

string

Não

Corresponde o valor do cabeçalho a uma expressão regular.

exact_match

string

Não

Corresponde exatamente ao valor do cabeçalho.

prefix_match

string

Não

Corresponde ao início do valor do cabeçalho.

suffix_match

string

Não

Corresponde ao final do valor do cabeçalho.

present_match

bool

Não

true: corresponde se o cabeçalho existir, independentemente do valor. false: corresponde se o cabeçalho não existir.

invert_match

bool

Não

Inverte o resultado da correspondência. Padrão: false. Quando definido como true, uma requisição que normalmente corresponderia passa a não corresponder, e vice-versa.

QueryParameterMatcher

Especifique exatamente um campo de modo de correspondência (exact_match, prefix_match, suffix_match, regex_match, contains_match ou present_match) por matcher.

Campo

Tipo

Obrigatório

Descrição

name

string

Sim

Nome do parâmetro de consulta.

exact_match

string

Não

Corresponde exatamente ao valor do parâmetro.

prefix_match

string

Não

Corresponde ao início do valor do parâmetro.

suffix_match

string

Não

Corresponde ao final do valor do parâmetro.

regex_match

string

Não

Corresponde o valor do parâmetro a uma expressão regular.

contains_match

string

Não

Corresponde se o valor do parâmetro contiver a string especificada.

present_match

bool

Não

true: corresponde se o parâmetro existir, independentemente do valor. false não é válido e equivale a omitir este campo.

ignore_case

bool

Não

Ignora maiúsculas e minúsculas na comparação de valores.