Opsi untuk penyiapan VM Compute Engine menggunakan deployment Envoy otomatis

Panduan ini memberi informasi tentang opsi dan tugas tambahan untuk deployment Envoy otomatis.

Opsi pembuatan template instance tambahan

Saat membuat template instance untuk deployment proxy Envoy otomatis, Anda Anda bisa menggunakan parameter berikut untuk menentukan beberapa aspek deployment dan perilaku {i>proxy<i}.

Parameter Nilai dan Deskripsi Wajib diisi atau opsional
--service-proxy
enabled Mengontrol apakah proxy dan agen layanan diinstal dan dikonfigurasi di VM.
Diperlukan jika Anda ingin men-deploy dan mengonfigurasi proxy layanan secara otomatis. Jika Anda menghapus setelan ini, proxy layanan tidak akan diinstal atau dikonfigurasi.
--service-proxy:serving-ports Daftar port yang dipisahkan titik koma.
Port tempat aplikasi/beban kerja Anda ditayangkan. Proxy layanan mencegat traffic masuk, lalu meneruskannya ke port penayangan yang ditentukan di localhost.
Opsional
Jika Anda menghapus tanda ini, proxy layanan hanya menangani traffic keluar dari beban kerja Anda. Traffic masuk tidak ditangani oleh proxy layanan.
--service-proxy:proxy-port Port tunggal.
Port tempat proxy layanan diproses. VM mencegat traffic dan mengalihkannya ke port ini untuk ditangani oleh proxy layanan.
Opsional.
Jika Anda menghapus tanda ini, nilainya akan ditetapkan secara default ke 15001
--service-proxy:network Nama jaringan VPC yang valid.
Jaringan VPC Google Cloud yang digunakan oleh bidang kontrol proxy layanan untuk menghasilkan konfigurasi dinamis bagi proxy layanan.
Diperlukan jika VM berada di lebih dari satu jaringan; jika tidak, ini bersifat opsional.
Jika Anda menghapus tanda ini, nilai yang ditentukan menggunakan parameter --network selama pembuatan template instance VM akan digunakan.
--service-proxy:tracing ON atau OFF
Mengaktifkan proxy layanan untuk membuat informasi pelacakan terdistribusi. Jika disetel ke ON, bidang kontrol proxy layanan akan menghasilkan konfigurasi yang mengaktifkan pelacakan berbasis ID permintaan.
Untuk informasi selengkapnya, lihat dokumentasi generate_request_id untuk proxy Envoy.
Opsional.
Jika Anda menghapus tanda ini, pelacakan tidak akan diaktifkan.
--service-proxy:access-log Jalur file untuk log akses yang dikirim ke proxy layanan oleh bidang kontrol. Semua permintaan masuk dan keluar dicatat dalam file ini.
Untuk informasi selengkapnya, lihat dokumentasi Log akses file untuk proxy Envoy.
Opsional. Tidak ada nilai default. Jika Anda tidak menentukan jalur file, log tidak akan dibuat.
--service-proxy:intercept-all-outbound-traffic (Pratinjau) Mengaktifkan intersepsi semua traffic keluar oleh proxy layanan, lalu mengalihkan ke host eksternal. Gunakan gcloud beta dengan opsi ini. Opsional.
--service-proxy:exclude-outbound-ip-ranges (Pratinjau) Daftar alamat IP atau rentang CIDR yang dipisahkan titik koma (;), dicantumkan di dalam tanda petik ("), yang harus dikecualikan dari pengalihan. Hanya berlaku saat tanda intercept-all-outbound-traffic ditetapkan. Gunakan gcloud beta dengan opsi ini.

Misalnya: exclude-outbound-ip-ranges="8.8.8.8;129.168.10.0/24"

Opsional.
--service-proxy:exclude-outbound-port-ranges (Pratinjau) Daftar port atau rentang port yang dipisahkan titik koma (;), ditentukan di dalam tanda kutip ("), yang harus dikecualikan dari pengalihan. Hanya berlaku saat tanda intercept-all-outbound-traffic ditetapkan. Gunakan gcloud beta dengan opsi ini.

Misalnya: exclude-outbound-port-ranges="81;8080-8090"

Opsional.
--service-proxy:scope (Pratinjau) Opsi scope menentukan batas konfigurasi logis untuk resource Gateway. Saat VM dimulai, proxy layanan berkomunikasi dengan Cloud Service Mesh untuk mengambil informasi perutean yang sesuai dengan rute yang dilampirkan ke gateway dengan nama cakupan ini. Jika scope ditentukan, nilai jaringan akan diabaikan. Anda tidak dapat menentukan nilai scope dan mesh secara bersamaan. Gunakan gcloud beta dengan opsi ini. Opsional.
--service-proxy:mesh (Pratinjau) Opsi mesh menentukan batas konfigurasi logis untuk resource Mesh. Saat VM dimulai, proxy layanan berkomunikasi dengan Cloud Service Mesh untuk mengambil informasi perutean yang sesuai dengan rute yang dilampirkan ke Mesh dengan nama mesh ini. Jika mesh ditentukan, nilai jaringan akan diabaikan. Anda tidak dapat menentukan nilai scope dan mesh secara bersamaan. Gunakan gcloud beta dengan opsi ini Opsional.
--service-proxy:project-number (Pratinjau) Opsi project-number menentukan project tempat resource Mesh dan Gateway dibuat. Jika tidak ditentukan, project tempat instance berada akan digunakan. Ini hanya berlaku untuk API pemilihan rute layanan yang baru. Opsional.
--service-proxy-labels Key-value pair dalam format key=value.
Label yang dapat diterapkan ke proxy layanan Anda. Hal ini tercermin dalam metadata bootstrap proxy Envoy Anda. Label dapat berupa pasangan key=value apa pun yang ingin Anda tetapkan sebagai metadata proxy (misalnya, untuk digunakan dengan pemfilteran konfigurasi. Anda dapat menggunakan tanda ini untuk label aplikasi dan versi, misalnya, app=review atau version=canary. Anda juga dapat menggunakannya bersama-sama.
Opsional.

Misalnya, perintah gcloud berikut membuat template instance disebut proxy-it. Instance yang dibuat dari template ini memiliki proxy Envoy dan agen proxy layanan diinstal.

gcloud compute instance-templates create proxy-it \
    --service-proxy enabled

Dalam contoh berikut, template instance disebut proxy-it, Envoy {i>proxy<i} dan agen {i>service proxy<i} diinstal, porta layanan dan porta {i>proxy<i} telah disetel, pelacakan diaktifkan, dan label ditentukan.

gcloud compute instance-templates create proxy-it \
  --service-proxy enabled,serving-ports=8080,proxy-port=15001,tracing=ON \
  --service-proxy-labels version=canary

Diagram berikut mengilustrasikan alur traffic saat Anda menentukan penayangan port sebagai 8080. Koneksi TCP masuk ke porta 8080 dicegat oleh {i>iptables<i} dan dialihkan ke {i>proxy<i} Envoy, yang kemudian meneruskannya ke aplikasi di VM Anda yang memproses port TCP 8080. Selain itu:

  • Semua koneksi keluar ke VIP layanan yang dikonfigurasi di Cloud Service Mesh dicegat oleh {i>iptables<i}, yang mengonfigurasi {i>netfilter<i}. {i>Netfilter<i} memastikan bahwa lalu lintas yang terkait yang melintasi tumpukan jaringan dicegat dan dialihkan ke {i>proxy<i} Envoy. Lalu lintas lalu lintas akan diseimbangkan berdasarkan bagaimana Anda mengonfigurasi Cloud Service Mesh.
  • Semua koneksi masuk lainnya tidak dicegat oleh iptables, dan diteruskan dan layanan secara langsung di VM.
  • Semua koneksi ke endpoint eksternal diteruskan langsung ke IP eksternal tanpa disadap.
  • Semua traffic UDP diteruskan langsung ke tujuan tanpa dicegat oleh {i>iptables<i}.

Hal ini diilustrasikan dalam diagram berikut.

Distribusi traffic dengan Cloud Service Mesh (klik untuk memperbesar)
Distribusi traffic dengan Cloud Service Mesh (klik untuk memperbesar)

Arus traffic dalam diagram adalah sebagai berikut:

  1. Traffic masuk dengan port tujuan 80, tidak dicegat dan dirutekan langsung ke layanan yang menangkap porta.
  2. Traffic masuk dengan port tujuan 8080, dicegat dan dialihkan ke port pemroses Envoy.
  3. Envoy meneruskan traffic dari (2) ke layanan 2 yang memproses port localhost 8080.
  4. Traffic keluar yang ditujukan ke aturan penerusan Cloud Layanan Mesh VIP dan porta, dicegat dan dialihkan ke porta pemroses Envoy.
  5. Envoy meneruskan traffic dari (4) ke endpoint backend tujuan Layanan backend Cloud Service Mesh.
  6. Traffic keluar yang ditujukan ke VIP dan port Non-Cloud Service Mesh, bukan dicegat, dan diarahkan langsung ke layanan eksternal.

Menggunakan label

Jika Anda ingin menentukan label yang akan digunakan dengan metadata Cloud Service Mesh memfilter atau mengaktifkan pencatatan akses untuk proxy Envoy, gunakan Parameter --service-proxy-labels atau --service-proxy access-log.

Contoh:

gcloud compute instance-templates create td-vm-template-auto \
   --service-proxy enabled,access-log=/var/log/envoy/access.log,network=default \
   --service-proxy-labels myapp=review,version=canary

Proxy Envoy dapat mencegat port health check untuk layanan di VM. Jika Anda melakukannya, laporan pemeriksaan health check pada aplikasi Anda dan menggunakan {i>proxy<i}. Traffic tidak diarahkan ke VM jika proxy Envoy tidak berjalan dengan benar. Contoh:

gcloud compute instance-templates create td-vm-template-auto \
  --service-proxy=enabled,serving-ports="80;8080"

Menggunakan proses pembaruan grup instance terkelola

Jika Anda menggunakan proses otomatis untuk mengonfigurasi Dengan proxy Envoy, Anda dapat menggunakan proses update grup instance terkelola untuk memperbarui grup instance terkelola. Gunakan proses ini untuk:

  • Menambahkan komponen proxy layanan ke grup instance terkelola yang ada dan mendaftarkannya di jaringan Cloud Service Mesh.
  • Mengupdate komponen proxy layanan di VM.

Sebelum melakukan update berkelanjutan, lakukan hal berikut.

  1. Menyetel penghentian koneksi di layanan backend ke nilai setidaknya selama 30 detik.
  2. Gunakan parameter --min-ready, yang ditetapkan ke nilai 3 menit atau lebih, jika Anda sebut updater. Parameter --min-ready membuat instance terkelola grup menunggu setelah VM diperbarui sebelum melanjutkan pembaruan VM berikutnya. Tanpa ini, VM yang baru dibuat tidak punya waktu untuk mem-{i>booting<i} Envoy dan agen {i>proxy<i} layanan, dan pembaruan berlangsung terlalu cepat.

Untuk melakukan update berkelanjutan pada grup instance terkelola, ikuti langkah-langkah berikut langkah.

  1. Buat template instance baru, seperti yang dijelaskan di atas, dengan proxy layanan tidak akurat atau tidak sesuai. Versi asli template instance dapat digunakan untuk update jika itu berisi informasi {i>proxy<i} layanan dan tujuan Anda adalah memperbarui ke versi stabil terbaru dari perangkat lunak {i>proxy<i}.
  2. Lakukan update berkelanjutan pada grup instance terkelola. Pastikan bahwa Anda menetapkan REPLACE sebagai tindakan minimum yang harus dilakukan Updater. Grup instance menginstal perangkat lunak {i>proxy<i} versi terbaru dan mengkonfigurasinya sebagai yang ditentukan dalam template instance.

Anda juga dapat menghapus komponen proxy layanan dari grup instance terkelola menggunakan proses pembaruan:

  1. Buat template instance baru tanpa menentukan flag --service-proxy.

  2. Lakukan update berkelanjutan menggunakan proses update grup instance terkelola.

Tindakan ini akan menghapus proxy Envoy dari VM Anda. Jika grup instance terkelola tersebut satu-satunya MIG yang terpasang ke layanan backend, Anda mungkin ingin menghapus Konfigurasi Cloud Service Mesh yang Anda buat saat menyiapkan dan Cloud Service Mesh.