全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Referensi CRD ASMCircuitBreaker

更新时间:Nov 12, 2025

Service Mesh (ASM) memungkinkan Anda mengonfigurasi pemutusan sirkuit secara deklaratif menggunakan Custom Resource Definition (CRD) ASMCircuitBreaker. Topik ini menjelaskan bidang-bidang dalam ASMCircuitBreaker.

Contoh konfigurasi

Contoh 1: Pemutusan sirkuit sisi klien

Catatan

Contoh ini memerlukan instans ASM versi 1.25.6.74 atau yang lebih baru.

Contoh berikut menunjukkan cara mengonfigurasi pemutusan sirkuit sisi klien. Ketika aplikasi sleep mengakses aplikasi httpbin, pemutus sirkuit akan aktif jika lebih dari 60% permintaan gagal atau terjadi lebih dari 10 permintaan lambat dalam rentang waktu 10 detik. Dalam kondisi tersebut, kode status 499 dikembalikan.

Bentangkan untuk melihat file YAML

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 # Ambang batas waktu tanggapan agar permintaan dianggap lambat.
        break_duration: 90s # Durasi pemutus sirkuit tetap terbuka.
        window_size: 10s # Jendela waktu untuk statistik permintaan adalah 10s.
        max_slow_requests: 10 # Jumlah maksimum permintaan lambat adalah 10.
        min_request_amount: 3 # Mulai menghitung tingkat kesalahan setelah 3 permintaan.
        error_percent:
          value: 60 # Lebih dari 60% permintaan mengalami kesalahan.
        custom_response:
          header_to_add:
            x-envoy-circuitbreak: "true"
          body: "hello, break!"
          status_code: 499

Contoh 2: Pemutusan sirkuit waypoint

Contoh ini hanya berlaku untuk mode Ambient dan memerlukan instans ASM versi 1.25.6.74 atau lebih baru.

Contoh ini mengonfigurasi aturan pemutusan sirkuit untuk sebuah aplikasi pada waypoint bernama default. Aturan pemutusan sirkuitnya sama seperti pada Contoh 1.

Bentangkan untuk melihat file YAML

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

apiVersion

  • Jika instans ASM Anda versi 1.15.3.105 atau yang lebih baru, gunakan apiVersion: istio.alibabacloud.com/v1. Jika Anda telah mengonfigurasi ini di kluster Alibaba Cloud Container Service for Kubernetes (ACK), ubah bidang apiVersion: istio.alibabacloud.com/v1beta1 dalam CRD ASMCircuitBreaker yang sesuai menjadi apiVersion: istio.alibabacloud.com/v1, lalu redeploy.

  • Jika instans ASM Anda versi sebelum 1.15.3.105, gunakan apiVersion: istio.alibabacloud.com/v1beta1.

spec

Tabel berikut menjelaskan bidang-bidang dalam bagian spec. Untuk informasi selengkapnya tentang fitur dan kasus penggunaan ASMCircuitBreaker, lihat Gunakan pemutusan sirkuit tingkat rute di ASM.

Bidang

Tipe

Wajib

Deskripsi

applyToTraffic

string

Tidak

Jenis trafik tempat kebijakan pemutusan sirkuit diterapkan. Nilai yang valid:

  • sidecar_inbound: Trafik arah masuk ke sidecar. Ini adalah trafik yang diterima oleh aplikasi dengan proxy sidecar yang dipasang, di mana aplikasi bertindak sebagai server.

  • sidecar_outbound: Trafik arah keluar dari sidecar. Ini adalah trafik yang dikirim oleh aplikasi dengan proxy sidecar yang dipasang, di mana aplikasi bertindak sebagai klien.

  • waypoint: Trafik yang diproses oleh proxy waypoint dalam mode Ambient.

  • gateway: Trafik gerbang.

Nilai default adalah sidecar_outbound.

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

ASMCircuitBreakerSpec

Bidang

Tipe

Wajib

Deskripsi

workloadSelector

map<string, string>

Ya

Menggunakan satu atau beberapa label untuk memilih kumpulan Pod atau Mesin virtual (VM) tertentu tempat konfigurasi pemutusan sirkuit diterapkan. Pencarian label dibatasi pada namespace tempat sumber daya tersebut berada. Untuk informasi selengkapnya, lihat WorkloadSelector.

isGateway

bool

Tidak

Menentukan apakah konfigurasi berlaku untuk gerbang. Jika diatur ke true, konfigurasi berlaku untuk gerbang. Nilai default adalah false.

configs

CircuitBreakerConfig[]

Ya

Konfigurasi pemutusan sirkuit. Anda dapat menentukan beberapa konfigurasi.

CircuitBreakerConfig

Bidang

Tipe

Wajib

Deskripsi

name

string

Tidak

Nama konfigurasi pemutusan sirkuit tunggal.

match

CircuitBreakerMatch

Tidak

Kondisi pencocokan.

breaker_config

BreakerConfig

Tidak

Konfigurasi pemutusan sirkuit tingkat rute.

target_services

TargetServiceRef[]

Tidak

Layanan tempat kebijakan pemutusan sirkuit diterapkan.

Catatan

Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

TargetServiceRef

Catatan

Bidang-bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.

Bidang

Tipe

Wajib

Deskripsi

kind

string

Tidak

Jenis layanan tempat kebijakan pemutusan sirkuit diterapkan. Nilai yang valid:

  • Service

  • ServiceEntry

  • VirtualService

Nilai default adalah Service.

name

string

Ya

Nama layanan tempat kebijakan pemutusan sirkuit diterapkan.

namespace

string

