Opsi untuk penyiapan VM Compute Engine menggunakan deployment Envoy otomatis

Panduan ini memberi Anda 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 dapat menggunakan parameter berikut untuk menentukan beberapa aspek deployment dan perilaku proxy.

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/workload Anda ditayangkan. Proxy layanan menangkap traffic masuk, lalu meneruskannya ke port penayangan yang ditentukan di localhost.
Opsional
Jika Anda menghapus tanda ini, proxy layanan hanya akan menangani traffic keluar dari beban kerja Anda. Traffic masuk tidak ditangani oleh proxy layanan.
--service-proxy:proxy-port Satu port.
Port yang diproses oleh proxy layanan. VM mencegat traffic dan mengalihkannya ke port ini untuk ditangani oleh proxy layanan.
Opsional.
Jika Anda menghapus flag ini, nilai defaultnya adalah 15001
--service-proxy:network Nama jaringan VPC yang valid.
Jaringan VPC Google Cloud yang digunakan oleh bidang kontrol proxy layanan untuk membuat konfigurasi dinamis bagi proxy layanan.
Wajib 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
Memungkinkan proxy layanan menghasilkan informasi pelacakan terdistribusi. Jika ditetapkan ke ON, bidang kontrol proxy layanan akan menghasilkan konfigurasi yang memungkinkan 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 (;) dan ditentukan di dalam tanda petik ("), yang harus dikecualikan dari pengalihan. Hanya berlaku jika flag 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 (;) dan ditentukan di dalam tanda petik ("), yang harus dikecualikan dari pengalihan. Hanya berlaku jika flag 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. Menggunakan 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. Hal ini hanya berlaku untuk API pemilihan rute layanan baru. Opsional.
--service-proxy-labels Key/value pair dalam format key=value.
Label yang dapat Anda terapkan ke proxy layanan. Hal ini tercermin dalam metadata bootstrap proxy Envoy Anda. Label dapat berupa pasangan key=value yang ingin Anda tetapkan sebagai metadata proxy (misalnya, untuk digunakan dengan pemfilteran konfigurasi. Anda dapat menggunakan flag 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 yang disebut proxy-it. Instance yang dibuat dari template ini telah menginstal proxy Envoy dan agen proxy layanan.

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

Dalam contoh berikut, template instance disebut proxy-it, proxy Envoy dan agen proxy layanan diinstal, port penayangan dan port proxy ditetapkan, 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 port penayangan sebagai 8080. Koneksi TCP masuk ke port 8080 dicegat oleh iptables dan dialihkan ke proxy 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 disadap oleh iptables, yang mengonfigurasi netfilter. Netfilter memastikan bahwa traffic yang sesuai yang melintasi stack jaringan akan dicegat dan diarahkan ke proxy Envoy. Traffic kemudian di-load balance berdasarkan cara Anda mengonfigurasi Cloud Service Mesh.
  • Semua koneksi masuk lainnya tidak dicegat oleh iptables, dan diteruskan langsung ke layanan di VM.
  • Semua koneksi ke endpoint eksternal diteruskan langsung ke alamat IP eksternal tanpa dicegat.
  • Semua traffic UDP diteruskan langsung ke tujuan tanpa disadap oleh iptables.

Hal ini diilustrasikan dalam diagram berikut.

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

Alur traffic dalam diagram adalah sebagai berikut:

  1. Traffic masuk dengan port tujuan 80, tidak dicegat dan dirutekan langsung ke layanan yang memproses di port.
  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 traffic di port localhost 8080.
  4. Traffic keluar yang dituju ke VIP dan port aturan penerusan Cloud Service Mesh, disadap dan dialihkan ke port pemroses Envoy.
  5. Envoy meneruskan traffic dari (4) ke endpoint backend layanan backend Cloud Service Mesh tujuan.
  6. Traffic keluar yang ditujukan ke VIP dan port non-Cloud Service Mesh, tidak disadap, dan dirutekan langsung ke layanan eksternal.

Menggunakan label

Jika Anda ingin menentukan label yang akan digunakan dengan pemfilteran metadata Cloud Service Mesh atau mengaktifkan logging 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, pemeriksaan health check akan melaporkan aplikasi dan proxy Envoy Anda. 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 update grup instance terkelola

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

  • Tambahkan komponen proxy layanan ke grup instance terkelola yang ada dan daftarkan ke jaringan Cloud Service Mesh.
  • Perbarui komponen proxy layanan di VM.

Sebelum melakukan update bertahap, lakukan hal berikut.

  1. Tetapkan pengosongan koneksi di layanan backend ke nilai minimal 30 detik.
  2. Gunakan parameter --min-ready, yang ditetapkan ke nilai 3 menit atau lebih, saat Anda memanggil updater. Parameter --min-ready membuat grup instance terkelola menunggu setelah VM diupdate sebelum melanjutkan untuk mengupdate VM berikutnya. Tanpa ini, VM yang baru dibuat tidak memiliki waktu untuk mem-booting Envoy dan agen proxy layanan sepenuhnya, dan update berlangsung terlalu cepat.

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

  1. Buat template instance baru, seperti yang dijelaskan di atas, dengan informasi proxy layanan. Versi asli template instance dapat digunakan untuk update jika berisi informasi proxy layanan dan tujuan Anda adalah mengupdate ke software proxy versi stabil terbaru.
  2. Lakukan update berkelanjutan pada grup instance terkelola. Pastikan Anda menetapkan REPLACE sebagai tindakan minimum yang harus dilakukan Updater. Grup instance akan menginstal software proxy versi terbaru dan mengonfigurasinya seperti yang ditentukan dalam template instance.

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

  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 adalah satu-satunya MIG yang dilampirkan ke layanan backend, Anda mungkin ingin menghapus konfigurasi Cloud Service Mesh yang dibuat saat menyiapkan Cloud Service Mesh.