All Products
Search
Document Center

Alibaba Cloud Service Mesh:Gunakan pemilih penemuan layanan untuk mengurangi beban push bidang kendali

Last Updated:Mar 20, 2026

Secara default, bidang kendali Alibaba Cloud Service Mesh (ASM) memantau layanan di semua namespace dalam suatu kluster dan mendorong perubahan konfigurasi ke semua proxy sidecar di bidang data — bahkan untuk namespace tanpa injeksi proxy sidecar. Pada kluster besar dengan banyak namespace, hal ini menimbulkan beban tidak perlu pada bidang kendali dan memperlambat sinkronisasi konfigurasi.

Cara kerja pemilih penemuan layanan

Catatan

Dalam topik ini, *konfigurasi proxy sidecar* merujuk pada konfigurasi yang diterima proxy sidecar dari bidang kendali ASM.

Tanpa pemilih penemuan layanan, setiap proxy sidecar menyimpan konfigurasi semua layanan di seluruh namespace, termasuk layanan yang tidak pernah dikomunikasikan oleh proxy tersebut. Ketika layanan berubah di namespace mana pun, bidang kendali memicu *full push* ke semua proxy sidecar.

Dengan pemilih penemuan layanan, bidang kendali hanya memantau namespace yang labelnya sesuai dengan kriteria selektor. Perubahan layanan di namespace yang tidak cocok diabaikan, dan proxy sidecar hanya menyimpan konfigurasi yang dibutuhkan.

Aturan pencocokan pemilih label

Pemilih label mendukung dua mode pencocokan:

Cocok tepat

Tentukan kunci dan nilai label. Namespace dipilih hanya jika kunci dan nilainya cocok secara tepat.

Cocok berdasarkan ekspresi

Tentukan kunci label, operator, dan opsional satu set nilai:

Operator Perilaku Contoh penggunaan
In Memilih namespace di mana nilai label berada dalam himpunan nilai yang ditentukan Sertakan hanya namespace production dan staging
NotIn Memilih namespace di mana nilai label tidak berada dalam himpunan nilai yang ditentukan Kecualikan namespace kube-system dan monitoring
Exists Memilih namespace di mana kunci label ada, tanpa memperhatikan nilainya Pilih semua namespace yang diberi label asm-discovery
DoesNotExist Memilih namespace di mana kunci label tidak ada Kecualikan namespace tanpa opt-in eksplisit ke mesh

Prasyarat

  • Instans ASM versi 1.10.5.32 atau lebih baru

  • Kluster Container Service for Kubernetes (ACK) telah ditambahkan ke instans ASM

  • Klien kubectl terhubung ke kluster

Konfigurasikan pemilih penemuan layanan

Pilih salah satu metode berikut.

Metode 1: Pilih namespace melalui konsol

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih ASM Instance > Service Discovery Selectors.

  3. Pada halaman Service Discovery Selectors, atur Mesh Discovery Mode menjadi Automatically Discover Services in the Selected Namespace of a Kubernetes Cluster on the Data Plane.

  4. Pada tab Select Namespaces, pilih kluster, lalu klik unselect di samping setiap namespace yang harus dikecualikan dari penemuan. Pertahankan hanya namespace yang layanannya perlu didorong ke proxy sidecar. Klik OK, lalu klik OK di dialog Submit.

  5. Verifikasi konfigurasi:

    1. Di panel navigasi kiri, pilih ASM Instance > Base Information.

    2. Pastikan Status menunjukkan Running.

Metode 2: Gunakan ekspresi pemilih label

Metode ini lebih cocok untuk lingkungan yang dikelola melalui infrastruktur sebagai kode.

  1. Lakukan pelabelan pada setiap namespace target:

    kubectl label namespace <namespace-name> asm-discovery=enabled

  2. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  3. Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih ASM Instance > Service Discovery Selectors.

  4. Pada halaman Service Discovery Selectors, atur Mesh Discovery Mode menjadi Automatically Discover Services in the Selected Namespace of a Kubernetes Cluster on the Data Plane, lalu klik Edit Discovery Selectors Directly.

  5. Definisikan pemilih label. Contoh: untuk memilih semua namespace yang memiliki label asm-discovery tanpa memperhatikan nilainya, atur Key menjadi asm-discovery dan Operator menjadi Exists. Klik OK, lalu klik OK di dialog Submit.

  6. Verifikasi konfigurasi:

    1. Di panel navigasi kiri, pilih ASM Instance > Base Information.

    2. Pastikan Status menunjukkan Running.

Verifikasi efektivitas pemilih

Setelah mengonfigurasi pemilih, pastikan proxy sidecar tidak lagi menerima konfigurasi dari namespace yang dikecualikan.

Periksa konfigurasi proxy sidecar

  1. Dapatkan nama pod dari workload di namespace yang dipilih:

    kubectl get pods -n <selected-namespace>

    Output contoh:

    NAME                       READY   STATUS    RESTARTS   AGE
    httpbin-6fcb98998c-46qhr   2/2     Running   0          22m
  2. Unduh konfigurasi proxy sidecar:

    kubectl exec -it <pod-name> -c istio-proxy -n <selected-namespace> -- curl -s localhost:15000/config_dump > config_dump.json

  3. Cari layanan dari namespace yang dikecualikan dalam file config_dump.json. Contoh: cari httpbin.ns-not-in-mesh. Jika tidak ditemukan, pemilih berfungsi dengan benar — proxy sidecar tidak lagi menyimpan konfigurasi dari namespace tersebut.

Periksa log bidang kendali

Picu perubahan layanan di namespace yang dikecualikan (misalnya, buat atau hapus deployment), lalu verifikasi bahwa tidak ada log push yang sesuai muncul di log bidang kendali.

Untuk instans ASM versi lebih awal dari 1.17.2.35

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, temukan instans ASM dan klik namanya atau klik Manage di kolom Actions.

  3. Di halaman detail instans ASM, pilih ASM Instance > Base Information di panel navigasi kiri.

  4. Klik View log di sebelah Control-plane log collection. Atur Time Range menjadi 15 Minutes. Jika tidak ada log push untuk namespace yang dikecualikan muncul di tab Raw Logs, pemilih berfungsi dengan benar.

Untuk instans ASM versi 1.17.2.35 atau lebih baru

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Observability Management Center > Log Center.

  3. Di halaman Log Center, klik tab Control-Plane Logs dan atur Time Range menjadi 15 Minutes. Jika tidak ada log push untuk namespace yang dikecualikan muncul di tab Raw Logs, pemilih berfungsi dengan benar.

Kecualikan pod tertentu dari penemuan layanan

Catatan

Fitur ini memerlukan versi ASM 1.20 atau lebih baru.

Secara default, ASM menemukan semua layanan dan pod di kluster Kubernetes di bidang data. Dengan pemilih label tingkat pod, Anda dapat mengecualikan pod tertentu dari penemuan layanan ASM sepenuhnya. Bidang kendali tidak akan menemukan pod yang dikecualikan, dan tidak ada lalu lintas yang akan diarahkan ke pod tersebut oleh proxy sidecar. Fitur ini berguna untuk mengalihkan lalu lintas dari pod tertentu secara cepat.

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih ASM Instance > Service Discovery Selectors.

  3. Klik Show Advanced Settings, lalu klik Logs with specific labels are not selected. Masukkan