All Products
Search
Document Center

Alibaba Cloud Service Mesh:Referensi field ASMSwimLaneGroup dan ASMSwimLane

Last Updated:Mar 12, 2026

Service Mesh (ASM) menyediakan dua CustomResourceDefinitions (CRDs) untuk manajemen traffic lane: ASMSwimLaneGroup dan ASMSwimLane. Keduanya memungkinkan Anda mengisolasi versi layanan tertentu atau layanan dengan karakteristik tertentu ke dalam lingkungan runtime independen yang disebut traffic lane, lalu mengarahkan permintaan yang sesuai ke versi tersebut.

Cara kerja CRD ini secara bersamaan

ASMSwimLaneGroup menentukan apa yang diisolasi: layanan-layanan yang berpartisipasi dalam traffic lane dan gerbang masuk (ingress gateway) yang mengarahkan permintaan ke layanan tersebut. ASMSwimLane menentukan bagaimana isolasi dilakukan: versi pod mana yang termasuk dalam suatu lane dan aturan routing apa yang berlaku.

Hubungan antara keduanya:

  • Satu ASMSwimLaneGroup mengelompokkan beberapa layanan dan menentukan gerbang masuk bersama.

  • Beberapa resource ASMSwimLane diasosiasikan dengan grup tersebut melalui label swimlane-group: <group-name>. Setiap lane menargetkan versi spesifik dari layanan-layanan yang dikelompokkan.

ASM mendukung dua mode lane:

  • Strict mode (isPermissive: false atau tidak diatur) — Setiap lane harus mencakup semua layanan yang didefinisikan dalam grup.

  • Permissive mode (isPermissive: true) — Lane dapat mencakup subset layanan dari grup. Permintaan ke layanan yang tidak tersedia dialihkan ke baseline lane.

Contoh konfigurasi

YAML berikut membuat grup lane bernama mock untuk tiga layanan (mocka, mockb, mockc) di namespace default. Dua lane, v1 dan v2, mencocokkan pod berdasarkan label version-nya. Layanan virtual (virtual service) dihasilkan dari Gateway Istio ingressgateway di istio-system untuk mengarahkan permintaan ke masing-masing lane.

apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLaneGroup
metadata:
  name: mock
spec:
  ingress:
    gateway:
      name: ingressgateway
      namespace: istio-system
      type: ASM
  services:
  - name: mocka
    namespace: default
  - name: mockb
    namespace: default
  - name: mockc
    namespace: default
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLane
metadata:
  labels:
    swimlane-group: mock
  name: v1
spec:
  ingressRules:
  - hosts:
    - '*'
    match:
      uri:
        exact: /mock
    name: r1
    online: true
    route:
      destination:
        host: mocka.default.svc.cluster.local
  labelSelector:
    version: v1
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLane
metadata:
  labels:
    swimlane-group: mock
  name: v2
spec:
  ingressRules:
  - hosts:
    - '*'
    match:
      uri:
        exact: /mock
    name: r2
    online: true
    route:
      destination:
        host: mocka.default.svc.cluster.local
  labelSelector:
    version: v2

Saat resource ini diterapkan, panggilan antara mocka, mockb, dan mockc tetap berada dalam versi yang sama. Lane v1 hanya mengarahkan ke pod v1, dan lane v2 hanya mengarahkan ke pod v2.

Field ASMSwimLaneGroup

ASMSwimLaneGroup mendefinisikan grup traffic lane—konfigurasi bersama untuk layanan dan routing ingress di berbagai lane.

ASMSwimLaneGroupSpec

Bagian spec merupakan konfigurasi inti.

