Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Referência do CRD ASMCircuitBreaker

Última atualização: Jun 28, 2026

O Service Mesh (ASM) oferece circuit breaking declarativo por meio da Custom Resource Definition (CRD) ASMCircuitBreaker. Esta referência detalha todos os campos da especificação do ASMCircuitBreaker e inclui exemplos de configuração.

Para obter um guia de configuração passo a passo, consulte Usar circuit breaking no nível de rota no ASM.

Visão geral completa do esquema

O YAML a seguir apresenta todos os campos disponíveis e sua hierarquia de aninhamento:

apiVersion: istio.alibabacloud.com/v1       # v1beta1 for ASM < 1.15.3.105
kind: ASMCircuitBreaker
metadata:
  name: <circuit-breaker-name>
spec:
  workloadSelector:                          # Required. Labels to select target pods/VMs.
    labels:
      <label-key>: <label-value>
  isGateway: false                           # Whether this applies to a gateway.
  applyToTraffic: sidecar_outbound           # ASM 1.25+. Traffic direction.
  configs:                                   # Required. One or more circuit breaking rules.
    - name: <config-name>
      target_services:                       # ASM 1.25+. Services to protect.
        - kind: Service                      # Service | ServiceEntry | VirtualService
          namespace: <namespace>
          name: <service-name>
          port: <port-number>
          section_name: <route-name>         # VirtualService only.
      match:                                 # Route-level match conditions.
        vhost:
          name: <virtual-host-name>
          port: <port>
          route:
            name_match: <route-name>
            header_match:                    # ASM 1.16+.
              - name: <header-name>
                exact_match: <value>         # Choose one match type.
                regex_match: <pattern>
                prefix_match: <prefix>
                suffix_match: <suffix>
                present_match: true
                invert_match: false
      breaker_config:                        # Circuit breaking thresholds.
        window_size: 10s                     # Statistics time window (max 12s).
        break_duration: 30s                  # How long the circuit stays open.
        slow_request_rt: <duration>          # Slow request latency threshold.
        average_request_rt: <duration>       # Average response time.
        max_slow_requests: <count>           # Max slow requests before tripping.
        error_percent:                       # 5xx error percentage threshold.
          value: <0-100>
        gateway_error_percent:               # 502/503/504 error threshold. ASM 1.24.6.54+.
          value: <0-100>
        min_request_amount: 0                # Min requests before evaluating error_percent.
        custom_response:                     # Response returned when circuit is open.
          status_code: <http-status-code>
          header_to_add:
            <header-name>: <header-value>
          body: <response-body>

apiVersion

Versão do ASM

apiVersion

1.15.3.105 ou posterior

istio.alibabacloud.com/v1

Anterior a 1.15.3.105

istio.alibabacloud.com/v1beta1

Se você implantou anteriormente um ASMCircuitBreaker em um cluster do Container Service for Kubernetes (ACK) com v1beta1, atualize o campo apiVersion para istio.alibabacloud.com/v1 e implante novamente.

spec

applyToTraffic

Nota

Este campo exige o ASM 1.25 ou posterior.

Campo

Tipo

Obrigatório

Padrão

Descrição

applyToTraffic

string

Não

sidecar_outbound

Direção do tráfego para a política de circuit breaking.

Valores válidos:

Valor

Descrição

sidecar_inbound

Tráfego de entrada para um proxy sidecar. A aplicação com o sidecar atua como servidor.

sidecar_outbound

Tráfego de saída de um proxy sidecar. A aplicação com o sidecar atua como cliente.

waypoint

Tráfego processado por um proxy waypoint no modo Ambient.

gateway

Tráfego de gateway.

ASMCircuitBreakerSpec

Campo

Tipo

Obrigatório

Padrão

Descrição

workloadSelector

map

Sim

--

Rótulos para selecionar pods ou VMs. O escopo limita-se ao namespace do recurso. Consulte WorkloadSelector.

isGateway

bool

Não

false

Quando definido como true, aplica a configuração a um gateway.

configs

CircuitBreakerConfig[]

