ASMGlobalRateLimiter es una definición de recurso personalizado (CRD) que configura el limitador de velocidad global en Service Mesh (ASM). Se utiliza para seleccionar las cargas de trabajo de destino, conectarse a un servicio de limitación de velocidad global y definir reglas de limitación.
Descripción general de la estructura
A continuación se muestra un esquema que indica cómo se anidan los campos de ASMGlobalRateLimiter. Los campos obligatorios se marcan con *.
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMGlobalRateLimiter
metadata:
name: <name>
namespace: <namespace>
spec:
workloadSelector: * # map<string, string>
<label-key>: <label-value>
isGateway: # bool (default: false)
rateLimitService: * # RateLimitServiceConfig
host: * # string
port: * # int
timeout: # Duration
seconds: # int
nanos: # int
configs: * # GlobalRateLimiterConfig[]
- name: * # string
match: * # RatelimitMatch
vhost: * # VirtualHostMatch
name: * # string
port: # int
route: # RouteMatch
name_match: # string
header_match: # HeaderMatcher[] (deprecated in V1.19.0+)
limit: * # GlobalServiceLimitConfig
unit: * # string (SECOND | MINUTE)
quota: * # int
limit_overrides: # GlobalRateLimitOverrideConfig[] (V1.19.0+)
- request_match: * # RequestMatcher
header_match: # HeaderMatcher[]
remote_address: # RemoteAddressMatcher
query_match: # QueryParameterMatcher[]
limit: * # GlobalServiceLimitConfig
unit: * # string
quota: * # int
spec
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
workloadSelector |
map |
Sí |
- |
Etiquetas que seleccionan las cargas de trabajo a las que aplica esta regla de limitación. Su alcance se restringe al namespace del recurso. Para obtener más información, consulte Workload Selector. |
|
isGateway |
bool |
No |
false |
Establezca este valor en |
|
rateLimitService |
Sí |
- |
Configuración de conexión del servicio de limitación de velocidad global. |
|
|
configs |
Sí |
- |
Reglas de limitación que se aplicarán. |
RateLimitServiceConfig
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
host |
string |
Sí |
- |
Nombre de dominio del clúster que aloja el servicio de limitación de velocidad global. |
|
port |
int |
Sí |
- |
Puerto gRPC del servicio de limitación de velocidad global. |
|
timeout |
Duration |
No |
- |
Tiempo de espera para que el proxy de la malla se conecte al servicio de limitación de velocidad global. Especifíquelo como |
GlobalRateLimiterConfig
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
name |
string |
Sí |
- |
Nombre de la regla de limitación. |
|
match |
Sí |
- |
Criterios que deben cumplir las solicitudes entrantes para que se aplique esta regla. |
|
|
limit |
Sí |
- |
Umbral de limitación para las solicitudes coincidentes. |
|
|
limit_overrides |
No |
- |
Anulaciones del umbral de limitación por solicitud. Utilice este campo para establecer límites distintos en subconjuntos específicos de solicitudes coincidentes. Se admiten varias anulaciones. Requiere ASM V1.19.0 o posterior. |
RatelimitMatch
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
vhost |
Sí |
- |
Criterios de coincidencia del host virtual. |
GlobalServiceLimitConfig
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
unit |
string |
Sí |
- |
Unidad de tiempo de la ventana de limitación. Valores válidos: |
|
quota |
int |
Sí |
- |
Número máximo de solicitudes permitidas por unidad de tiempo. |
GlobalRateLimitOverrideConfig
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
request_match |
Sí |
- |
Criterios para seleccionar las solicitudes que reciben el umbral anulado. |
|
|
limit |
Sí |
- |
Umbral de limitación para las solicitudes coincidentes. |
VirtualHostMatch
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
name |
string |
Sí |
- |
Nombre del host virtual que se evaluará. |
|
port |
int |
No |
- |
Puerto que se evaluará. |
|
route |
No |
- |
Criterios de coincidencia de ruta para el puerto especificado. |
RouteMatch
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
name_match |
string |
No |
- |
Nombre de una ruta específica dentro de un servicio virtual que se evaluará. |
|
header_match |
No |
- |
Encabezados que se compararán con las solicitudes entrantes. Se admiten varios encabezados. Obsoleto en ASM V1.19.0 y posteriores. Utilice GlobalRateLimitOverrideConfig en su lugar. |
RequestMatcher
Si se especifican varios campos, la solicitud debe cumplir todos los criterios para coincidir (lógica AND).
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
header_match |
No |
- |
Evalúa las solicitudes mediante encabezados HTTP. Se admiten varios encabezados. |
|
|
remote_address |
No |
- |
Evalúa las solicitudes mediante la dirección IP de origen. |
|
|
query_match |
No |
- |
Evalúa las solicitudes mediante parámetros de consulta. Se admiten varios parámetros. |
RemoteAddressMatcher
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
address |
string |
Sí |
- |
Dirección IP de origen que se evaluará. |
|
v4_prefix_mask_len |
uint32 |
No |
- |
Longitud del prefijo para la coincidencia de rangos CIDR IPv4. Establezca |
|
v6_prefix_mask_len |
uint32 |
No |
- |
Longitud del prefijo para la coincidencia de rangos CIDR IPv6. Establezca |
HeaderMatcher
Cada HeaderMatcher especifica exactamente un campo de modo de coincidencia (regex_match, exact_match, prefix_match, suffix_match o present_match).
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
name |
string |
No |
- |
Nombre del encabezado. |
|
regex_match |
string |
No |
- |
Coincide si el valor del encabezado cumple esta expresión regular. |
|
exact_match |
string |
No |
- |
Coincide si el valor del encabezado es exactamente igual a esta cadena. |
|
prefix_match |
string |
No |
- |
Coincide si el valor del encabezado comienza con esta cadena. |
|
suffix_match |
string |
No |
- |
Coincide si el valor del encabezado termina con esta cadena. |
|
present_match |
bool |
No |
- |
|
|
invert_match |
bool |
No |
false |
|
QueryParameterMatcher
Cada QueryParameterMatcher requiere un campo name y exactamente un campo de modo de coincidencia (exact_match, prefix_match, suffix_match, regex_match, contains_match o present_match).
|
Campo |
Tipo |
Obligatorio |
Predeterminado |
Descripción |
|
name |
string |
Sí |
- |
Nombre del parámetro de consulta. |
|
exact_match |
string |
No |
- |
Coincide si el valor del parámetro es exactamente igual a esta cadena. |
|
prefix_match |
string |
No |
- |
Coincide si el valor del parámetro comienza con esta cadena. |
|
suffix_match |
string |
No |
- |
Coincide si el valor del parámetro termina con esta cadena. |
|
regex_match |
string |
No |
- |
Coincide si el valor del parámetro cumple esta expresión regular. |
|
contains_match |
string |
No |
- |
Coincide si el valor del parámetro contiene esta cadena. |
|
present_match |
bool |
No |
- |
|
|
ignore_case |
bool |
No |
- |
|
Ejemplo
Este ejemplo limita el tráfico entrante hacia las cargas de trabajo etiquetadas con app: httpbin. Las solicitudes dirigidas al host virtual httpbin.example.com en el puerto 80 se limitan a 10 por segundo. Por su parte, las solicitudes que incluyen el encabezado x-plan: premium obtienen un límite mayor de 100 por segundo.
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMGlobalRateLimiter
metadata:
name: httpbin-global-ratelimit
namespace: default
spec:
workloadSelector:
app: httpbin
rateLimitService:
host: ratelimit.default.svc.cluster.local
port: 8081
timeout:
seconds: 1
configs:
- name: httpbin-ratelimit
match:
vhost:
name: httpbin.example.com
port: 80
limit:
unit: SECOND
quota: 10
limit_overrides: # Requires ASM V1.19.0+
- request_match:
header_match:
- name: x-plan
exact_match: premium
limit:
unit: SECOND
quota: 100