Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:ASMCircuitBreaker CRD reference

Dernière mise à jour :Sep 25, 2026

Service Mesh (ASM) propose un mécanisme de disjoncteur déclaratif via la définition de ressource personnalisée (CRD) ASMCircuitBreaker. Cette rubrique détaille tous les champs de la spécification ASMCircuitBreaker et fournit des exemples de configuration.

Pour un guide de configuration pas à pas, consultez la rubrique Utiliser le disjoncteur au niveau des routes dans ASM.

Aperçu complet du schéma

Le fichier YAML suivant présente l'ensemble des champs disponibles ainsi que leur hiérarchie d'imbrication :

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

Version d'ASM apiVersion
1.15.3.105 ou ultérieure istio.alibabacloud.com/v1
Antérieure à 1.15.3.105 istio.alibabacloud.com/v1beta1

Si vous avez précédemment déployé une ressource ASMCircuitBreaker dans un cluster Container Service for Kubernetes (ACK) en utilisant v1beta1, mettez à jour le champ apiVersion avec la valeur istio.alibabacloud.com/v1 et redéployez la ressource.

spec

applyToTraffic

Remarque

Ce champ nécessite ASM 1.25 ou une version ultérieure.

Champ Type Obligatoire Valeur par défaut Description
applyToTraffic string Non sidecar_outbound Direction du trafic pour la politique de disjoncteur.

Valeurs valides :

Valeur Description
sidecar_inbound Trafic entrant vers un proxy sidecar. L'application associée au sidecar agit en tant que serveur.
sidecar_outbound Trafic sortant depuis un proxy sidecar. L'application associée au sidecar agit en tant que client.
waypoint Trafic traité par un proxy waypoint en mode Ambient.
gateway Trafic de passerelle.

ASMCircuitBreakerSpec

Champ Type Obligatoire Valeur par défaut Description
workloadSelector map Oui -- Libellés permettant de sélectionner des pods ou des VM. La portée est limitée au namespace de la ressource. Consultez la documentation WorkloadSelector.
isGateway bool Non false Si la valeur est true, la configuration s'applique à une passerelle.
configs CircuitBreakerConfig[] Oui -- Une ou plusieurs configurations de disjoncteur.

CircuitBreakerConfig

Champ Type Obligatoire Valeur par défaut Description
name string Non -- Nom de cette configuration de disjoncteur.
match CircuitBreakerMatch Non -- Conditions de correspondance au niveau de la route. Consultez la section CircuitBreakerMatch.
breaker_config BreakerConfig Non -- Seuils du disjoncteur. Consultez la section BreakerConfig.
target_services TargetServiceRef[] Non -- Services cibles pour la politique. Disponible uniquement sur ASM 1.25+. Consultez la section TargetServiceRef.

TargetServiceRef

Remarque

Ces champs nécessitent ASM 1.25 ou une version ultérieure.

Champ Type Obligatoire Valeur par défaut Description
kind string Non Service Type de ressource. Valeurs valides : Service, ServiceEntry, VirtualService.
name string Oui -- Nom du service cible.
namespace string Non Identique à celui de la ressource ASMCircuitBreaker Namespace du service cible.
port int32 Non -- Port du service cible.
section_name string Non -- Nom d'une route définie dans le VirtualService. Valide uniquement lorsque kind a la valeur VirtualService.

Exemples TargetServiceRef

Cibler un Service

Appliquez le disjoncteur au port 8000 du Service httpbin dans le namespace default :

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

Cibler un ServiceEntry

Compte tenu du ServiceEntry suivant :

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

Appliquez le disjoncteur au port 80 de ce ServiceEntry :

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

Cibler une route VirtualService

Compte tenu du VirtualService suivant :

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

Appliquez le disjoncteur à la route HTTP nommée default :

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

BreakerConfig

Les seuils du disjoncteur se répartissent en deux catégories :

  • Détection des requêtes lentes : les champs slow_request_rt, max_slow_requests et average_request_rt définissent les conditions de déclenchement basées sur la latence.

  • Détection du taux d'erreur : les champs error_percent et gateway_error_percent définissent les conditions de déclenchement basées sur les erreurs.

Ces deux catégories partagent les champs window_size, break_duration et min_request_amount.

