ASM menyertakan injector sidecar yang secara otomatis menambahkan proxy sidecar ke Pod baru. Anda dapat mengonfigurasi kebijakan injeksi untuk mengontrol Pod mana yang menerima sidecar guna meningkatkan efisiensi penggunaan resource dan menyederhanakan manajemen. Anda juga dapat menyesuaikan konfigurasi resource injector sesuai dengan ukuran dan beban kluster Anda.
Prasyarat
Anda telah menambahkan kluster ke instans ASM.
Konfigurasikan kebijakan injeksi otomatis
Anda dapat menggunakan label namespace atau label dan anotasi Pod untuk mengontrol Pod mana yang menerima sidecar.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Sidecar Proxy injection, di bagian Injection strategy configuration management, konfigurasikan kebijakan injeksi otomatis.
Sidecar hanya akan diinjeksikan secara otomatis ke dalam Pod jika Pod tersebut memenuhi kedua kondisi berikut: The labels of the pod's namespace must meet the conditions. dan The pod's own labels/annotations must meet the conditions..
Matching condition
Description
The labels of the pod's namespace must meet the conditions.
Kondisi untuk label namespace Pod.
-
Include istio-injection: enabled: Saat namespace Pod berisi label istio-injection: enabled, Pod tersebut memenuhi syarat untuk injeksi otomatis.
-
Sidecar diinjeksikan jika namespace Pod tidak memiliki label istio-injection: disabled.
The pod's own labels/annotations must meet the conditions.
Kondisi untuk label atau anotasi Pod.
-
Sidecar diinjeksikan jika Pod tidak memiliki label atau anotasi sidecar.istio.io/inject: "false".
-
Include sidecar.istio.io/inject: "true" or Selected by AlwaysInjectSelector: Saat Pod berisi label atau anotasi sidecar.istio.io/inject: "true", Pod tersebut memenuhi kriteria untuk injeksi otomatis.
Catatan-
Untuk instans ASM versi sebelum v1.12, injeksi otomatis hanya didukung melalui pencocokan anotasi Pod.
-
Untuk instans ASM v1.12 dan yang lebih baru, injeksi otomatis didukung melalui pencocokan label maupun anotasi Pod.
Label memiliki prioritas lebih tinggi daripada anotasi. Misalnya, jika sebuah Pod memiliki label sidecar.istio.io/inject: "true" dan anotasi sidecar.istio.io/inject: "false", Pod tersebut dianggap memiliki label sidecar.istio.io/inject: "true".
-
CatatanJika Anda mengonfigurasi kebijakan untuk melakukan injeksi kecuali namespace memiliki label istio-injection: disabled atau Pod memiliki label sidecar.istio.io/inject: false, ASM secara otomatis menambahkan label istio-injection: disabled ke namespace kube-system untuk melindungi komponen sistem.
-
-
(Opsional) Di bawah bagian Injection strategy configuration management, klik Show Advanced Settings untuk mengonfigurasi opsi lanjutan.
Parameter
Description
The label selector which selector pods to be injected istio-proxy (AlwaysInjectSelector)
Pemilih label Pod yang dapat dikonfigurasi. Pod yang cocok dengan pemilih ini selalu diinjeksikan, seolah-olah memiliki label atau anotasi sidecar.istio.io/inject:"true".
The label selector which selector pods which will never be injected (NeverInjectSelector)
Pemilih label Pod yang dapat dikonfigurasi. Pod yang cocok dengan pemilih ini tidak pernah diinjeksikan, seolah-olah memiliki label atau anotasi sidecar.istio.io/inject:"false".
CatatanBoth AlwaysInjectSelector and NeverInjectSelector are pod label selectors and are configured in the same way. Each selector can have multiple label selection expressions, one per line. A pod is selected if its labels match any of the expressions.
Each label selection expression consists of three parts:
-
Key: The key of the pod label to match.
-
Operator: The matching operator. The following four operators are available:
-
In: Matches if the pod's label value is in the specified set of values.
-
NotIn: Matches if the pod's label value is not in the specified set of values.
-
Exists: Matches if the pod has a label with the specified key.
-
DoesNotExist: Matches if the pod does not have a label with the specified key.
-
-
Value: The set of values to match against when using the In or NotIn operator.
-
-
Di bagian bawah halaman, klik Update Settings.
Konfigurasikan injector sidecar
Injector sidecar adalah layanan admission webhook yang diterapkan di kluster Kubernetes bidang data. Layanan ini secara otomatis menginjeksikan proxy sidecar dan bukan merupakan proxy sidecar itu sendiri. Layanan dan workload injector sidecar diterapkan di namespace istio-system kluster Kubernetes, dengan nama yang diawali dengan istio-sidecar-injector. Anda dapat menyesuaikan pengaturan resource dan jumlah replika komponen injector sidecar untuk memastikan ketersediaan saat menginjeksikan banyak Pod secara bersamaan. Konfigurasikan pemantauan metrik dan aturan alert untuk layanan admission webhook injector sidecar dengan merujuk ke Container Service alert management dan kube-apiserver component monitoring metrics.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Sidecar Proxy injection, di bagian Injection service, konfigurasikan injector sidecar dan klik Update Settings di bagian bawah halaman.
Parameter
Description
Resource Settings for Sidecar Injection
Konfigurasikan Limits on Resources dan Required Resources untuk kontainer injector sidecar.
-
Limits on Resources: Konfigurasikan batas resource CPU dan memori untuk kontainer injector sidecar. Satuan batas resource CPU adalah core, dan satuan batas resource memori adalah MiB.
-
Required Resources: Konfigurasikan permintaan resource CPU dan memori untuk kontainer injector sidecar. Satuan permintaan resource CPU adalah core, dan satuan permintaan resource memori adalah MiB.
pod replicas
Jumlah replika injector sidecar.
CatatanMenambah jumlah replika injector sidecar meningkatkan ketersediaan layanan injeksi sidecar saat menginjeksikan banyak Pod secara bersamaan. Untuk ketersediaan tinggi, atur jumlah replika menjadi 2 atau lebih.
Rewrite App Probe
Menentukan apakah akan menulis ulang pemeriksaan kesehatan Pod selama injeksi. Untuk menentukan apakah Anda perlu mengaktifkan penulisan ulang pemeriksaan kesehatan, lihat Enable health check redirection for applications in a service mesh.
Sidecar-injector NodeSelector
Menentukan label node untuk mengontrol tempat penempatan Pod injector sidecar.
Klik Add Match Label dan masukkan Name dan Value label node di kluster bidang data untuk menentukan node penempatan.
-
Contoh 1: Nonaktifkan injeksi untuk Pod tertentu
-
Konfigurasikan kebijakan injeksi otomatis.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Sidecar Proxy injection, di bagian Injection strategy configuration management, konfigurasikan pengaturan.
Konfigurasi berikut secara otomatis menginjeksikan sidecar ke semua Pod dalam namespace yang memiliki label istio-injection: enabled, kecuali jika Pod memiliki label atau anotasi sidecar.istio.io/inject: "false".
Parameter
Description
The labels of the pod's namespace must meet the conditions.
Pilih Include istio-injection: enabled.
The pod's own labels/annotations must meet the conditions.
Pilih Not Include sidecar.istio.io/inject: "false" or Selected by NeverInjectSelector.
-
-
Buat namespace global dan aktifkan injeksi otomatis untuk namespace tersebut.
-
Pada halaman detail instans ASM, pilih di panel navigasi kiri. Pada halaman yang muncul, klik Create.
-
Pada panel Create Namespace, masukkan Name untuk namespace (misalnya, test1). Klik Add di samping Tag, atur Name menjadi istio-injection dan Value menjadi enabled, lalu klik OK.
-
Di bagian atas halaman, klik Sync Automatic Sidecar Injection to Kubernetes Cluster untuk menyinkronkan namespace global ke kluster Kubernetes bidang data.
-
-
Buat aplikasi.
-
Terapkan aplikasi
detailsdi namespacetest1kluster ACK pada bidang data. Untuk informasi selengkapnya, lihat Deploy an application in a cluster associated with an ASM instance. -
Verifikasi apakah proxy sidecar diinjeksikan ke Pod aplikasi.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di bagian atas halaman Deployments, atur Namespace menjadi test1 dan klik nama aplikasi details.
Pada tab Pods, Anda dapat melihat bahwa Pod
details-v1berisi dua gambar: gambar proxy sidecar Istio (proxyv2) dan gambar aplikasi (examples-bookinfo-details-v1). Statusnya Running, yang menunjukkan bahwa sidecar telah berhasil diinjeksikan.
-
-
Tambahkan label ke Pod untuk menonaktifkan injeksi otomatis.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, di namespace test1, temukan aplikasi
detailsdan klik More > View YAML di kolom Actions. -
Pada kotak dialog Edit, modifikasi konfigurasi YAML dan klik Update.
-
Untuk versi ASM 1.12.4 dan yang lebih baru: pada parameter labels, tambahkan label dengan Kunci
sidecar.istio.io/injectdan Nilai"false", ditentukan sebagaisidecar.istio.io/inject: 'false'.spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: details version: v1 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: sidecar.istio.io/inject: "false" app: details version: v1 -
Untuk versi ASM sebelum 1.12.4: Pada parameter annotations, tambahkan anotasi dengan Kunci
sidecar.istio.io/injectdan Nilai"false", yaitusidecar.istio.io/inject: "false".
-
-
Verifikasi bahwa injeksi otomatis dinonaktifkan untuk Pod layanan
detailssementara tetap diaktifkan untuk namespacetest1.Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di bagian atas halaman Deployments, atur Namespace menjadi test1 dan klik nama aplikasi
details.Pada tab Pods, Anda dapat melihat bahwa Pod
details-v1berada dalam status Running dan hanya berisi gambardocker.io/istio/examples-bookinfo-details-v1:1.16.2. Hal ini mengonfirmasi bahwa sidecar Istio tidak diinjeksikan ke Pod ini.
Contoh 2: Konfigurasikan injeksi per-Pod
Anda dapat mengatur kebijakan injeksi untuk Pod individual, bukan untuk seluruh namespace.
-
Konfigurasikan kebijakan injeksi otomatis.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Injection strategy configuration management, konfigurasikan pengaturan di bagian Injection strategy configuration management dan klik Update Settings di bagian bawah halaman.
Konfigurasi berikut secara otomatis menginjeksikan sidecar ke Pod yang memiliki label sidecar.istio.io/inject: "true" di namespace apa pun, kecuali Pod di namespace dengan label istio-injection: disabled.
Parameter
Description
The labels of the pod's namespace must meet the conditions.
Pilih Not include istio-injection: disabled.
The pod's own labels/annotations must meet the conditions.
Pilih Include sidecar.istio.io/inject: "true" or Selected by AlwaysInjectSelector.
-
-
Di kluster ACK, buat namespace bernama test2 tanpa label apa pun. Untuk informasi selengkapnya, lihat Manage namespaces and quotas.
-
Di namespace
test2kluster ACK, buat aplikasireviews. Untuk informasi selengkapnya, lihat Deploy an application in a cluster associated with an ASM instance. -
Tambahkan label ke Pod untuk mengaktifkan injeksi otomatis.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di bagian atas halaman Deployments, atur Namespace menjadi test2. Pada baris layanan
reviews, klik More > View YAML di kolom Actions. -
Pada kotak dialog Edit YAML, di bawah parameter labels, tambahkan label
sidecar.istio.io/inject: "true", lalu klik Update.CatatanUntuk mengonfigurasi injeksi Pod otomatis menggunakan label, versi Service Mesh ASM harus 1.12.4 atau yang lebih baru. Untuk informasi selengkapnya tentang cara meningkatkan instans, lihat Upgrade an ASM instance.
spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: reviews version: v1 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: reviews sidecar.istio.io/inject: 'true' version: v1
-
Verifikasi bahwa kebijakan injeksi otomatis untuk Pod berhasil dikonfigurasi.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di bagian atas halaman Deployments, atur Namespace menjadi test2 dan klik nama aplikasi
reviews.Pada tab Pods, daftar gambar untuk Pod
reviews-v1berisi gambar proxy sidecar Istio (proxyv2) dan gambar kontainer aplikasi (examples-bookinfo-reviews-v1). Statusnya Running, yang menunjukkan bahwa sidecar telah berhasil diinjeksikan.
Dokumen terkait
-
Kebijakan injeksi hanya berlaku untuk Pod yang baru dibuat. Anda harus me-restart Pod yang sedang berjalan agar kebijakan berlaku. Untuk informasi selengkapnya, lihat Restart a pod.
-
Jika aplikasi yang diaktifkan Istio Anda masih menggunakan versi lama proxy sidecar setelah peningkatan lapisan kontrol, lihat Upgrade sidecar proxies untuk meningkatkannya.
-
Anda dapat mengonfigurasi konsumsi resource, kebijakan intersepsi traffic, proxy DNS, dan siklus hidup proxy sidecar pada berbagai tingkatan, seperti global, namespace, workload, dan Pod. Untuk informasi selengkapnya, lihat Configure a sidecar proxy.