Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:ASMLocalRateLimiter CRD fields

Última atualização: Sep 29, 2026

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

Como funciona

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

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

  2. A reposição dos tokens ocorre em um intervalo regular (fill_interval).

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

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

Importante

O valor de quota se aplica 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 é n x quota. Recalcule as cotas sempre que dimensionar o número de instâncias.

Visão geral da estrutura da CRD

Esta estrutura básica mostra como os campos se aninham na 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.

Expanda 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

Anteriores a 1.15.3.105

istio.alibabacloud.com/v1beta1

Se você definiu anteriormente a 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 implante novamente o cluster.

spec

Para mais informações, consulte Configure local rate limiting on an ingress gateway.

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 informações, consulte Workload Selector.

isGateway

bool

Não

Defina como true se a regra for direcionada a 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 de 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 o 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 o 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 repõe o bucket a cada segundo. Junto com quota, isso define a taxa de requisição permitida.

quota

int

Não

Número de tokens. O valor deve ser um inteiro. Por exemplo, quota: 100 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 do Envoy. true: um bucket por conexão downstream. Requer o ASM V1.13.4 ou posterior.

custom_response_body

string

Não

Corpo de resposta retornado quando uma requisição atinge o limite de taxa. Requer o 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 o ASM V1.13.4 ou posterior.

RateLimitOverrideConfig

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

Campo

Tipo

Obrigatório

Descrição

request_match

RequestMatcher

Sim

Critérios que identificam as requisições que recebem a substituição.

limit

LimitConfig

Sim

Limite de taxa para requisições correspondidas. Apenas fill_interval e quota entram em vigor. O sistema herda os valores de per_downstream_connection, custom_response_body e response_header_to_add do LocalRateLimiterConfig.limit pai.

VirtualHostMatch

Campo

Tipo

Obrigatório

Descrição

name

string

Sim

Nome do host virtual para correspondência.

port

int

Não

Porta para correspondência.

route

RouteMatch

Não

Rota para correspondência 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

Descontinuado no ASM V1.19.0 e posteriores. Use RateLimitOverrideConfig em vez disso.

RequestMatcher

Ao especificar tanto header_match quanto query_match, a requisição deve satisfazer todas as condições para que haja correspondência.

Campo

Tipo

Obrigatório

Descrição

header_match

HeaderMatcher[]

Não

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

query_match

QueryParameterMatcher[]

Não

Critérios de correspondência com base 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 regra de correspondência.

Campo

Tipo

Obrigatório

Descrição

name

string

Não

Nome do cabeçalho.

regex_match

string

Não

Corresponde ao valor do cabeçalho com 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 fim do valor do cabeçalho.

present_match

bool

Não

true: há correspondência se o cabeçalho existir, independentemente do valor. false: há correspondência se o cabeçalho não existir.

invert_match

bool

Não

Inverte o resultado da correspondência. Padrão: false. Quando true, o sistema trata como não correspondente uma requisição que normalmente corresponderia, 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 regra de correspondência.

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 fim do valor do parâmetro.

regex_match

string

Não

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

contains_match

string

Não

Há correspondência se o valor do parâmetro contiver a string especificada.

present_match

bool

Não

true: há correspondência 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 ao comparar valores.