FieldTypeRequiredDescription
servicesClusterServiceRef[]YaLayanan dalam kluster Kubernetes yang berpartisipasi dalam traffic lane.
ingressSwimLaneGroupIngressConfigurationYaKonfigurasi gerbang masuk untuk mengarahkan permintaan ke versi layanan yang berbeda.
isPermissiveboolTidakMode grup lane. true: permissive mode. false atau tidak diatur: strict mode. Untuk detail selengkapnya, lihat Ikhtisar traffic lane.
permissiveModeConfigurationPermissiveSwimLaneGroupConfigurationTidakPengaturan mode permissive. Wajib ditentukan saat isPermissive bernilai true.

ClusterServiceRef

Mereferensikan layanan Kubernetes yang berpartisipasi dalam traffic lane.

FieldTypeRequiredDescription
namestringYaNama layanan Kubernetes.
namespacestringYaNamespace layanan Kubernetes.
clusterClusterRefTidakReferensi ke kluster Kubernetes. Gunakan ini saat instans ASM mengelola beberapa kluster.

ClusterRef

Mengidentifikasi kluster Kubernetes yang ditambahkan ke instans ASM.

FieldTypeRequiredDescription
namestringTidakNama tampilan kluster Kubernetes.
idstringTidakID kluster Kubernetes.

SwimLaneGroupIngressConfiguration

Mengonfigurasi gerbang masuk yang mengarahkan permintaan ke layanan dalam grup lane.

FieldTypeRequiredDescription
gatewaySwimLaneGatewayConfigurationYaGateway Istio yang diasosiasikan dengan gerbang masuk.
ingressRoutingSwimLaneGroupIngressRouteConfigurationTidakStrategi routing permintaan untuk grup lane.
Catatan

Memerlukan ASM v1.21.6.92 atau lebih baru.

SwimLaneGatewayConfiguration

Menentukan gateway Istio yang diasosiasikan dengan gerbang masuk.

FieldTypeRequiredDescription
namestringYaNama gateway Istio.
namespacestringYaNamespace gateway Istio.
typestringYaJenis gateway Istio. Atur nilai ini ke ASM, yang menunjukkan gateway Istio yang disediakan oleh ASM.

SwimLaneGroupIngressRouteConfiguration

Menentukan strategi routing permintaan untuk grup lane.

FieldTypeRequiredDescription
ingressRoutingStrategystringTidakStrategi routing. Nilai yang valid: rule_based (default) — setiap lane menentukan aturan routing sendiri melalui ingressRules. weighted — permintaan didistribusikan ke berbagai lane berdasarkan bobot menggunakan aturan routing bersama.
weightedRoutingRuleWeightedSwimLaneIngressConfigurationTidakAturan pencocokan permintaan terpadu untuk routing berbasis bobot. Berlaku hanya saat ingressRoutingStrategy bernilai weighted.

WeightedSwimLaneIngressConfiguration

Menentukan aturan pencocokan permintaan terpadu yang digunakan dengan routing berbasis bobot.

FieldTypeRequiredDescription
hosts[]stringYaHost yang dicocokkan. Harus dideklarasikan dalam gateway Istio yang diasosiasikan dengan grup lane.
requestMatchesSwimLaneIngressRequestMatchTidakKondisi pencocokan URI dan header.

PermissiveSwimLaneGroupConfiguration

Mengonfigurasi mode permissive untuk grup traffic lane. Wajib ditentukan saat isPermissive bernilai true.

FieldTypeRequiredDescription
routeHeaderstringYaHeader permintaan yang menentukan lane mana yang dimiliki permintaan saat melewati rantai panggilan. Permintaan yang masuk melalui gerbang masuk harus membawa header ini.
traceHeaderstringYaHeader transmisi langsung end-to-end (E2E) yang dipropagasikan sepanjang rantai panggilan. Harus unik per permintaan jika berbeda dari routeHeader. Contoh: x-b3-trace-id.
fallbackTargetstringTidakNama baseline lane. Saat permintaan tidak dapat mencapai versi layanan target di lane yang ditentukan, permintaan dialihkan ke layanan yang sama di baseline lane ini.

Field ASMSwimLane

