ASM mendukung modifikasi sumber daya dan konfigurasi Sidecar proxy melalui anotasi. Topik ini menjelaskan cara mengonfigurasi Sidecar Proxy dengan menambahkan anotasi sumber daya dan menggunakan field ProxyConfig.
Prasyarat
Gerbang masuk (ingress gateway) telah diterapkan. Untuk informasi selengkapnya, lihat Buat gerbang masuk.
Tambahkan anotasi sumber daya
ASM memungkinkan modifikasi sumber daya Sidecar proxy dengan menambahkan anotasi ke Pod. Contoh berikut menunjukkan cara mengubah permintaan memori minimum untuk Sidecar proxy. Untuk informasi selengkapnya mengenai anotasi lainnya, lihat Lampiran A: Anotasi Sumber Daya Istio.
-
Aktifkan injeksi otomatis Sidecar mesh proxy untuk namespace default. Untuk informasi selengkapnya, lihat Aktifkan injeksi otomatis.
-
Terapkan aplikasi di namespace default. Untuk informasi selengkapnya, lihat Terapkan aplikasi di kluster yang terkait dengan instans ASM.
-
Modifikasi permintaan memori minimum untuk Sidecar proxy.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, temukan aplikasi target Anda dan klik pada kolom Actions.
-
Pada kotak dialog Edit YAML, tambahkan konten berikut di bawah parameter
template, lalu klik Update.annotations: sidecar.istio.io/proxyMemory: 14Mitemplate: metadata: annotations: sidecar.istio.io/proxyMemory: 14Mi labels: app: details version: v1
-
Verifikasi bahwa modifikasi memori Sidecar proxy berhasil.
Di panel navigasi kiri halaman manajemen kluster, pilih .
-
Pada halaman Pods, temukan Pod aplikasi target Anda dan klik Details pada kolom Actions.
-
Pada tab Containers, klik istio-proxy.
Anda dapat melihat bahwa istio-proxy meminta memori sebesar 14 Mi. Setelah diklik, detail kontainer istio-proxy akan ditampilkan, termasuk alamat registri, kebijakan pengambilan image (IfNotPresent), serta variabel lingkungan terkait Istio Sidecar. Di bagian Requested Resources, pengaturan memori saat ini ditampilkan sebagai
Memory: 14Mi.
Atur field ProxyConfig
ASM mendukung pendefinisian konfigurasi Sidecar proxy dengan memodifikasi field ProxyConfig dalam Pod. Untuk informasi selengkapnya tentang penggunaan field ProxyConfig, lihat Lampiran B: Field ProxyConfig.
Nilai proxy.istio.io/config dapat menggunakan format YAML atau JSON.
Prosedur untuk mengatur field ProxyConfig sama dengan prosedur menambahkan anotasi sumber daya. Bagian ini menyediakan contoh umum penggunaan field ProxyConfig. Untuk langkah-langkahnya, lihat bagian sebelumnya.
Contoh 1: Atur termination drain duration
Gunakan field terminationDrainDuration untuk mengubah durasi drain terminasi. Durasi ini menentukan waktu maksimum yang ditunggu Istio Proxy setelah kontainer aplikasi dihentikan.
Tambahkan konten berikut ke file YAML aplikasi Anda agar Istio Proxy menunggu hingga 3 detik setelah kontainer aplikasi dihentikan.
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
type: RollingUpdate
template:
metadata:
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
labels:
app: details
Pada halaman Pods, temukan Pod aplikasi target Anda dan klik Actions pada kolom Details. Pada tab Containers, klik istio-proxy. Anda akan melihat durasi drain terminasi diatur menjadi 3 s. Setelah konfigurasi diterapkan, lihat detail kontainer istio-proxy pada halaman kontainer Pod tersebut. Di variabel lingkungan PROXY_CONFIG, terminationDrainDuration diatur menjadi 3s.
Contoh 2: Atur urutan startup Istio Proxy
Secara default, ASM mengatur secara global holdApplicationUntilProxyStarts ke true. Pengaturan ini memastikan Istio Proxy berhasil dimulai sebelum kontainer aplikasi dijalankan. Jika kontainer aplikasi menjadi siap sebelum Istio Proxy siap, Pod tidak dapat menerima traffic.
holdApplicationUntilProxyStarts adalah opsi konfigurasi yang mengontrol perilaku startup kontainer aplikasi setelah injeksi Sidecar proxy. Ketika holdApplicationUntilProxyStarts diatur ke true, Istio CNI atau injector Sidecar mengonfigurasi Pod Kubernetes untuk mencegah kontainer aplikasi dimulai hingga kontainer proxy siap dan mulai menerima traffic. Hal ini memastikan semua traffic mengalir melalui proxy sebelum Pod menerima traffic apa pun, sehingga memungkinkan penerapan langsung kebijakan manajemen traffic, pemantauan, dan keamanan. Dalam kebanyakan kasus, atur holdApplicationUntilProxyStarts ke true untuk memastikan penanganan traffic yang tepat. Atur ke false hanya dalam skenario tertentu yang sesuai.
Pada halaman Pods, temukan Pod aplikasi target Anda dan klik Actions pada kolom Details. Lalu, klik tab Events. Di tab Events Pod tersebut, Anda akan melihat bahwa kontainer aplikasi dimulai terlebih dahulu, diikuti oleh Istio Proxy. Daftar event untuk Pod details-v1 menampilkan urutan lengkap proses startup kontainer, mencakup penjadwalan Pod (Scheduled), pengambilan image (Pulled), pembuatan kontainer (Created), dan startup kontainer (Started). Kontainer dimulai dalam urutan berikut: kontainer init istio-init, kontainer aplikasi details, dan kontainer Sidecar istio-proxy. Event Started pada masing-masing kontainer disorot, mengonfirmasi urutan startup yang diterapkan oleh konfigurasi holdApplicationUntilProxyStarts.
Lampiran A: Anotasi sumber daya Istio
|
Anotasi |
Deskripsi |
|
proxy.istio.io/config |
Timpa konfigurasi proxy untuk proxy ini. |
|
readiness.status.sidecar.istio.io/applicationPorts |
Tentukan daftar port yang diekspos oleh kontainer aplikasi. Digunakan oleh pemeriksaan kesiapan (readiness probe) Sidecar proxy untuk menentukan kapan proxy telah dikonfigurasi dan siap menerima traffic. |
|
readiness.status.sidecar.istio.io/failureThreshold |
Tentukan ambang batas kegagalan untuk pemeriksaan kesiapan Sidecar proxy. |
|
readiness.status.sidecar.istio.io/initialDelaySeconds |
Tentukan penundaan awal (dalam detik) untuk pemeriksaan kesiapan Sidecar proxy. |
|
readiness.status.sidecar.istio.io/periodSeconds |
Tentukan periode (dalam detik) untuk pemeriksaan kesiapan Sidecar proxy. |
|
sidecar.istio.io/componentLogLevel |
Tentukan tingkat log komponen untuk Sidecar proxy. |
|
sidecar.istio.io/enableCoreDump |
Tentukan apakah Sidecar proxy harus mengaktifkan core dump. |
|
sidecar.istio.io/extraStatTags |
Daftar tag tambahan yang diekstraksi dari telemetri Istio Proxy. Setiap tag tambahan harus muncul dalam daftar ini. |
|
sidecar.istio.io/inject |
Tentukan apakah akan menggunakan injeksi otomatis Sidecar. |
|
sidecar.istio.io/interceptionMode |
Tentukan mode (REDIRECT atau TPROXY) yang digunakan untuk mengalihkan lalu lintas masuk ke Envoy. |
|
sidecar.istio.io/logLevel |
Atur tingkat log untuk Sidecar proxy. |
|
sidecar.istio.io/proxyCPU |
Tentukan pengaturan CPU yang diminta untuk Sidecar proxy. |
|
sidecar.istio.io/proxyCPULimit |
Tentukan batas CPU untuk Sidecar proxy. |
|
sidecar.istio.io/proxyMemory |
Tentukan pengaturan memori yang diminta untuk Sidecar proxy. |
|
sidecar.istio.io/proxyMemoryLimit |
Tentukan batas memori untuk Sidecar proxy. |
|
sidecar.istio.io/rewriteAppHTTPProbers |
Arahkan ulang probe readiness dan liveness HTTP ke Sidecar proxy. |
|
status.sidecar.istio.io/port |
Tentukan port status HTTP untuk Sidecar proxy. Jika diatur ke nol, Sidecar tidak menyediakan status. |
|
traffic.sidecar.istio.io/excludeInboundPorts |
Daftar port masuk yang dipisahkan koma yang dikecualikan dari pengalihan ke Sidecar proxy. Hanya berlaku ketika semua lalu lintas masuk (yaitu, “*”) dialihkan. |
|
traffic.sidecar.istio.io/excludeOutboundIPRanges |
Daftar rentang IP dalam format CIDR yang dipisahkan koma yang dikecualikan dari pengalihan. Hanya berlaku ketika semua lalu lintas keluar (yaitu, “*”) dialihkan. |
|
traffic.sidecar.istio.io/excludeOutboundPorts |
Daftar string port yang dipisahkan koma yang melarang pengalihan lalu lintas keluar ke Sidecar proxy. |
|
traffic.sidecar.istio.io/includeInboundPorts |
Daftar port masuk yang dipisahkan koma yang lalu lintasnya dialihkan ke Sidecar proxy. Gunakan wildcard “*” untuk mengonfigurasi pengalihan untuk semua port. Daftar kosong menonaktifkan pengalihan untuk semua lalu lintas masuk. |
|
traffic.sidecar.istio.io/includeOutboundIPRanges |
Daftar rentang IP dalam format CIDR yang dipisahkan koma yang dialihkan ke Sidecar proxy. Gunakan wildcard “*” untuk mengalihkan semua lalu lintas keluar. Daftar kosong menonaktifkan pengalihan untuk semua lalu lintas keluar. |
|
traffic.sidecar.istio.io/includeOutboundPorts |
Daftar string port lalu lintas keluar yang lalu lintasnya dialihkan ke Sidecar proxy tanpa memperhatikan alamat IP tujuan. |
|
traffic.sidecar.istio.io/kubevirtInterfaces |
Daftar antarmuka virtual yang dipisahkan koma yang lalu lintas masuknya diperlakukan sebagai lalu lintas keluar. |
Lampiran B: Field ProxyConfig
|
Field |
Tipe |
Deskripsi |
|
configPath |
String |
Jalur ke direktori tempat file konfigurasi yang dihasilkan disimpan. Agen proxy menghasilkan konfigurasi aktual dan menyimpannya di direktori ini. |
|
statsdUdpAddress |
String |
Alamat IP dan port pendengar (listener) statsd UDP. |
|
proxyAdminPort |
Int32 |
Port tempat Envoy mendengarkan perintah administratif. Port default adalah 15000. |
|
controlPlaneAuthPolicy |
AuthenticationPolicy |
AuthenticationPolicy menentukan cara proxy melakukan autentikasi saat terhubung ke lapisan kontrol. Nilai default adalah |
|
concurrency |
Jumlah thread pekerja yang dijalankan. Jika tidak diatur, jumlah ini ditentukan secara otomatis berdasarkan permintaan dan batas CPU. Jika diatur ke 0, semua core pada mesin digunakan. Nilai default adalah 2 thread pekerja. |
|
|
interceptionMode |
InboundInterceptionMode |
Atur mode untuk mengalihkan lalu lintas masuk ke Sidecar proxy. |
|
tracing |
Tracing |
Konfigurasi tracing yang digunakan oleh Sidecar proxy. |
|
sds |
SDS |
Konfigurasi Secret Discovery Service (SDS) yang digunakan oleh proxy. |
|
proxyMetadata |
Map<string, string> |
Variabel lingkungan tambahan untuk proxy. Nama yang diawali dengan ISTIO_META_ disertakan dalam konfigurasi bootstrap yang dihasilkan dan dikirim ke server XDS. |
|
statusPort |
Map<string, string> |
Port administratif (misalnya, untuk pemeriksaan kesiapan) tempat proxy mendengarkan. Nilai default adalah port 15020. |
|
terminationDrainDuration |
Waktu yang diberikan agar koneksi selesai selama shutdown proxy. Saat menerima SIGTERM atau SIGINT, istio-agent menginstruksikan Sidecar proxy aktif untuk mulai draining—memblokir koneksi baru dan memungkinkan koneksi yang ada selesai. Kemudian, proses tidur selama termination_drain_duration sebelum mematikan semua proses Envoy aktif yang tersisa. Jika tidak diatur, nilai default 5s diterapkan. |
|
|
holdApplicationUntilProxyStarts |
Flag boolean untuk mengaktifkan atau menonaktifkan perilaku holdApplicationUntilProxyStarts. Fitur ini menambahkan panggilan balik (hook) untuk menunda startup aplikasi hingga proxy Pod siap menerima traffic, sehingga mengurangi kondisi race tertentu saat startup. |