ChampTypeObligatoireValeur par défautDescription
window_sizeDurationNon10sFenêtre temporelle de collecte des statistiques de requêtes. Maximum : 12s.
break_durationDurationNon30sDurée pendant laquelle le disjoncteur reste ouvert après déclenchement.
slow_request_rtDurationNon--Seuil de latence pour les requêtes lentes. Les requêtes dont le temps de réponse dépasse cette valeur sont considérées comme lentes.
average_request_rtDurationNon (obligatoire avant ASM 1.14)--Temps de réponse moyen du service. Exemple : 0.01s.
max_slow_requestsuint32Non--Nombre maximal de requêtes lentes autorisées dans la fenêtre temporelle. Cette valeur doit être un entier, par exemple 1000. Le disjoncteur se déclenche lorsque ce nombre est dépassé.
error_percentPercentNon--Seuil de taux d'erreur 5xx. Le disjoncteur se déclenche lorsque le pourcentage d'erreurs 5xx dans la fenêtre temporelle dépasse cette valeur.
gateway_error_percentPercentNon--Seuil de taux d'erreur de passerelle (uniquement 502, 503, 504). Disponible uniquement sur ASM 1.24.6.54+.
min_request_amountuint32Non0Nombre minimal de requêtes requis avant l'évaluation de error_percent. Évite un déclenchement prématuré sur un échantillon trop faible.
custom_responseCustomResponseNon--Réponse personnalisée renvoyée aux clients lorsque le disjoncteur est ouvert. Consultez la section CustomResponse.

CustomResponse

Définit la réponse renvoyée aux clients lorsque le disjoncteur rejette une requête.

Champ Type Obligatoire Valeur par défaut Description
status_code int32 Non -- Code d'état HTTP de la réponse.
header_to_add map\[string\]string Non -- En-têtes à inclure dans la réponse.
body string Non -- Corps de la réponse.

CircuitBreakerMatch

Champ Type Obligatoire Valeur par défaut Description
vhost VirtualHostMatch Non -- Conditions de correspondance de l'hôte virtuel. Consultez la section VirtualHostMatch.

VirtualHostMatch

Champ Type Obligatoire Valeur par défaut Description
name string Non -- Nom de l'hôte virtuel à faire correspondre.
port int Non -- Port de la requête à faire correspondre.
route RouteMatch Oui -- Règle de routage à faire correspondre. Consultez la section RouteMatch.

RouteMatch

Champ Type Obligatoire Valeur par défaut Description
name_match string Oui (passerelle) / Non (sidecar) -- Nom de la route à faire correspondre. Correspond au nom d'une route définie dans un VirtualService.
header_match HeaderMatcher[] Non -- Conditions sur les en-têtes de requête. Plusieurs en-têtes sont pris en charge. Disponible uniquement sur ASM 1.16+. Nécessite les dernières versions du proxy de passerelle et du proxy sidecar. Consultez les rubriques Mettre à niveau une instance ASM et Mettre à niveau un proxy sidecar.

HeaderMatcher

Spécifiez exactement un type de correspondance par entrée (regex_match, exact_match, prefix_match, suffix_match ou present_match).

Champ Type Obligatoire Valeur par défaut Description
name string Non -- Nom de l'en-tête.
regex_match string Non -- Fait correspondre la valeur de l'en-tête à une expression régulière.
exact_match string Non -- Fait correspondre la valeur de l'en-tête exactement.
prefix_match string Non -- Fait correspondre les valeurs d'en-tête commençant par la chaîne spécifiée.
suffix_match string Non -- Fait correspondre les valeurs d'en-tête se terminant par la chaîne spécifiée.
present_match bool Non -- true : l'en-tête doit être présent (quelle que soit sa valeur). false : l'en-tête ne doit pas être présent.
invert_match bool Non false true : inverse le résultat de la correspondance. false : utilise le résultat original de la correspondance.

Exemples de configuration

Tous les exemples utilisent le champ applyToTraffic pour spécifier la direction du trafic et le champ breaker_config pour définir les seuils du disjoncteur.

Disjoncteur côté client

Remarque

Nécessite ASM 1.25.6.74 ou une version ultérieure.

Cette configuration s'applique au trafic sortant de l'application sleep vers httpbin sur le port 8000. Le disjoncteur se déclenche lorsqu'une des conditions suivantes est remplie dans une fenêtre de 10 secondes :

  • Plus de 60 % des requêtes renvoient des erreurs 5xx.

  • Plus de 10 requêtes dépassent le seuil de temps de réponse de 100 ms.

Lorsque le disjoncteur est ouvert, les clients reçoivent un code d'état 499 accompagné d'un corps de réponse et d'un en-tête personnalisés.

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

Disjoncteur Waypoint

Remarque

Nécessite ASM 1.25.6.74 ou une version ultérieure. S'applique uniquement au mode Ambient.

Cette configuration applique les mêmes seuils de disjoncteur via un proxy waypoint nommé 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

Étapes suivantes