Menyiapkan VM Compute Engine menggunakan deployment Envoy otomatis

Dokumen ini berlaku untuk API lama. Jika Anda men-deploy dengan API perutean layanan baru, yang sedang dalam pratinjau, lihat Penyiapan Cloud Service Mesh untuk proxy Envoy dengan layanan HTTP.

Sebelum mengikuti petunjuk dalam panduan ini, selesaikan prasyarat tugas yang dijelaskan dalam Bersiaplah untuk menyiapkan API pemilihan rute layanan dengan Envoy dan workload tanpa proxy.

Panduan ini menunjukkan cara men-deploy bidang data secara otomatis yang terdiri dari Proxy Envoy file bantuan, konfigurasikan menggunakan Cloud Service Mesh, dan verifikasi untuk memastikannya berfungsi dengan benar. Proses ini melibatkan berikut ini:

  1. Mengaktifkan Cloud OS Config API.
  2. Membuat layanan pengujian.
  3. Men-deploy bidang data sederhana di Compute Engine menggunakan proxy Envoy (Envoy) versi 1.18.4, yang hanya mendukung xDS v3).
  4. Menyiapkan Cloud Service Mesh menggunakan Compute Engine API, yang mengaktifkan Cloud Service Mesh untuk mengonfigurasi proxy file bantuan Envoy Anda.
  5. Login ke VM yang menjalankan proxy Envoy dan mengirim permintaan ke backend yang di-load balanced melalui proxy Envoy.

Contoh konfigurasi dalam dokumen ini adalah untuk tujuan demonstrasi. Sebagai lingkungan produksi, Anda mungkin perlu memasang komponen tambahan, berdasarkan lingkungan dan persyaratan Anda.

Mengaktifkan Cloud OS Config API

Pastikan Anda mengaktifkan Cloud OS Config API. Anda tidak dapat menginstal komponen yang diperlukan di VM, kecuali jika Anda melakukannya.

Untuk melakukannya:

Konsol

  1. Di Konsol Google Cloud, buka API & layanan IT perusahaan mereka.
    Buka halaman Library API
  2. Pilih project yang benar.
  3. Di kotak penelusuran, masukkan Cloud OS Config API, lalu tekan Enter.
  4. Pilih Cloud OS Config API.
  5. 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 menyampaikan permintaan dari klien. Layanan pengujian tidak rumit; ini adalah server web yang di-deploy di Compute Engine grup instance terkelola.

Membuat template instance untuk layanan pengujian Hello World

Template instance yang Anda buat akan mengonfigurasi server web apache2 contoh menggunakan parameter startup-script.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Templates.

    Buka Instance Templates

  2. Klik Create instance template.
  3. Di kolom, masukkan informasi berikut:
    • Nama: td-demo-hello-world-template
    • Boot disk: Pilih sistem operasi dan versinya.
    • Akun layanan: Akun layanan default Compute Engine
    • Cakupan akses: Izinkan akses penuh ke semua Cloud API
  4. Klik Management, Security, Disks, Networking, Sole Tenancy. 1 Di tab Networking, di kolom Network tags, tambahkan tag td-http-server.
  5. Di tab Management, salin skrip berikut ke kolom Startup skrip.

    #!/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
    
  6. Klik Create.

gcloud

Anda dapat memilih di antara berbagai versi sistem operasi. Contoh ini menggunakan dengan 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 akan menentukan bahwa grup instance terkelola selalu memiliki dua dari layanan pengujian. Ini untuk tujuan demonstrasi. Cloud Service Mesh mendukung grup instance terkelola dengan penskalaan otomatis.

Konsol

  1. Di Konsol Google Cloud, buka halaman Instance Groups.

    Buka halaman Instance Groups

  2. Klik Create instance group.
  3. Pilih New managed instance group (stateless). Untuk selengkapnya informasi tambahan, lihat MIG stateless atau stateful.
  4. Masukkan td-demo-hello-world-mig untuk nama instance terkelola grup, lalu pilih zona us-central1-a.
  5. Pada Instance template, pilih td-demo-hello-world-template, yang template instance yang Anda buat.
  6. Di bagian Autoscaling mode, pilih Off:do not autoscale.
  7. Di bagian Maximum number of instances, tentukan setidaknya dua sebagai jumlah instance yang ingin Anda buat di grup.
  8. Klik Create.

gcloud

Menggunakan gcloud CLI untuk membuat grup instance terkelola dengan template instance yang sebelumnya Anda buat.

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 mengelola grup instance 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 akan diinstal di VM saat Anda membuat instance template dengan --service-proxy=enabled.

  • Proxy Envoy, yang dikonfigurasi oleh Cloud Service Mesh, yang didownload dari bucket Cloud Storage khusus. Bucket berisi build proxy Envoy yang disediakan Google.
  • Agen proxy layanan, yang melakukan inisialisasi komponen. Agen proxy layanan menyiapkan intersepsi dan pemantauan traffic kondisi proxy Envoy saat VM berjalan. Agen {i>proxy<i} layanan adalah 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 autohealing dan peningkatan skala, grup instance terkelola menginstal versi terbaru Envoy di VM. Dalam beberapa kasus, versi ini mungkin lebih baru daripada Envoy di-deploy ke instance VM yang dibuat sebelumnya. Hal ini dapat mengakibatkan inkonsistensi pada versi yang diinstal di seluruh VM dalam instance terkelola ras. Versi yang tidak konsisten tersebut berfungsi bersama dengan benar. Jika ada update keamanan ke Envoy, sebaiknya upgrade instance terkelola grup menggunakan penggantian berkelanjutan.

Membuat template instance

Template instance menentukan konfigurasi instance VM yang yang dibuat dalam grup instance terkelola. Flag yang Anda teruskan ke instance instal Envoy dan konfigurasikan instance VM Anda agar siap digunakan dan Cloud Service Mesh.

Anda dapat menggunakan Debian 10/11, CentOS 7/8, atau RHEL 7/8 untuk {i>booting disk image <i}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

  1. Di Konsol Google Cloud, buka halaman Instance Groups.

    Buka Instance Groups

  2. Klik Create an instance group.
  3. Masukkan td-vm-mig-us-central1 untuk nama grup instance terkelola, dan pilih zona us-central1-a.
  4. Di bagian Group type, pilih Managed instance group.
  5. Di bagian Instance template, pilih td-vm-template-auto, instance tersebut {i>template<i} yang Anda buat.
  6. Tentukan 2 sebagai jumlah instance yang ingin Anda buat di grup.
  7. Klik Buat untuk membuat grup baru.

gcloud

Menggunakan gcloud CLI untuk membuat grup instance terkelola dengan template instance yang sebelumnya Anda buat.

 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 Google Cloud load balancing

Petunjuk di bagian ini menunjukkan cara mengonfigurasi Cloud Service Mesh agar Envoy melakukan proxy pada load balancing traffic keluar di dua backend instance Compute Engine. Anda mengonfigurasi komponen berikut:

Membuat health check

Gunakan petunjuk berikut untuk membuat health check. Untuk informasi selengkapnya, lihat Membuat health check.

Konsol

  1. Buka halaman Health check di Konsol Google Cloud.
    Buka halaman Health check
  2. Klik Create Health Check.
  3. Untuk nama, masukkan td-vm-health-check.
  4. Untuk protokol, pilih HTTP.
  5. Klik Create.

gcloud

  1. Buat health check.

    gcloud compute health-checks create http td-vm-health-check
    

Membuat aturan firewall

Gunakan petunjuk berikut untuk membuat aturan firewall yang yang diperlukan untuk pemeriksaan health check. Untuk informasi selengkapnya, lihat Aturan firewall untuk health check.

Konsol

  1. Buka halaman Firewall policies di Konsol Google Cloud.
    Buka halaman Kebijakan firewall
  2. Klik Create firewall rule.
  3. Pada halaman Create a firewall rule, 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.
    • Tindakan saat kecocokan: Pilih izinkan.
    • Targets: Pilih Specified target tags, lalu masukkan td-http-server di kotak teks Target tags.
    • 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 periksa tcp ketik di port 80

gcloud

  1. Membuat 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

Membuat layanan backend. Jika Anda menggunakan Google Cloud CLI, Anda harus menetapkannya sebagai layanan backend dengan skema load balancing INTERNAL_SELF_MANAGED. Menambahkan respons dan grup instance terkelola atau tidak terkelola ke layanan backend. Catatan bahwa contoh ini menggunakan grup instance terkelola dengan Compute Engine Template VM yang menjalankan contoh layanan HTTP yang dibuat di Membuat grup instance terkelola.

Konsol

  1. Buka halaman Cloud Service Mesh di Konsol Google Cloud.

    Buka halaman Cloud Service Mesh

  2. Di tab Services, klik Create Service.

  3. Klik Lanjutkan.

  4. Untuk nama layanan, masukkan td-vm-service.

  5. Pilih jaringan VPC yang benar.

  6. Pastikan Backend type adalah Instance groups.

  7. Pilih td-demo-hello-world-mig, yang merupakan grup instance terkelola yang Anda buat yang berisi backend untuk layanan pengujian Hello World.

  8. Masukkan Nomor port yang benar.

  9. Pilih Utilization atau Rate sebagai Balancing mode. Tujuan nilai defaultnya adalah Rate.

  10. Klik Done.

  11. Pilih health check yang Anda buat, atau klik Create another health check dan pastikan untuk memilih HTTP sebagai protokol.

  12. Di Waktu tunggu pengosongan koneksi, tetapkan nilai ke 30 detik atau lebih lama.

  13. Klik Lanjutkan.

  14. Klik Create.

gcloud

  1. Membuat 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
    
  2. 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 pemilihan rute menentukan cara Cloud Service Mesh merutekan traffic di {i>mesh.<i} Sebagai bagian dari peta aturan perutean, Anda mengonfigurasi IP virtual (VIP) dan serangkaian aturan pengelolaan traffic terkait, seperti berbasis host {i>routing<i}. Saat aplikasi mengirim permintaan ke VIP, proxy Envoy:

  1. Mencegat permintaan.
  2. Mengevaluasinya sesuai dengan aturan pengelolaan traffic di peta URL.
  3. Memilih layanan backend berdasarkan nama host dalam permintaan.
  4. Memilih backend atau endpoint yang dikaitkan dengan layanan backend yang dipilih.
  5. Mengirim traffic ke backend atau endpoint tersebut.

Untuk 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, secara otomatis membuat {i>proxy<i} HTTP target dan melampirkannya ke peta URL.

  1. Buka halaman Cloud Service Mesh di Konsol Google Cloud.

    Buka halaman Cloud Service Mesh

  2. Pada tab Routing rule maps, klik Create Routing Rule Map.

  3. Masukkan nama.

  4. Klik Tambahkan Aturan Penerusan.

  5. Untuk nama aturan penerusan, masukkan td-vm-forwarding-rule.

  6. Pilih jaringan Anda.

  7. Pilih Internal IP Anda. Traffic yang dikirim ke alamat IP ini dicegat oleh {i>proxy<i} Envoy dan dikirim ke layanan yang sesuai berdasarkan pada aturan host dan jalur.

    Aturan penerusan dibuat sebagai aturan penerusan global dengan load-balancing-scheme ditetapkan ke INTERNAL_SELF_MANAGED.

  8. Pada kolom Custom IP, ketik 10.0.0.1. Saat VM Anda mengirim ke alamat ini alamat IP, {i>proxy<i} Envoy mencegatnya dan mengirimkannya ke endpoint layanan backend sesuai dengan aturan pengelolaan traffic yang ditentukan di peta URL.

    Setiap aturan penerusan di jaringan VPC harus memiliki alamat IP yang unik dan port per jaringan VPC. Jika Anda membuat lebih dari satu aturan penerusan alamat IP dan porta yang sama di Jaringan VPC tertentu, hanya aturan penerusan pertama valid. Atribut lainnya akan diabaikan. Jika 10.0.0.1 bukan yang tersedia di jaringan Anda, pilih alamat IP yang berbeda.

  9. Pastikan Port ditetapkan ke 80.

  10. Klik Simpan.

  11. Di bagian Aturan pemilihan rute, pilih Aturan host dan jalur sederhana.

  12. Di bagian Aturan host dan jalur, pilih td-vm-service sebagai Layanan.

  13. Klik Tambahkan aturan host dan jalur.

  14. Di Hosts, masukkan hello-world.

  15. Di Service, pilih td-vm-service.

  16. Klik Simpan.

gcloud

  1. 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
    
  2. Buat pencocok jalur dan aturan host untuk merutekan traffic untuk berdasarkan nama {i>host<i} dan jalur. Contoh ini menggunakan td-vm-service sebagai nama layanan dan pencocok jalur default yang cocok dengan semua 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
    
  3. Membuat proxy HTTP target.

    gcloud compute target-http-proxies create td-vm-proxy \
       --url-map=td-vm-url-map
    
  4. Membuat aturan penerusan.

    Aturan penerusan harus bersifat global dan harus dibuat dengan nilai load-balancing-scheme ditetapkan ke INTERNAL_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 pada traffic untuk layanan yang ditentukan dalam peta URL di seluruh backend dalam layanan di grup instance.

Memverifikasi konfigurasi

Di bagian terakhir panduan penyiapan Cloud Service Mesh untuk Compute VM Compute Engine, Anda menguji traffic tersebut yang dikirim dari VM klien yang ditujukan ke VIP aturan penerusan dicegat dan dialihkan ke {i>proxy<i} Envoy, yang kemudian merutekan permintaan Anda ke VM yang menghosting layanan Hello World.

Untuk melakukannya, masuk ke VM klien, yang telah dikonfigurasi untuk mencegat lalu lintas data dan mengalihkannya ke Envoy. Anda mengirimkan permintaan curl kepada VIP yang terkait dengan peta aturan pemilihan rute. Envoy memeriksa permintaan curl, menentukan layanan mana yang harus diselesaikan, dan mengirim permintaan ke backend yang terkait dengan layanan tersebut.

  1. Di Konsol Google Cloud, buka halaman Instance Groups.

    Buka halaman Instance Groups

  2. Pilih grup instance td-vm-mig-us-central1.
  3. Di bagian VM summary, pada Connect, klik SSH.
  4. Setelah login ke VM klien, gunakan alat curl untuk mengirim permintaan ke layanan Hello World melalui Envoy:
curl -H "Host: hello-world" http://10.0.0.1/

Jika Anda melakukan 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 {i>round robin<i}, yang merupakan beban default algoritma balancing, saat mengirim traffic ke backend layanan Hello World.

Langkah selanjutnya