Menyiapkan VM Compute Engine menggunakan deployment Envoy otomatis
Dokumen ini berlaku untuk API lama. Jika Anda men-deploy dengan API pemilihan rute layanan baru, yang masih dalam pratinjau, lihat Penyiapan Cloud Service Mesh untuk proxy Envoy dengan layanan HTTP.
Sebelum Anda mengikuti petunjuk dalam panduan ini, selesaikan tugas prasyarat yang dijelaskan dalam Bersiap untuk menyiapkan API perutean layanan dengan Envoy dan beban kerja tanpa proxy.
Panduan ini menunjukkan cara men-deploy bidang data secara otomatis yang terdiri dari proxy sidecar Envoy, mengonfigurasinya menggunakan Cloud Service Mesh, dan memverifikasi penyiapan untuk memastikan bahwa penyiapan tersebut berfungsi dengan benar. Proses ini melibatkan hal berikut:
- Mengaktifkan Cloud OS Config API.
- Membuat layanan pengujian.
- Men-deploy data plane sederhana di Compute Engine menggunakan proxy Envoy (Envoy versi 1.18.4, yang hanya mendukung xDS v3).
- Menyiapkan Cloud Service Mesh menggunakan Compute Engine API, yang memungkinkan Cloud Service Mesh mengonfigurasi proxy sidecar Envoy Anda.
- Login ke VM yang menjalankan proxy Envoy dan mengirim permintaan ke backend yang di-load balance melalui proxy Envoy.
Contoh konfigurasi dalam dokumen ini ditujukan untuk tujuan demonstrasi. Untuk lingkungan produksi, Anda mungkin perlu men-deploy komponen tambahan, berdasarkan lingkungan dan persyaratan Anda.
Mengaktifkan Cloud OS Config API
Pastikan Anda mengaktifkan Cloud OS Config API. Jika tidak melakukannya, Anda tidak dapat menginstal komponen yang diperlukan di VM.
Untuk melakukannya:
Konsol
- Di konsol Google Cloud, buka API & layanan.
Buka halaman Library API - Pilih project yang benar.
- Di kotak penelusuran, masukkan Cloud OS Config API dan tekan Enter.
- Pilih Cloud OS Config API.
- Klik Aktifkan.
gcloud
gcloud services enable osconfig.googleapis.com
Membuat layanan pengujian Hello World
Bagian ini menunjukkan cara membuat layanan pengujian sederhana yang menampilkan nama host VM yang melayani permintaan dari klien. Layanan pengujian ini tidak rumit; ini adalah server web yang di-deploy di seluruh grup instance terkelola Compute Engine.
Membuat template instance untuk layanan pengujian Hello World
Template instance yang Anda buat mengonfigurasi contoh server web apache2 menggunakan parameter startup-script
.
Konsol
- Di konsol Google Cloud, buka halaman Instance Templates.
- Klik Create instance template.
- Di kolom yang disediakan, masukkan informasi berikut:
- Nama:
td-demo-hello-world-template
- Disk booting: Pilih sistem operasi dan versi.
- Akun layanan: Akun layanan default Compute Engine
- Cakupan akses: Izinkan akses penuh ke semua Cloud API
- Nama:
- Klik Management, Security, Disks, Networking, Sole Tenancy.
1 Di tab Networking, di kolom Network tags, tambahkan tag
td-http-server
. Di tab Management, salin skrip berikut ke kolom Startup script.
#!/bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
Klik Create.
gcloud
Anda dapat memilih dari banyak versi sistem operasi. Contoh ini menggunakan nilai default Debian 10.
Untuk membuat template instance:
gcloud compute instance-templates create td-demo-hello-world-template \ --machine-type=n1-standard-1 \ --boot-disk-size=20GB \ --image-family=debian-10 \ --image-project=debian-cloud \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=td-http-server \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart sudo mkdir -p /var/www/html/ echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"
Membuat grup instance terkelola untuk layanan Hello World
Di bagian ini, Anda menentukan bahwa grup instance terkelola selalu memiliki dua instance layanan pengujian. Ini untuk tujuan demonstrasi. Cloud Service Mesh mendukung grup instance terkelola yang diskalakan secara otomatis.
Konsol
- Di konsol Google Cloud, buka halaman Instance Groups.
- Klik Create instance group.
- Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
- Masukkan
td-demo-hello-world-mig
untuk nama grup instance terkelola, dan pilih zonaus-central1-a
. - Di bagian Instance template, pilih
td-demo-hello-world-template
, yang merupakan template instance yang Anda buat. - Di bagian Autoscaling mode, pilih
Off:do not autoscale
. - Di bagian Maximum number of instances, tentukan minimal dua sebagai jumlah instance yang ingin Anda buat dalam grup.
- Klik Create.
gcloud
Gunakan gcloud CLI untuk membuat grup instance terkelola dengan template instance yang telah Anda buat sebelumnya.
gcloud compute instance-groups managed create td-demo-hello-world-mig \ --zone us-central1-a \ --size=2 \ --template=td-demo-hello-world-template
Membuat template instance dan grup instance terkelola tempat Envoy di-deploy
Gunakan petunjuk di bagian ini untuk membuat template instance dan grup instance terkelola untuk Cloud Service Mesh dengan proxy Envoy yang di-deploy secara otomatis. Grup instance terkelola membuat VM backend baru menggunakan penskalaan otomatis.
Komponen software yang berjalan di VM Anda
Komponen berikut diinstal di VM Anda saat Anda membuat template instance dengan --service-proxy=enabled
.
- Proxy Envoy, yang dikonfigurasi oleh Cloud Service Mesh, didownload dari bucket Cloud Storage khusus. Bucket berisi build proxy Envoy yang disediakan Google.
- Agen proxy layanan, yang melakukan inisialisasi proxy Envoy dan komponen proxy. Agen proxy layanan menyiapkan intersepsi traffic dan memantau kondisi proxy Envoy saat VM berjalan. Agen proxy layanan juga didownload dari bucket Cloud Storage.
Satu-satunya versi Envoy yang tersedia adalah biner Envoy terbaru yang dihosting di lokasi Cloud Storage khusus. Versi Envoy ini didukung di Compute Engine Debian, CentOS 7/8, dan RHEL 7/8. Selama perbaikan otomatis dan penskalaan, grup instance terkelola akan menginstal Envoy versi terbaru di VM. Dalam beberapa kasus, versi ini mungkin lebih baru daripada Envoy yang di-deploy ke instance VM yang dibuat sebelumnya. Hal ini dapat menyebabkan inkonsistensi versi yang diinstal di seluruh VM dalam grup instance terkelola. Versi yang tidak konsisten berfungsi dengan benar. Jika ada update keamanan untuk Envoy, sebaiknya upgrade grup instance terkelola menggunakan penggantian berkelanjutan.
Membuat template instance
Template instance menentukan konfigurasi instance VM yang dibuat di grup instance terkelola. Flag yang Anda teruskan ke template instance akan menginstal Envoy dan mengonfigurasi instance VM agar siap untuk Cloud Service Mesh.
Anda dapat menggunakan Debian 10/11, CentOS 7/8, atau RHEL 7/8 untuk image disk booting di template instance.
Untuk membuat template instance tersebut:
gcloud compute instance-templates create td-vm-template-auto \ --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 ] \ --image-project=[ debian-cloud | centos-cloud |rhel-cloud ] \ --service-proxy=enabled
Untuk menyesuaikan deployment Envoy, lihat Panduan referensi deployment Envoy otomatis.
Membuat grup instance terkelola
Konsol
- Di konsol Google Cloud, buka halaman Instance Groups.
- Klik Create an instance group.
- Masukkan
td-vm-mig-us-central1
untuk nama grup instance terkelola, dan pilih zonaus-central1-a
. - Di bagian Group type, pilih Managed instance group.
- Di bagian Instance template, pilih
td-vm-template-auto
, template instance yang Anda buat. - Tentukan
2
sebagai jumlah instance yang ingin Anda buat dalam grup. - Klik Buat untuk membuat grup baru.
gcloud
Gunakan gcloud CLI untuk membuat grup instance terkelola dengan template instance yang telah Anda buat sebelumnya.
gcloud compute instance-groups managed create td-vm-mig-us-central1 \ --zone us-central1-a --size=2 --template=td-vm-template-auto
Mengonfigurasi Cloud Service Mesh dengan komponen load balancing Google Cloud
Petunjuk di bagian ini menunjukkan cara mengonfigurasi Cloud Service Mesh sehingga proxy Envoy Anda melakukan load balancing traffic keluar di dua instance backend. Anda mengonfigurasi komponen berikut:
- Health check. Untuk mengetahui informasi selengkapnya tentang health check, baca Konsep Health Check dan Membuat Health Check.
- Aturan firewall, untuk mengaktifkan pemeriksaan health check agar dapat menjangkau backend. Lihat Konsep Health Check untuk mengetahui informasi selengkapnya.
- Layanan backend. Untuk mengetahui informasi selengkapnya tentang layanan backend, baca Layanan Backend.
- Peta aturan perutean. Hal ini mencakup pembuatan aturan penerusan dan peta URL. Untuk mengetahui informasi selengkapnya, baca Menggunakan aturan penerusan dan Menggunakan peta URL.
Membuat health check
Gunakan petunjuk berikut untuk membuat pemeriksaan kesehatan. Untuk mengetahui informasi selengkapnya, lihat Membuat health check.
Konsol
- Buka halaman Health checks di konsol Google Cloud.
Buka halaman Health checks - Klik Create Health Check.
- Untuk nama, masukkan
td-vm-health-check
. - Untuk protokol, pilih HTTP.
- Klik Create.
gcloud
Buat health check.
gcloud compute health-checks create http td-vm-health-check
Membuat aturan firewall
Gunakan petunjuk berikut untuk membuat aturan firewall yang diperlukan untuk pemeriksaan health check. Untuk mengetahui informasi selengkapnya, lihat Aturan firewall untuk health check.
Konsol
- Buka halaman Firewall policies di Konsol Google Cloud.
Buka halaman Kebijakan firewall - Klik Create firewall rule.
- Di halaman Buat aturan firewall, berikan informasi berikut:
- Nama:
fw-allow-health-checks
- Network: Pilih jaringan VPC.
- Prioritas: Masukkan angka untuk prioritas atau 1000 secara default.
- Direction of traffic: Pilih ingress.
- Action on match: Pilih allow.
- Target: Pilih Tag target yang ditentukan, lalu masukkan
td-http-server
di kotak teks Tag target. - Filter sumber: Pilih jenis rentang IP yang benar.
- Rentang IP sumber:
35.191.0.0/16,130.211.0.0/22
- Filter tujuan: Pilih jenis IP.
- Protocols and ports: Klik Specified ports and protocols,
lalu centang
tcp
type in port80
- Nama:
gcloud
Buat aturan firewall untuk health check.
gcloud compute firewall-rules create fw-allow-health-checks \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags td-http-server \ --rules tcp:80
Membuat layanan backend
Buat layanan backend. Jika menggunakan Google Cloud CLI, Anda harus menetapkannya sebagai layanan backend global dengan skema load balancing INTERNAL_SELF_MANAGED. Tambahkan pemeriksaan kesehatan dan grup instance terkelola atau tidak terkelola ke layanan backend. Perhatikan bahwa contoh ini menggunakan grup instance terkelola dengan template VM Compute Engine yang menjalankan contoh layanan HTTP yang dibuat di Membuat grup instance terkelola.
Konsol
Buka halaman Cloud Service Mesh di konsol Google Cloud.
Di tab Services, klik Create Service.
Klik Lanjutkan.
Untuk nama layanan, masukkan
td-vm-service
.Pilih jaringan VPC yang benar.
Pastikan Backend type adalah Instance groups.
Pilih
td-demo-hello-world-mig
, yang merupakan grup instance terkelola yang Anda buat yang berisi backend untuk layanan pengujianHello World
.Masukkan Nomor port yang benar.
Pilih Utilization atau Rate sebagai Balancing mode. Nilai defaultnya adalah Rate.
Klik Done.
Pilih health check yang Anda buat, atau klik Create another health check dan pastikan untuk memilih HTTP sebagai protokol.
Di Connection draining timeout, tetapkan nilai ke
30
detik atau lebih lama.Klik Lanjutkan.
Klik Create.
gcloud
Buat layanan backend.
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --connection-draining-timeout=30s \ --health-checks td-vm-health-check
Tambahkan backend ke layanan backend.
gcloud compute backend-services add-backend td-vm-service \ --instance-group td-demo-hello-world-mig \ --instance-group-zone us-central1-a \ --global
Membuat peta aturan perutean
Peta aturan perutean menentukan cara Cloud Service Mesh merutekan traffic di mesh Anda. Sebagai bagian dari peta aturan perutean, Anda mengonfigurasi alamat IP virtual (VIP) dan serangkaian aturan pengelolaan traffic terkait, seperti perutean berbasis host. Saat aplikasi mengirim permintaan ke VIP, proxy Envoy:
- Mencegah permintaan.
- Mengevaluasinya sesuai dengan aturan pengelolaan traffic di peta URL.
- Memilih layanan backend berdasarkan nama host dalam permintaan.
- Memilih backend atau endpoint yang terkait dengan layanan backend yang dipilih.
- Mengirim traffic ke backend atau endpoint tersebut.
Untuk mengetahui informasi selengkapnya tentang pengelolaan traffic, lihat Pengelolaan traffic lanjutan.
Konsol
Di konsol Google Cloud, pembuatan proxy target digabungkan dengan pembuatan aturan penerusan. Saat Anda membuat aturan penerusan, Google Cloud akan otomatis membuat proxy HTTP target dan melampirkan proxy tersebut ke peta URL.
Buka halaman Cloud Service Mesh di konsol Google Cloud.
Pada tab Peta aturan perutean, klik Buat Peta Aturan Perutean.
Masukkan nama.
Klik Tambahkan Aturan Penerusan.
Untuk nama aturan penerusan, masukkan
td-vm-forwarding-rule
.Pilih jaringan Anda.
Pilih Internal IP Anda. Traffic yang dikirim ke alamat IP ini dicegat oleh proxy Envoy dan dikirim ke layanan yang sesuai sesuai dengan aturan host dan jalur.
Aturan penerusan dibuat sebagai aturan penerusan global dengan
load-balancing-scheme
ditetapkan keINTERNAL_SELF_MANAGED
.Di kolom Custom IP, ketik
10.0.0.1
. Saat VM Anda mengirim ke alamat IP ini, proxy Envoy akan mencegatnya dan mengirimkannya ke endpoint layanan backend yang sesuai sesuai dengan aturan pengelolaan traffic yang ditentukan dalam peta URL.Setiap aturan penerusan di jaringan VPC harus memiliki alamat IP dan port unik per jaringan VPC. Jika Anda membuat lebih dari satu aturan penerusan dengan alamat IP dan port yang sama di jaringan VPC tertentu, hanya aturan penerusan pertama yang valid. Yang lainnya akan diabaikan. Jika
10.0.0.1
tidak tersedia di jaringan Anda, pilih alamat IP lain.Pastikan Port disetel ke
80
.Klik Simpan.
Di bagian Routing rules, pilih Simple host and path rule.
Di bagian Aturan host dan jalur, pilih
td-vm-service
sebagai Layanan.Klik Tambahkan aturan host dan jalur.
Di Hosts, masukkan
hello-world
.Di Service, pilih
td-vm-service
.Klik Simpan.
gcloud
Buat peta URL yang menggunakan layanan backend
td-vm-service
sebagai default.gcloud compute url-maps create td-vm-url-map \ --default-service td-vm-service
Buat path matcher dan aturan host untuk merutekan traffic untuk layanan Anda berdasarkan nama host dan jalur. Contoh ini menggunakan
td-vm-service
sebagai nama layanan dan pencocok jalur default yang cocok dengan semua permintaan jalur untuk host ini (/*
).gcloud compute url-maps add-path-matcher td-vm-url-map \ --default-service td-vm-service \ --path-matcher-name td-vm-path-matcher
gcloud compute url-maps add-host-rule td-vm-url-map \ --path-matcher-name=td-vm-path-matcher \ --hosts=hello-world
Buat proxy HTTP target.
gcloud compute target-http-proxies create td-vm-proxy \ --url-map=td-vm-url-map
Membuat aturan penerusan.
Aturan penerusan harus bersifat global dan harus dibuat dengan nilai
load-balancing-scheme
ditetapkan keINTERNAL_SELF_MANAGED
.gcloud compute forwarding-rules create td-vm-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=10.0.0.1 \ --target-http-proxy=td-vm-proxy \ --ports=80 \ --network=default
Pada tahap ini, Cloud Service Mesh dikonfigurasi untuk melakukan load balancing traffic untuk layanan yang ditentukan dalam peta URL di seluruh backend dalam grup instance terkelola.
Memverifikasi konfigurasi
Di bagian terakhir panduan penyiapan Cloud Service Mesh untuk VM Compute Engine, Anda akan menguji apakah traffic yang dikirim dari VM klien yang dituju ke VIP aturan penerusan dicegat dan dialihkan ke proxy Envoy, yang kemudian merutekan permintaan Anda ke VM yang menghosting layanan Hello World
.
Untuk melakukannya, Anda login ke VM klien, yang telah dikonfigurasi untuk mencegat
traffic dan mengalihkannya ke Envoy. Anda mengirim permintaan curl
ke VIP
yang terkait dengan peta aturan perutean Anda. Envoy memeriksa permintaan curl
,
menentukan layanan mana yang harus di-resolve, dan mengirim permintaan ke
backend yang terkait dengan layanan tersebut.
- Di konsol Google Cloud, buka halaman Instance Groups.
- Pilih grup instance
td-vm-mig-us-central1
. - Di bagian ringkasan VM, klik SSH pada bagian Connect.
- Setelah Anda login ke VM klien, gunakan alat
curl
untuk mengirim permintaan ke layananHello World
melalui Envoy:
curl -H "Host: hello-world" http://10.0.0.1/
Saat mengeluarkan perintah ini berulang kali, Anda akan melihat respons HTML yang berbeda
yang berisi nama host backend di grup instance terkelola Hello World
.
Hal ini karena Envoy menggunakan load balancing round robin, algoritma load
balancing default, saat mengirim traffic ke backend layanan Hello World
.
Langkah selanjutnya
- Pelajari pengelolaan traffic lanjutan.
- Pelajari cara menyiapkan kemampuan observasi dengan Envoy.
- Pelajari cara memecahkan masalah deployment Cloud Service Mesh.
- Pelajari opsi deployment lanjutan di Panduan opsi deployment Envoy otomatis.