Sim

--

Uma ou mais configurações de circuit breaking.

CircuitBreakerConfig

Campo

Tipo

Obrigatório

Padrão

Descrição

name

string

Não

--

Nome desta configuração de circuit breaking.

match

CircuitBreakerMatch

Não

--

Condições de correspondência no nível de rota. Consulte CircuitBreakerMatch.

breaker_config

BreakerConfig

Não

--

Limiares de circuit breaking. Consulte BreakerConfig.

target_services

TargetServiceRef[]

Não

--

Serviços-alvo da política. Disponível apenas no ASM 1.25+. Consulte TargetServiceRef.

TargetServiceRef

Nota

Estes campos exigem o ASM 1.25 ou posterior.

Campo

Tipo

Obrigatório

Padrão

Descrição

kind

string

Não

Service

Tipo de recurso. Valores válidos: Service, ServiceEntry, VirtualService.

name

string

Sim

--

Nome do serviço-alvo.

namespace

string

Não

Mesmo do recurso ASMCircuitBreaker

Namespace do serviço-alvo.

port

int32

Não

--

Porta do serviço-alvo.

section_name

string

Não

--

Nome de uma rota definida no VirtualService. Válido apenas quando kind é VirtualService.

Exemplos de TargetServiceRef

Direcionar um Service

Aplique circuit breaking à porta 8000 do Service httpbin no namespace default:

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

Direcionar um ServiceEntry

Considere o seguinte ServiceEntry:

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

Aplique circuit breaking à porta 80 deste ServiceEntry:

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

Direcionar uma rota do VirtualService

Considere o seguinte VirtualService:

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

Aplique circuit breaking à rota HTTP chamada default:

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

BreakerConfig

Os limiares de circuit breaking dividem-se em duas categorias:

  • Detecção de requisições lentas: Os campos slow_request_rt, max_slow_requests e average_request_rt definem quando ocorre a abertura do circuito baseada em latência.

  • Detecção de taxa de erros: Os campos error_percent e gateway_error_percent determinam quando a abertura do circuito ocorre devido a erros.

Ambas as categorias compartilham os campos window_size, break_duration e min_request_amount.

CampoTipoObrigatórioPadrãoDescrição
window_sizeDurationNão10sJanela de tempo para coleta de estatísticas de requisições. Máximo: 12s.
break_durationDurationNão30sTempo durante o qual o circuit breaker permanece aberto após o acionamento.
slow_request_rtDurationNão--Limiar de latência para requisições lentas. Requisições que excederem esse tempo de resposta são contabilizadas como lentas.
average_request_rtDurationNão (obrigatório antes do ASM 1.14)--Tempo médio de resposta do serviço. Exemplo: 0.01s.
max_slow_requestsuint32Não--Número máximo de requisições lentas permitidas na janela de tempo. Deve ser um número inteiro, por exemplo, 1000. O circuit breaker é acionado quando essa contagem é ultrapassada.
error_percentPercentNão--Limiar de taxa de erros 5xx. O circuit breaker é acionado quando a porcentagem de erros 5xx na janela de tempo excede este valor.
gateway_error_percentPercentNão--Limiar de taxa de erros de gateway (apenas 502, 503, 504). Disponível apenas no ASM 1.24.6.54+.
min_request_amountuint32Não0Quantidade mínima de requisições necessária antes da avaliação de error_percent. Evita o acionamento do circuito com base em uma amostra pequena.
custom_responseCustomResponseNão--Resposta personalizada retornada aos clientes quando o circuit breaker está aberto. Consulte CustomResponse.

CustomResponse

Define a resposta retornada aos clientes quando o circuit breaker rejeita uma requisição.

Campo

Tipo

Obrigatório

Padrão

Descrição

status_code

int32

Não

--

Código de status HTTP da resposta.

header_to_add

map\[string\]string

Não

--

Headers a incluir na resposta.

body

string

Não

--

Corpo da resposta.

CircuitBreakerMatch

Campo

Tipo

Obrigatório

Padrão

Descrição

vhost

VirtualHostMatch