ASMSwimLane mendefinisikan satu traffic lane—sekumpulan versi layanan yang diisolasi bersama. Asosiasikan lane dengan grup lane dengan menambahkan label swimlane-group: <group-name> ke resource ASMSwimLane.

ASMSwimLaneSpec

Bagian spec merupakan konfigurasi inti.

FieldTypeRequiredDescription
labelSelectormap<string, string>YaLabel yang digunakan untuk mencocokkan pod untuk layanan dalam lane ini. Biasanya menggunakan label versi, seperti version: v1.
servicesClusterServiceRef[]TidakLayanan yang dideploy dalam lane ini. Dalam strict mode, abaikan field ini — setiap lane harus mencakup semua layanan dari grup. Dalam permissive mode, tentukan layanan dalam lane ini. Daftar ini harus merupakan subset dari field services grup. Permintaan ke layanan yang tidak ada dalam lane ini diteruskan ke baseline lane.
ingressRulesSwimLaneIngressRule[]TidakAturan routing yang secara otomatis dikonversi oleh ASM menjadi layanan virtual untuk gerbang masuk. Jika diabaikan, buat layanan virtual secara manual.
ingressWeightSwimLaneIngressWeightTidakBobot routing untuk lane ini saat grup menggunakan routing berbasis bobot (ingressRoutingStrategy: weighted).

SwimLaneIngressRule

Menentukan aturan routing untuk gerbang masuk. ASM mengonversi setiap aturan menjadi bagian dari layanan virtual.

FieldTypeRequiredDescription
onlineboolYaApakah aturan ini aktif. Layanan virtual hanya dihasilkan saat nilai ini true.
hostsstring[]YaHost yang dicocokkan. Dipetakan ke field hosts dalam layanan virtual yang dihasilkan.
namestringTidakNama aturan routing ini. Dipetakan ke field name di bawah http dalam layanan virtual yang dihasilkan.
matchSwimLaneIngressRequestMatchTidakKondisi pencocokan permintaan. Dipetakan ke field match di bawah http dalam layanan virtual yang dihasilkan.
routeSwimLaneIngressRouteYaLayanan tujuan untuk permintaan yang cocok. Dipetakan ke field route di bawah http dalam layanan virtual yang dihasilkan.

SwimLaneIngressWeight

Menentukan bobot routing untuk lane saat menggunakan routing berbasis bobot.

FieldTypeRequiredDescription
weightintTidakBobot routing untuk lane ini. Nilai default 0. ASM menggunakan bobot semua lane untuk menghitung rasio distribusi permintaan.
destinationRouteDestinationYaLayanan tujuan untuk routing berbasis bobot.

SwimLaneIngressRequestMatch

Menentukan kondisi untuk mencocokkan permintaan berdasarkan URI atau header.

FieldTypeRequiredDescription
uriStringMatchTidakKondisi pencocokan URI. Mendukung exact, prefix, dan regex (sintaks RE2).
headersmap<string, StringMatch>TidakKondisi pencocokan header. Kunci adalah nama header dalam huruf kecil dengan tanda hubung (misalnya, x-request-id). Nilai menentukan jenis pencocokan.

StringMatch

Menentukan cara mencocokkan nilai string. Tentukan tepat satu field.

FieldTypeRequiredDescription
exactstringTidakPencocokan string eksak.
prefixstringTidakPencocokan awalan.
regexstringTidakPencocokan ekspresi reguler RE2. Lihat sintaks RE2.

SwimLaneIngressRoute

Menentukan layanan tujuan untuk permintaan yang cocok.

FieldTypeRequiredDescription
destinationRouteDestinationYaLayanan tujuan.

RouteDestination

Mengidentifikasi layanan Kubernetes target.

FieldTypeRequiredDescription
hoststringYaNama domain lengkap (fully qualified domain name) layanan Kubernetes. Contoh: mocka.default.svc.cluster.local.
portNumintTidakNomor port layanan. Contoh: 8000.
Catatan

Memerlukan ASM v1.21.4.104 atau lebih baru.

Topik terkait