Tidak

Namespace tempat layanan yang menerapkan kebijakan pemutusan sirkuit berada. Nilai default adalah namespace tempat Anda mendefinisikan kebijakan pemutusan sirkuit.

port

int32

Tidak

Port layanan tempat kebijakan pemutusan sirkuit diterapkan.

section_name

string

Tidak

Properti tambahan layanan. Bidang ini hanya berlaku untuk VirtualService.

  • VirtualService: Nilainya adalah nama rute yang didefinisikan dalam VirtualService.

Contoh 1

Contoh berikut menerapkan kebijakan ke port 8000 dari layanan httpbin di namespace default.

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

Contoh 2

Asumsikan ServiceEntry berikut ada di instans saat ini.

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

Kebijakan berikut diterapkan ke port 80 dari ServiceEntry ini.

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

Contoh 3

Asumsikan VirtualService berikut ada di instans saat ini.

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

Kebijakan berikut diterapkan ke aturan routing HTTP bernama default yang didefinisikan dalam VirtualService tersebut.

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

CircuitBreakerMatch

Bidang

Tipe

Wajib

Deskripsi

vhost

VirtualHostMatch

Tidak

Kondisi pencocokan untuk host virtual.

BreakerConfig

Bidang

Tipe

Wajib

Deskripsi

window_size

Durasi

Tidak

Jendela waktu untuk statistik. Nilai default adalah 10s. Nilai maksimum adalah 12s.

break_duration

Durasi

Tidak

Durasi pemutus sirkuit tetap terbuka. Nilai default adalah 30s.

slow_request_rt

Durasi

Tidak

Menentukan ambang batas latensi tanggapan untuk permintaan lambat. Permintaan dianggap lambat jika waktu tanggapannya melebihi nilai ini.

average_request_rt

Durasi

  • Untuk instans ASM sebelum versi 1.14: Ya

  • Untuk instans ASM versi 1.14 dan yang lebih baru: Tidak

Menentukan waktu tanggapan rata-rata untuk layanan, misalnya, 0.01s.

max_slow_requests

uint32

Tidak

Jumlah maksimum permintaan lambat. Harus berupa bilangan bulat, misalnya, 1000. Permintaan baru ditolak jika jumlah ini terlampaui.

error_percent

Percent

Tidak

Persentase kesalahan. Jika persentase permintaan dengan kesalahan 5xx dalam jendela waktu melebihi nilai ini, permintaan baru ditolak.

gateway_error_percent

Persen

Tidak

Persentase kesalahan gerbang. Jika persentase permintaan dengan kesalahan gerbang (502, 503, 504) dalam jendela waktu melebihi nilai ini, permintaan baru ditolak. Bidang ini hanya berlaku untuk instans ASM versi 1.24.6.54 atau yang lebih baru.

min_request_amount

uint32

Tidak

Jumlah minimum permintaan. Bidang ini berkaitan dengan kondisi error_percent. Nilai default adalah 0. Anda dapat mengonfigurasi jumlah minimum permintaan untuk mencegah pemutus sirkuit aktif karena sedikit kegagalan.

custom_response

CustomResponse

Tidak

Tanggapan kustom yang dikembalikan ketika permintaan ditolak oleh pemutus sirkuit.

CustomResponse

Bidang

Tipe

Wajib

Deskripsi

status_code

int32

Tidak

Kode status respons HTTP.

header_to_add

map[string]string

Tidak

Header yang ditambahkan ke tanggapan kustom.

body

string

Tidak

Isi tanggapan kustom.

VirtualHostMatch

Bidang

Tipe

Wajib

Deskripsi

name

string

Tidak

Nama host virtual yang dicocokkan.

port

int

Tidak

Port permintaan yang dicocokkan.

route

RouteMatch

Ya

Nama aturan routing API yang dicocokkan.

RouteMatch

Bidang

Tipe

Wajib

Deskripsi

name_match

string

  • Gerbang: Ya

  • Sidecar: Tidak

Nama rute yang dicocokkan. Ini sesuai dengan nama rute tunggal dalam VirtualService.

header_match

HeaderMatcher[]

Tidak

Mencocokkan header permintaan layanan. Anda dapat menentukan beberapa header.

Penting

Untuk menggunakan bidang ini, instans ASM Anda harus versi 1.16 atau yang lebih baru, dan instans gerbang serta sidecar yang sesuai harus versi terbaru. Untuk informasi selengkapnya tentang cara meningkatkan instans ASM, lihat Tingkatkan instans ASM. Untuk informasi selengkapnya tentang cara meningkatkan proxy sidecar, lihat Tingkatkan proxy sidecar.

HeaderMatcher

Bidang

Tipe

Wajib

Deskripsi

name

string

Tidak

Nama header.

Pilih salah satu dari berikut

regex_match

string

Tidak

Mencocokkan nilai menggunakan ekspresi reguler.

exact_match

string

Tidak

Menjalankan pencocokan eksak.

prefix_match

string

Tidak

Menjalankan pencocokan awalan. Mencocokkan nilai yang dimulai dengan awalan yang ditentukan.

suffix_match

string

Tidak

Menjalankan pencocokan akhiran. Mencocokkan nilai yang diakhiri dengan akhiran yang ditentukan.

present_match

bool

Tidak

  • Jika diatur ke true, header harus ada, terlepas dari nilainya.

  • Jika diatur ke false, header tidak boleh ada.

invert_match

bool

Tidak

Nilai default adalah false.

  • Jika diatur ke true, hasil pencocokan dibalik.

  • Jika diatur ke false, hasil pencocokan asli digunakan.