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
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
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
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.
-
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.
-
Verifikasi konfigurasi:
-
Di panel navigasi kiri, pilih .
-
Pastikan Status menunjukkan Running.
-
Metode 2: Gunakan ekspresi pemilih label
Metode ini lebih cocok untuk lingkungan yang dikelola melalui infrastruktur sebagai kode.
-
Lakukan pelabelan pada setiap namespace target:
kubectl label namespace <namespace-name> asm-discovery=enabled
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
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.
-
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.
-
Verifikasi konfigurasi:
-
Di panel navigasi kiri, pilih .
-
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
-
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 -
Unduh konfigurasi proxy sidecar:
kubectl exec -it <pod-name> -c istio-proxy -n <selected-namespace> -- curl -s localhost:15000/config_dump > config_dump.json
-
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
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Di halaman Mesh Management, temukan instans ASM dan klik namanya atau klik Manage di kolom Actions.
-
Di halaman detail instans ASM, pilih di panel navigasi kiri.
-
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
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
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
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.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Klik Show Advanced Settings, lalu klik Logs with specific labels are not selected. Masukkan