Memasukkan proxy file bantuan dengan Cloud Service Mesh
Dokumen ini membahas cara mengonfigurasi injeksi proxy file bantuan dengan Cloud Service Mesh untuk meningkatkan keamanan, keandalan, dan kemampuan observasi jaringan. Fungsi ini diabstraksi dari container utama aplikasi dan diimplementasikan dalam proxy di luar proses umum (file bantuan), yang dikirimkan sebagai container terpisah dalam Pod yang sama. API ini menyediakan fitur Cloud Service Mesh tanpa mendesain ulang aplikasi produksi untuk berpartisipasi dalam mesh layanan.
Injeksi proxy file bantuan otomatis (injeksi otomatis) terjadi saat Cloud Service Mesh mendeteksi label namespace yang dikonfigurasi untuk Pod workload. Proxy tersebut mencegat semua traffic masuk dan keluar ke workload dan berkomunikasi dengan Cloud Service Mesh.
Mengaktifkan injeksi file bantuan otomatis
Cara yang direkomendasikan untuk memasukkan proxy file bantuan adalah dengan menggunakan injektor file bantuan otomatis berbasis webhook, meskipun Anda dapat mengupdate konfigurasi Kubernetes Pod secara manual.
Untuk mengaktifkan injeksi otomatis, beri label namespace dengan label injeksi default jika tag default disiapkan, atau dengan label revisi untuk namespace Anda.
Label yang Anda tambahkan juga bergantung pada apakah Anda men-deploy Cloud Service Mesh yang terkelola (dengan fleet API atau dengan asmcli
), atau menginstal bidang kontrol dalam cluster. Label ini digunakan oleh webhook injektor
file bantuan untuk mengaitkan file bantuan yang dimasukkan dengan revisi bidang kontrol
tertentu.
Untuk mengaktifkan injeksi otomatis:
Dalam cluster
Gunakan perintah berikut untuk menemukan label revisi di
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
Outputnya terlihat mirip dengan yang berikut ini:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-1204-0-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1204-0,istio=istiod,pod-template-hash=5788d57586 istiod-asm-1204-0-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1204-0,istio=istiod,pod-template-hash=5788d57586
Dalam output, di bawah kolom
LABELS
, perhatikan nilai label revisiistiod
, yang mengikuti awalanistio.io/rev=
. Dalam contoh ini, nilainya adalahasm-1204-0
.Terapkan label revisi ke namespace dan hapus label istio-injeksi (jika ada). Dalam perintah berikut,
NAMESPACE
adalah nama namespace tempat Anda ingin mengaktifkan injeksi otomatis, danREVISION
adalah label revisi yang Anda catat pada langkah sebelumnya.kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Anda dapat mengabaikan pesan
"istio-injection not found"
dalam output. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
, yang akan Anda dapatkan di penginstalan baru Cloud Service Mesh atau deployment baru. Karena perilaku injeksi otomatis tidak ditentukan saat namespace memilikiistio-injection
dan label revisi, semua perintahkubectl label
dalam dokumentasi Cloud Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.Mulai ulang pod yang terpengaruh menggunakan langkah-langkah di bagian berikutnya.
Mesh layanan terkelola
Gunakan perintah berikut untuk menemukan saluran rilis yang tersedia:
kubectl -n istio-system get controlplanerevision
Outputnya mirip dengan hal berikut ini:
NAME AGE asm-managed 6d7h
Pada output, pilih nilai di bawah kolom
NAME
dengan labelREVISION
yang sesuai dengan saluran rilis yang tersedia untuk versi Cloud Service Mesh. Terapkan label ini ke namespace Anda, dan hapus labelistio-injection
(jika ada). Dalam perintah berikut, gantiREVISION
dengan label revisi yang Anda catat di atas, dan gantiNAMESPACE
dengan nama namespace tempat Anda ingin mengaktifkan injeksi otomatis:kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Anda dapat mengabaikan pesan
"istio-injection not found"
dalam output. Artinya, namespace sebelumnya tidak memiliki labelistio-injection
, yang akan Anda dapatkan di penginstalan baru Cloud Service Mesh atau deployment baru. Karena perilaku injeksi otomatis tidak ditentukan saat namespace memilikiistio-injection
dan label revisi, semua perintahkubectl label
dalam dokumentasi Cloud Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.Mulai ulang pod yang terpengaruh menggunakan langkah-langkah di bagian berikutnya.
Jika Anda juga men-deploy bidang data yang dikelola Google opsional, anotasikan namespace
demo
sebagai berikut:kubectl annotate --overwrite namespace YOUR_NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Mulai ulang Pod untuk mengupdate proxy file bantuan
Dengan injeksi file bantuan otomatis, Anda dapat mengupdate file bantuan untuk Pod yang ada dengan memulai ulang Pod:
Cara memulai ulang Pod bergantung pada apakah Pod tersebut dibuat sebagai bagian dari Deployment.
Jika Anda menggunakan Deployment, mulai ulang Deployment tersebut, yang akan memulai ulang semua Pod dengan file bantuan.
kubectl rollout restart deployment -n YOUR_NAMESPACE
Jika Anda tidak menggunakan Deployment, hapus Pod, lalu Pod tersebut akan otomatis dibuat ulang dengan file bantuan:
kubectl delete pod -n YOUR_NAMESPACE --all
Pastikan semua Pod dalam namespace telah memasukkan file sespan:
kubectl get pod -n YOUR_NAMESPACE
Pada contoh output berikut dari perintah sebelumnya, perhatikan bahwa kolom
READY
menunjukkan ada dua penampung untuk setiap beban kerja Anda: penampung utama dan penampung untuk proxy file bantuan.NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...
Langkah selanjutnya
Pelajari lebih lanjut: