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-fungsi tersebut adalah diabstraksi dari container utama aplikasi dan diimplementasikan dalam proxy di luar proses umum (file bantuan), yang dikirimkan sebagai penampung terpisah di Pod yang sama. Dengan begitu, 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. {i>Proxy<i} mencegat semua lalu lintas masuk dan keluar ke beban kerja dan mengomunikasikan dengan Cloud Service Mesh.

Mengaktifkan injeksi file bantuan otomatis

Cara yang direkomendasikan untuk memasukkan proxy file bantuan adalah dengan menggunakan webhook berbasis webhook injektor file bantuan otomatis, meskipun Anda dapat mengupdate Pod secara manual konfigurasi Kubernetes.

Untuk mengaktifkan injeksi otomatis, beri label namespace Anda dengan label injeksi default apakah tag default sudah disiapkan, atau dengan label revisi untuk namespace Anda. Label yang Anda tambahkan juga bergantung pada apakah Anda men-deploy atau tidak Cloud Service Mesh terkelola (dengan fleet API atau dengan asmcli), atau yang telah menginstal bidang kontrol dalam cluster. Label digunakan oleh file bantuan webhook injektor untuk mengaitkan file bantuan yang diinjeksi dengan bidang kontrol tertentu revisi.

Untuk mengaktifkan injeksi otomatis:

Dalam cluster

  1. 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-1233-2-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-1233-2-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586

    Pada output, di bawah kolom LABELS, perhatikan nilai istiod label revisi, yang mengikuti awalan istio.io/rev=. Di sini contoh, nilainya adalah asm-1233-2.

  2. Menerapkan label revisi ke namespace dan menghapus label istio-injeksi (jika ada). Dalam perintah berikut, NAMESPACE adalah nama namespace tempat Anda ingin mengaktifkan injeksi otomatis, dan REVISION adalah label revisi yang Anda catat di langkah sebelumnya.

    kubectl label namespace NAMESPACE  istio-injection- istio.io/rev=REVISION --overwrite
    

    Anda dapat mengabaikan pesan "istio-injection not found" di {i>output<i} tersebut. Itu berarti bahwa namespace sebelumnya tidak memiliki Label istio-injection, yang akan Anda dapatkan di jendela baru penginstalan Cloud Service Mesh atau deployment baru. Karena injeksi otomatis perilaku tidak ditentukan jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl label di Dokumentasi Cloud Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.

  3. Mulai ulang pod yang terpengaruh menggunakan langkah-langkah di bagian berikutnya.

Mesh layanan terkelola

  1. 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 adalah nilai Label REVISION yang sesuai dengan label yang tersedia saluran rilis untuk versi Cloud Service Mesh. Terapkan label ini ke namespace Anda, dan hapus label istio-injection (jika ada). Dalam perintah berikut, ganti REVISION dengan label revisi yang Anda catat di atas, dan ganti NAMESPACE 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" di {i>output<i} tersebut. Itu berarti bahwa namespace sebelumnya tidak memiliki Label istio-injection, yang akan Anda dapatkan di jendela baru penginstalan Cloud Service Mesh atau deployment baru. Karena injeksi otomatis perilaku tidak ditentukan jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl label di Dokumentasi Cloud Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.

  2. Mulai ulang pod yang terpengaruh menggunakan langkah-langkah di bagian berikutnya.

  3. Jika Anda juga men-deploy Bidang data yang dikelola Google, 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 setelah Pod dimulai ulang:

Cara memulai ulang Pod bergantung pada apakah Pod tersebut dibuat sebagai bagian dari Deployment.

  1. 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, dan Pod tersebut akan otomatis dibuat ulang dengan file bantuan:

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. Pastikan semua Pod dalam namespace telah memasukkan file sespan:

    kubectl get pod -n YOUR_NAMESPACE

    Pada contoh {i>output<i} dari perintah sebelumnya, perhatikan bahwa Kolom READY menunjukkan ada dua penampung untuk setiap workload: container utama dan container untuk proxy file bantuan.

    NAME                    READY   STATUS    RESTARTS   AGE
    YOUR_WORKLOAD           2/2     Running   0          20s
    ...
    

Langkah selanjutnya

Pelajari lebih lanjut: