Menyiapkan VM menggunakan deployment Envoy manual
Dokumen ini ditujukan untuk administrator jaringan yang ingin menyiapkan Cloud Service Mesh secara manual. Proses manual adalah mekanisme lama yang hanya ditujukan untuk pengguna tingkat lanjut yang menyiapkan Cloud Service Mesh dengan API load balancing.
Sebaiknya siapkan Cloud Service Mesh menggunakan API pemilihan rute layanan, bukan API load balancing yang lebih lama. Jika Anda harus menggunakan API load balancing, sebaiknya gunakan deployment Envoy otomatis, bukan proses manual yang dijelaskan di halaman ini.
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 platform data secara manual yang terdiri dari proxy sidecar Envoy dengan virtual machine (VM) Compute Engine, mengonfigurasinya menggunakan Cloud Service Mesh, dan memverifikasi penyiapan untuk memastikan bahwa penyiapan tersebut berfungsi dengan benar. Proses ini melibatkan:
- Membuat layanan pengujian.
- Men-deploy data plane sederhana di Compute Engine menggunakan proxy Envoy.
- 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 kirim 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.
Ringkasan proses konfigurasi
Bagian ini memberikan proses konfigurasi manual untuk layanan yang berjalan di VM Compute Engine. Proses konfigurasi untuk VM klien terdiri dari penyiapan proxy file bantuan dan intersepsi traffic di VM host Compute Engine. Kemudian, Anda mengonfigurasi load balancing menggunakan API load balancing Google Cloud.
Bagian ini memberikan informasi tentang cara mendapatkan dan memasukkan proxy Envoy dari sumber pihak ketiga yang tidak dikelola oleh Google.
Saat aplikasi mengirim traffic ke layanan yang dikonfigurasi di Cloud Service Mesh, traffic akan dicegat dan dialihkan ke proxy sidecar yang kompatibel dengan xDS API, lalu di-load balance ke backend sesuai dengan konfigurasi di komponen load balancing Google Cloud. Untuk informasi selengkapnya tentang jaringan host dan intersepsi traffic, baca Intersepsi traffic proxy sidecar di Cloud Service Mesh.
Untuk setiap host VM yang memerlukan akses ke layanan Cloud Service Mesh, lakukan langkah-langkah berikut:
Tetapkan akun layanan ke VM.
Tetapkan cakupan akses API VM untuk mengizinkan akses penuh ke Google Cloud API.
- Saat membuat VM, di bagian Identity and API access, klik Allow full access to all Cloud APIs.
Dengan gcloud CLI, tentukan hal berikut:
--scopes=https://www.googleapis.com/auth/cloud-platform
.
Izinkan koneksi keluar ke
trafficdirector.googleapis.com
(TCP, port 443) dari VM, sehingga proxy sidecar dapat terhubung ke bidang kontrol Cloud Service Mesh melalui gRPC. Koneksi keluar ke port 443 diaktifkan secara default.Deploy proxy sidecar yang kompatibel dengan xDS API (seperti Envoy), dengan konfigurasi bootstrap yang mengarah ke
trafficdirector.googleapis.com:443
sebagai server xDS-nya. Untuk mendapatkan contoh file konfigurasi bootstrap, buka file terkompresi traffic-director-xdsv3.tar.gz dan ubah filebootstrap_template.yaml
agar sesuai dengan kebutuhan Anda.Alihkan traffic IP yang ditujukan ke layanan ke port pemroses intersepsi proxy sidecar.
- Port pemroses intersepsi proxy sidecar ditentukan sebagai
TRAFFICDIRECTOR_INTERCEPTION_PORT
dalam konfigurasi metadata bootstrap proxy dan ditetapkan ke 15001 dalam contoh file konfigurasi bootstrap dalam file terkompresi ini. - Skrip
iptables.sh
Istio dalam file terkompresi dapat digunakan untuk menyiapkan intersepsi traffic.
- Port pemroses intersepsi proxy sidecar ditentukan sebagai
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
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: Debian GNU/Linux 10 (buster)
- Akun layanan: Akun layanan default Compute Engine
- Cakupan akses: Izinkan akses penuh ke semua Cloud API
- Nama:
- Klik Management, Security, Disks, Networking, Sole Tenancy.
- 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
Buat 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
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
, yaitu template instance yang Anda buat. - Di bagian Autoscaling mode, pilih Don't autoscale.
- Di bagian 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 secara manual untuk Cloud Service Mesh. Grup instance terkelola membuat VM backend baru menggunakan penskalaan otomatis.
Contoh ini menunjukkan cara:
- Buat template VM dengan konfigurasi Envoy lengkap dan contoh layanan yang menayangkan nama hostnya menggunakan protokol HTTP.
- Konfigurasikan grup instance terkelola menggunakan template ini.
Membuat template instance
Pertama, buat template instance VM Compute Engine. Template ini mengonfigurasi proxy sidecar Envoy dan contoh layanan web apache2 secara otomatis melalui parameter startup-script
.
Konsol
Di konsol Google Cloud, buka halaman Instance templates.
- Klik Create instance template.
Isi kolom sebagai berikut:
- Nama: td-vm-template
- Disk booting: Debian GNU/Linux 10 (buster)
- Akun layanan: Akun layanan default Compute Engine
- Cakupan akses: Izinkan akses penuh ke semua Cloud API
Di bagian Firewall, centang kotak di samping Allow HTTP traffic dan Allow HTTPS traffic.
Klik Management, Security, Disks, Networking, Sole Tenancy.
Di tab Management, salin skrip berikut ke kolom Startup script.
#! /usr/bin/env bash # Set variables export ENVOY_USER="envoy" export ENVOY_USER_UID="1337" export ENVOY_USER_GID="1337" export ENVOY_USER_HOME="/opt/envoy" export ENVOY_CONFIG="${ENVOY_USER_HOME}/config.yaml" export ENVOY_PORT="15001" export ENVOY_ADMIN_PORT="15000" export ENVOY_TRACING_ENABLED="false" export ENVOY_XDS_SERVER_CERT="/etc/ssl/certs/ca-certificates.crt" export ENVOY_ACCESS_LOG="/dev/stdout" export ENVOY_NODE_ID="$(cat /proc/sys/kernel/random/uuid)~$(hostname -i)" export BOOTSTRAP_TEMPLATE="${ENVOY_USER_HOME}/bootstrap_template.yaml" export GCE_METADATA_SERVER="169.254.169.254/32" export INTERCEPTED_CIDRS="*" export GCP_PROJECT_NUMBER=PROJECT_NUMBER export VPC_NETWORK_NAME=NETWORK_NAME export GCE_ZONE=$(curl -sS -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone | cut -d"/" -f4) # Create system user account for Envoy binary sudo groupadd ${ENVOY_USER} \ --gid=${ENVOY_USER_GID} \ --system sudo adduser ${ENVOY_USER} \ --uid=${ENVOY_USER_UID} \ --gid=${ENVOY_USER_GID} \ --home=${ENVOY_USER_HOME} \ --disabled-login \ --system # Download and extract the Cloud Service Mesh tar.gz file cd ${ENVOY_USER_HOME} sudo curl -sL https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz -o traffic-director-xdsv3.tar.gz sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/bootstrap_template.yaml \ -C bootstrap_template.yaml \ --strip-components 1 sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/iptables.sh \ -C iptables.sh \ --strip-components 1 sudo rm traffic-director-xdsv3.tar.gz # Generate Envoy bootstrap configuration cat "${BOOTSTRAP_TEMPLATE}" \ | sed -e "s|ENVOY_NODE_ID|${ENVOY_NODE_ID}|g" \ | sed -e "s|ENVOY_ZONE|${GCE_ZONE}|g" \ | sed -e "s|VPC_NETWORK_NAME|${VPC_NETWORK_NAME}|g" \ | sed -e "s|CONFIG_PROJECT_NUMBER|${GCP_PROJECT_NUMBER}|g" \ | sed -e "s|ENVOY_PORT|${ENVOY_PORT}|g" \ | sed -e "s|ENVOY_ADMIN_PORT|${ENVOY_ADMIN_PORT}|g" \ | sed -e "s|XDS_SERVER_CERT|${ENVOY_XDS_SERVER_CERT}|g" \ | sed -e "s|TRACING_ENABLED|${ENVOY_TRACING_ENABLED}|g" \ | sed -e "s|ACCESSLOG_PATH|${ENVOY_ACCESS_LOG}|g" \ | sed -e "s|BACKEND_INBOUND_PORTS|${BACKEND_INBOUND_PORTS}|g" \ | sudo tee "${ENVOY_CONFIG}" # Install Envoy binary curl -sL "https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key" | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check echo "deb [arch=amd64 signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] https://deb.dl.getenvoy.io/public/deb/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list sudo apt update sudo apt -y install getenvoy-envoy # Run Envoy as systemd service sudo systemd-run --uid=${ENVOY_USER_UID} --gid=${ENVOY_USER_GID} \ --working-directory=${ENVOY_USER_HOME} --unit=envoy.service \ bash -c "/usr/bin/envoy --config-path ${ENVOY_CONFIG} | tee" # Configure iptables for traffic interception and redirection sudo ${ENVOY_USER_HOME}/iptables.sh \ -p "${ENVOY_PORT}" \ -u "${ENVOY_USER_UID}" \ -g "${ENVOY_USER_GID}" \ -m "REDIRECT" \ -i "${INTERCEPTED_CIDRS}" \ -x "${GCE_METADATA_SERVER}"
Klik Buat untuk membuat template.
gcloud
Buat template instance.
gcloud compute instance-templates create td-vm-template \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=http-td-tag,http-server,https-server \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /usr/bin/env bash # Set variables export ENVOY_USER="envoy" export ENVOY_USER_UID="1337" export ENVOY_USER_GID="1337" export ENVOY_USER_HOME="/opt/envoy" export ENVOY_CONFIG="${ENVOY_USER_HOME}/config.yaml" export ENVOY_PORT="15001" export ENVOY_ADMIN_PORT="15000" export ENVOY_TRACING_ENABLED="false" export ENVOY_XDS_SERVER_CERT="/etc/ssl/certs/ca-certificates.crt" export ENVOY_ACCESS_LOG="/dev/stdout" export ENVOY_NODE_ID="$(cat /proc/sys/kernel/random/uuid)~$(hostname -i)" export BOOTSTRAP_TEMPLATE="${ENVOY_USER_HOME}/bootstrap_template.yaml" export GCE_METADATA_SERVER="169.254.169.254/32" export INTERCEPTED_CIDRS="*" export GCP_PROJECT_NUMBER=PROJECT_NUMBER export VPC_NETWORK_NAME=NETWORK_NAME export GCE_ZONE=$(curl -sS -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone | cut -d"/" -f4) # Create system user account for Envoy binary sudo groupadd ${ENVOY_USER} \ --gid=${ENVOY_USER_GID} \ --system sudo adduser ${ENVOY_USER} \ --uid=${ENVOY_USER_UID} \ --gid=${ENVOY_USER_GID} \ --home=${ENVOY_USER_HOME} \ --disabled-login \ --system # Download and extract the Cloud Service Mesh tar.gz file cd ${ENVOY_USER_HOME} sudo curl -sL https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz -o traffic-director-xdsv3.tar.gz sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/bootstrap_template.yaml \ -C bootstrap_template.yaml \ --strip-components 1 sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/iptables.sh \ -C iptables.sh \ --strip-components 1 sudo rm traffic-director-xdsv3.tar.gz # Generate Envoy bootstrap configuration cat "${BOOTSTRAP_TEMPLATE}" \ | sed -e "s|ENVOY_NODE_ID|${ENVOY_NODE_ID}|g" \ | sed -e "s|ENVOY_ZONE|${GCE_ZONE}|g" \ | sed -e "s|VPC_NETWORK_NAME|${VPC_NETWORK_NAME}|g" \ | sed -e "s|CONFIG_PROJECT_NUMBER|${GCP_PROJECT_NUMBER}|g" \ | sed -e "s|ENVOY_PORT|${ENVOY_PORT}|g" \ | sed -e "s|ENVOY_ADMIN_PORT|${ENVOY_ADMIN_PORT}|g" \ | sed -e "s|XDS_SERVER_CERT|${ENVOY_XDS_SERVER_CERT}|g" \ | sed -e "s|TRACING_ENABLED|${ENVOY_TRACING_ENABLED}|g" \ | sed -e "s|ACCESSLOG_PATH|${ENVOY_ACCESS_LOG}|g" \ | sed -e "s|BACKEND_INBOUND_PORTS|${BACKEND_INBOUND_PORTS}|g" \ | sudo tee "${ENVOY_CONFIG}" # Install Envoy binary curl -sL "https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key" | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check echo "deb [arch=amd64 signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] https://deb.dl.getenvoy.io/public/deb/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list sudo apt update sudo apt -y install getenvoy-envoy # Run Envoy as systemd service sudo systemd-run --uid=${ENVOY_USER_UID} --gid=${ENVOY_USER_GID} \ --working-directory=${ENVOY_USER_HOME} --unit=envoy.service \ bash -c "/usr/bin/envoy --config-path ${ENVOY_CONFIG} | tee" # Configure iptables for traffic interception and redirection sudo ${ENVOY_USER_HOME}/iptables.sh \ -p "${ENVOY_PORT}" \ -u "${ENVOY_USER_UID}" \ -g "${ENVOY_USER_GID}" \ -m "REDIRECT" \ -i "${INTERCEPTED_CIDRS}" \ -x "${GCE_METADATA_SERVER}" '
Membuat grup instance terkelola
Jika Anda tidak memiliki grup instance terkelola dengan layanan yang berjalan, buat grup instance terkelola, menggunakan template VM seperti yang ditampilkan di bagian sebelumnya. Contoh ini menggunakan template instance yang dibuat di bagian sebelumnya untuk menunjukkan fungsi. Anda tidak perlu menggunakan template instance.
Konsol
Di Konsol Google Cloud, buka halaman Instance groups.
- Klik Create an instance group. Secara default, Anda akan melihat halaman untuk membuat grup instance terkelola.
- Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
- Masukkan
td-vm-mig-us-central1
untuk nama grup instance terkelola, dan pilih zonaus-central1-a
. - Di bagian Instance template, pilih template instance yang Anda buat.
- Tentukan 2 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-vm-mig-us-central1 \ --zone us-central1-a --size=2 --template=td-vm-template
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 Ringkasan health check dan Membuat health check.
- Aturan firewall, untuk mengaktifkan pemeriksaan health check agar dapat menjangkau backend. Untuk mengetahui informasi selengkapnya, lihat Ringkasan health check.
- Layanan backend. Untuk informasi selengkapnya tentang layanan backend, lihat Ringkasan layanan backend.
- Peta aturan perutean. Hal ini mencakup pembuatan aturan penerusan dan peta URL. Untuk mengetahui informasi selengkapnya, lihat Ringkasan 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
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
Buat aturan firewall:
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 http-td-tag,http-server,https-server \ --rules tcp
Membuat layanan backend
Jika menggunakan Google Cloud CLI, Anda harus menetapkan layanan backend 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
Di konsol Google Cloud, buka halaman Cloud Service Mesh.
- 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 grup instance terkelola yang Anda buat.
- Masukkan Nomor port yang benar.
- Pilih Utilization atau Rate sebagai Balancing mode. Nilai defaultnya adalah Rate.
- Klik Done.
- Pilih health check yang Anda buat.
- Klik Simpan dan lanjutkan.
- Klik Buat.
gcloud
Buat layanan backend:
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --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.
Gunakan petunjuk ini untuk membuat aturan rute, aturan penerusan, proxy target, dan alamat IP internal untuk konfigurasi Cloud Service Mesh Anda.
Traffic yang dikirim ke alamat IP internal dicegat oleh proxy Envoy dan dikirim ke layanan yang sesuai menurut aturan host dan jalur.
Aturan penerusan dibuat sebagai aturan penerusan global dengan
load-balancing-scheme
ditetapkan ke INTERNAL_SELF_MANAGED
.
Anda dapat menetapkan alamat aturan penerusan ke 0.0.0.0
. Jika Anda melakukannya,
traffic akan dirutekan berdasarkan nama host dan informasi jalur HTTP
yang dikonfigurasi di peta URL, terlepas dari alamat IP tujuan
permintaan yang sebenarnya. Dalam hal ini, nama host
layanan Anda, seperti yang dikonfigurasi dalam aturan host, harus unik dalam
konfigurasi mesh layanan Anda. Artinya, Anda tidak dapat memiliki dua layanan yang berbeda, dengan kumpulan backend yang berbeda, yang keduanya menggunakan nama host yang sama.
Atau, Anda dapat mengaktifkan pemilihan rute berdasarkan VIP tujuan
layanan yang sebenarnya. Jika Anda mengonfigurasi VIP layanan sebagai parameter address
dari aturan penerusan, hanya permintaan yang ditujukan ke alamat ini yang akan dirutekan berdasarkan parameter HTTP yang ditentukan dalam peta URL.
Contoh ini menggunakan 10.0.0.1
sebagai parameter alamat, yang berarti bahwa
rute untuk layanan Anda dilakukan berdasarkan VIP tujuan
layanan yang sebenarnya.
Konsol
Di konsol Google Cloud, proxy target digabungkan dengan aturan penerusan. Saat Anda membuat aturan penerusan, Google Cloud akan otomatis membuat proxy HTTP target dan melampirkan proxy tersebut ke peta URL.
Di konsol Google Cloud, buka halaman Cloud Service Mesh.
- 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 Host and path rules, 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:
gcloud compute url-maps create td-vm-url-map \ --default-service td-vm-service
Buat pencocok jalur peta URL dan aturan host untuk merutekan traffic untuk layanan Anda berdasarkan nama host dan jalur. Contoh ini menggunakan
service-test
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 --hosts service-test \ --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 ini, 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
.
Pertama, pastikan backend berfungsi dengan baik menggunakan langkah-langkah berikut:
Konsol
Di konsol Google Cloud, buka halaman Cloud Service Mesh.
Ringkasan memberi tahu Anda apakah layanan responsif atau tidak.
- Klik nama layanan. Halaman Detail layanan memiliki informasi tentang kondisi backend.
- Jika backend tidak responsif, Anda dapat meresetnya dengan mengklik nama backend, lalu mengklik Reset di halaman detail instance VM.
gcloud
Gunakan perintah compute backend-services
get-health
untuk memverifikasi bahwa backend responsif:
gcloud compute backend-services get-health td-vm-service \ --global \ --format=get(name, healthStatus)
Setelah memverifikasi status kesehatan backend, login ke VM klien yang telah dikonfigurasi untuk mencegat traffic dan mengalihkannya ke Envoy. Kirim 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.
Konsol
Di Konsol Google Cloud, buka halaman Instance groups.
- Pilih grup instance
td-vm-mig-us-central1
. - Di bagian Connect, klik SSH.
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
.
Setelah konfigurasi selesai, setiap VM Compute Engine yang memiliki proxy sidecar dapat mengakses layanan yang dikonfigurasi di Cloud Service Mesh menggunakan protokol HTTP.
Jika Anda mengikuti contoh tertentu dalam panduan ini menggunakan template VM Compute Engine dengan server HTTP demonstrasi dan nama host layanan service-test
, gunakan langkah-langkah berikut untuk memverifikasi konfigurasi:
- Login ke salah satu host VM yang telah menginstal proxy file bantuan.
- Jalankan perintah
curl -H 'Host: service-test' 10.0.0.1
. Permintaan ini menampilkan nama host backend grup instance terkelola yang menayangkan permintaan.
Pada langkah 2, perhatikan bahwa Anda dapat menggunakan alamat IP apa pun. Misalnya, perintah
curl -I -H 'Host: service-test' 1.2.3.4
akan berfungsi di Langkah 2.
Hal ini karena aturan penerusan memiliki parameter alamat yang ditetapkan ke 0.0.0.0
, yang menginstruksikan Cloud Service Mesh untuk mencocokkan berdasarkan host yang ditentukan dalam peta URL. Dalam contoh konfigurasi, nama host adalah service-test
.
Langkah selanjutnya
- Pelajari pengelolaan traffic lanjutan.
- Pelajari cara memecahkan masalah deployment Cloud Service Mesh.
- Pelajari cara menyiapkan kemampuan observasi dengan Envoy.