Opsi untuk penyiapan VM Compute Engine menggunakan deployment Envoy otomatis

Panduan ini menyediakan 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/beban kerja Anda ditayangkan. Proxy layanan mencegat traffic masuk, lalu meneruskannya ke port penyaluran yang ditentukan di localhost.
Opsional
Jika Anda menghapus tanda ini, proxy layanan hanya menangani traffic keluar dari workload Anda. Traffic masuk tidak ditangani oleh proxy layanan.
--service-proxy:proxy-port Port tunggal.
Port tempat proxy layanan memantau. VM mencegat traffic dan mengalihkannya ke port ini untuk ditangani oleh proxy layanan.
Opsional.
Jika Anda menghapus tanda ini, nilai 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 ditetapkan 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 (;), ditentukan dalam tanda kutip ("), 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 (;), ditentukan dalam tanda kutip ("), 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 terpasang 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 terkait dengan 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 ada akan digunakan. Ini hanya berlaku untuk API perutean 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 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 menggunakan fitur ini bersama-sama.
Opsional.

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

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

Pada 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 inferensi sebagai 8080. Koneksi TCP masuk ke port 8080 dicegat oleh iptable dan dialihkan ke proxy Envoy, yang kemudian meneruskannya ke aplikasi di VM yang memproses di port TCP 8080. Selain itu:

  • Semua koneksi keluar ke VIP layanan yang dikonfigurasi di Cloud Service Mesh dicegat oleh iptable, yang mengonfigurasi netfilter. Netfilter memastikan bahwa traffic terkait yang melintasi stack jaringan dicegat dan dialihkan ke proxy Envoy. Traffic kemudian melakukan load balancing berdasarkan cara Anda mengonfigurasi Cloud Service Mesh.
  • Semua koneksi masuk lainnya tidak dicegat oleh iptable, dan diteruskan langsung ke layanan di VM.
  • Semua koneksi ke endpoint eksternal langsung diteruskan ke alamat IP eksternal tanpa dicegat.
  • Semua traffic UDP diteruskan langsung ke tujuan tanpa dicegat oleh iptable.

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 diarahkan langsung ke layanan yang memproses port.
  2. Traffic masuk dengan port tujuan 8080, dicegat dan dialihkan ke port pemroses Envoy.
  3. Envoy meneruskan traffic dari (2) ke service 2 yang memproses di port localhost 8080.
  4. Traffic keluar yang ditujukan ke port VIP dan aturan penerusan Cloud Service Mesh, diintersepsi 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 port dan VIP Mesh Layanan non-Cloud, tidak dicegat, dan diarahkan 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 pada VM. Jika Anda melakukannya, pemeriksaan health check akan melaporkan aplikasi Anda dan di proxy Envoy. 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 memperbarui grup instance terkelola. Gunakan proses ini untuk:

  • Tambahkan komponen proxy layanan ke grup instance terkelola yang ada, lalu daftarkan di jaringan Cloud Service Mesh.
  • Update komponen proxy layanan di VM.

Sebelum melakukan update berkelanjutan, lakukan hal berikut.

  1. Tetapkan pengosongan koneksi di layanan backend ke nilai setidaknya 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 mengupdate VM berikutnya. Tanpanya, VM yang baru dibuat tidak memiliki waktu untuk mem-booting Envoy dan agen proxy layanan sepenuhnya, dan update berlangsung terlalu cepat.

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

  1. Buat template instance baru, seperti 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 untuk grup instance terkelola. Pastikan Anda menetapkan REPLACE sebagai tindakan minimum yang harus dilakukan Updater. Grup instance 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. Menjalankan 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 dapat menghapus konfigurasi Cloud Service Mesh yang dibuat saat menyiapkan Cloud Service Mesh.