Não

--

Condições de correspondência de host virtual. Consulte VirtualHostMatch.

VirtualHostMatch

Campo

Tipo

Obrigatório

Padrão

Descrição

name

string

Não

--

Nome do host virtual para correspondência.

port

int

Não

--

Porta da requisição para correspondência.

route

RouteMatch

Sim

--

Regra de roteamento para correspondência. Consulte RouteMatch.

RouteMatch

Campo

Tipo

Obrigatório

Padrão

Descrição

name_match

string

Sim (gateway) / Não (sidecar)

--

Nome da rota para correspondência. Corresponde a um nome de rota definido em um VirtualService.

header_match

HeaderMatcher[]

Não

--

Condições de headers de requisição. Suporta múltiplos headers. Disponível apenas no ASM 1.16+. Exige as versões mais recentes de gateway e proxy sidecar. Consulte Atualizar uma instância do ASM e Atualizar um proxy sidecar.

HeaderMatcher

Especifique exatamente um tipo de correspondência por entrada (regex_match, exact_match, prefix_match, suffix_match ou present_match).

Campo

Tipo

Obrigatório

Padrão

Descrição

name

string

Não

--

Nome do header.

regex_match

string

Não

--

Compara o valor do header com uma expressão regular.

exact_match

string

Não

--

Corresponde exatamente ao valor do header.

prefix_match

string

Não

--

Corresponde a valores de header que começam com a string especificada.

suffix_match

string

Não

--

Corresponde a valores de header que terminam com a string especificada.

present_match

bool

Não

--

true: o header deve estar presente (qualquer valor). false: o header não deve estar presente.

invert_match

bool

Não

false

true: inverte o resultado da correspondência. false: usa o resultado original da correspondência.

Exemplos de configuração

Todos os exemplos usam o campo applyToTraffic para especificar a direção do tráfego e breaker_config para definir os limiares de circuit breaking.

Circuit breaking no lado do cliente

Nota

Requer o ASM 1.25.6.74 ou posterior.

Esta configuração aplica-se ao tráfego de saída da aplicação sleep para httpbin na porta 8000. O circuit breaker é acionado quando qualquer uma das condições abaixo é atendida dentro de uma janela de 10 segundos:

  • Mais de 60% das requisições retornam erros 5xx.

  • Mais de 10 requisições excedem o limiar de tempo de resposta de 100 ms.

Quando o circuit breaker está aberto, os clientes recebem um código de status 499 com um corpo de resposta e um header personalizados.

apiVersion: istio.alibabacloud.com/v1
kind: ASMCircuitBreaker
metadata:
  name: client-break
spec:
  workloadSelector:
    labels:
      app: sleep
  applyToTraffic: sidecar_outbound
  configs:
    - target_services:
      - name: httpbin
        port: 8000
      breaker_config:
        slow_request_rt: 0.1s
        break_duration: 90s
        window_size: 10s
        max_slow_requests: 10
        min_request_amount: 3
        error_percent:
          value: 60
        custom_response:
          header_to_add:
            x-envoy-circuitbreak: "true"
          body: "hello, break!"
          status_code: 499

Circuit breaking no Waypoint

Nota

Requer o ASM 1.25.6.74 ou posterior. Aplica-se apenas ao modo Ambient.

Esta configuração aplica os mesmos limiares de circuit breaking por meio de um proxy waypoint chamado default:

apiVersion: istio.alibabacloud.com/v1
kind: ASMCircuitBreaker
metadata:
  name: test
spec:
  workloadSelector:
    labels:
      gateway.networking.k8s.io/gateway-name: default
  applyToTraffic: waypoint
  configs:
    - target_services:
      - name: httpbin
        port: 8000
      breaker_config:
        slow_request_rt: 0.1s
        break_duration: 90s
        window_size: 10s
        max_slow_requests: 10
        min_request_amount: 3
        error_percent:
          value: 60
        custom_response:
          header_to_add:
            x-envoy-circuitbreak: "true"
          body: "hello, break!"
          status_code: 499

Próximos passos