Opsi untuk penyiapan VM Compute Engine menggunakan deployment Envoy otomatis

Panduan ini memberikan 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 pada 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 dilayani. Proxy layanan mencegat traffic masuk, lalu meneruskannya ke port layanan 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 memproses. VM mencegat traffic dan mengalihkannya ke port ini untuk ditangani oleh proxy layanan.
Opsional.
Jika Anda menghilangkan 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 ada di lebih dari satu jaringan; jika tidak, hal ini bersifat opsional.
Jika Anda menghilangkan 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 menghilangkan tanda ini, perekaman aktivitas 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 mengetahui 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, yang ditentukan di 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 (;), yang 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 Traffic Director 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 akan berkomunikasi dengan Traffic Director untuk mengambil informasi pemilihan rute yang sesuai dengan rute yang dihubungkan 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 tersebut 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 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 yang disebut proxy-it. Instance yang dibuat dari template ini telah menginstal agen proxy dan proxy layanan Envoy.

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 menggambarkan alur traffic saat Anda menentukan port penayangan sebagai 8080. Koneksi TCP masuk ke port 8080 dicegat oleh iptable dan dialihkan ke proxy Envoy, yang kemudian meneruskannya ke aplikasi pada VM yang memproses di port TCP 8080. Selain itu:

  • Semua koneksi keluar ke VIP layanan yang dikonfigurasi di Traffic Director dicegat oleh iptables, yang mengonfigurasi netfilter. Netfilter memastikan bahwa traffic terkait yang melintasi stack jaringan dicegat dan dialihkan ke proxy Envoy. Lalu lintas tersebut kemudian di-load balanced berdasarkan bagaimana Anda mengonfigurasi Traffic Director.
  • Semua koneksi masuk lainnya tidak dicegat oleh iptable, dan diteruskan secara langsung ke layanan di VM.
  • Semua koneksi ke endpoint eksternal langsung diteruskan ke alamat IP eksternal tanpa disadap.
  • Semua traffic UDP diteruskan langsung ke tujuan tanpa dicegat oleh iptable.

Hal ini diilustrasikan dalam diagram berikut.

Distribusi traffic dengan Traffic Director (klik untuk memperbesar)
Distribusi traffic dengan Traffic Director (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 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 di port localhost 8080.
  4. Traffic keluar yang ditujukan ke port dan aturan penerusan Traffic Director, VIP dan port, dicegat dan dialihkan ke port pemroses Envoy.
  5. Envoy meneruskan traffic dari (4) ke endpoint backend layanan backend Traffic Director tujuan.
  6. Traffic keluar yang ditujukan ke port dan VIP non-Traffic Director, tidak dicegat, dan dirutekan langsung ke layanan eksternal.

Menggunakan label

Jika Anda ingin menentukan label yang akan digunakan dengan pemfilteran metadata Traffic Director 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 mengintersep port health check untuk layanan di 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 pembaruan grup instance terkelola

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

  • Tambahkan komponen proxy layanan ke grup instance terkelola yang ada dan daftarkan dalam jaringan Traffic Director.
  • Perbarui 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 update 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 yang dijelaskan di atas, dengan informasi proxy layanan. Versi asli template instance dapat digunakan untuk update jika berisi informasi proxy layanan dan Anda ingin mengupdate software proxy ke versi stabil terbaru.
  2. Menjalankan update berkelanjutan 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 mungkin perlu menghapus konfigurasi Traffic Director yang Anda buat saat menyiapkan Traffic Director.