Menyiapkan layanan edge jaringan dengan grup endpoint jaringan konektivitas hybrid
Google menawarkan berbagai layanan edge jaringan yang dapat meningkatkan kemampuan dan keamanan layanan yang berbasis di luar Google Cloud(layanan lokal dan multi-cloud)—misalnya, di pusat data lokal atau di cloud publik lainnya.
Layanan edge jaringan ini memungkinkan Anda melakukan hal berikut:
Terima dan arahkan traffic pelanggan eksternal secara global dengan satu VIP Anycast.
Kurangi beban server dengan menghentikan traffic TLS di edge menggunakan Load Balancer Aplikasi eksternal dan sertifikat SSL yang dikelola Google.
Aktifkan aturan firewall aplikasi web (WAF) yang telah dikonfigurasi sebelumnya dan terapkan daftar yang diizinkan dan daftar yang ditolak ke traffic masuk dengan Google Cloud Armor.
Kontrol akses pengguna ke aplikasi dan resource Anda dengan Identity-Aware Proxy (IAP).
Mengoptimalkan penayangan konten dan latensi pengguna akhir dengan Cloud CDN.
Untuk mendapatkan manfaat ini di layanan pribadi, lokal, atau multicloud Anda, Anda men-deploy Load Balancer Aplikasi eksternal untuk menerima traffic dari internet publik. Load Balancer Aplikasi eksternal meneruskan traffic ke proxy tengah yang dikonfigurasi oleh Cloud Service Mesh. Proxy tengah ini merutekan traffic ke lingkungan lokal atau lingkungan non-Google Cloud menggunakan Cloud VPN atau Cloud Interconnect.
Tutorial ini memandu Anda melalui contoh end-to-end yang menggunakan Cloud Armor di edge Google untuk mengizinkan klien mengakses layanan lokal secara pribadi. Klien diizinkan mengakses berdasarkan alamat IP-nya.
Anda akan menyelesaikan tugas-tugas berikut:
- Deploy Envoy sebagai proxy tengah dalam grup instance terkelola (MIG). Proxy Envoy ini terhubung secara otomatis ke Cloud Service Mesh.
- Buat instance virtual machine (VM) lokal pribadi yang disimulasikan. Dalam contoh dunia nyata, Anda mungkin sudah memiliki VM lokal.
- Konfigurasi Cloud Service Mesh untuk merutekan semua permintaan yang mencapai proxy tengah ke VM lokal yang disimulasikan.
- Buat Load Balancer Aplikasi eksternal untuk menerima traffic dari internet publik dan meneruskannya ke proxy tengah.
- Lampirkan kebijakan keamanan Cloud Armor ke Load Balancer Aplikasi eksternal.
Setelah menyelesaikan tugas ini, Anda dapat secara opsional menjelajahi layanan edge tambahan dan fitur pengelolaan traffic lanjutan.
Prasyarat
Sebelum menyiapkan proxy tengah, selesaikan tugas berikut:
Tinjau Bersiap untuk menyiapkan Cloud Service Mesh dengan Envoy dan selesaikan semua tugas prasyarat, yang mencakup pemberian izin dan peran yang diperlukan serta mengaktifkan Cloud Service Mesh API.
Pastikan endpoint lokal pribadi Anda dapat dijangkau dari dalam jaringan Google Cloud Virtual Private Cloud (VPC) Anda melalui Cloud VPN atau Cloud Interconnect. Contoh yang digunakan dalam tutorial ini hanya merutekan traffic ke endpoint dalam Google Cloud, jadi Anda tidak perlu mengonfigurasi konektivitas hybrid untuk mengikuti tutorial ini. Dalam skenario deployment dunia nyata, konfigurasi konektivitas hybrid akan diperlukan.
Pastikan rentang CIDR subnet VPC Anda tidak berkonflik dengan rentang CIDR jarak jauh Anda. Jika alamat IP tumpang-tindih, rute subnet akan diprioritaskan daripada konektivitas jarak jauh.
Untuk demonstrasi ini, dapatkan izin yang diperlukan untuk membuat dan memperbarui kebijakan keamanan Cloud Armor. Izin dapat bervariasi jika Anda ingin menggunakan layanan lain, seperti Cloud CDN.
Men-deploy proxy tengah di VM Compute Engine
Bagian ini menjelaskan cara men-deploy Envoy sebagai proxy tengah di Compute Engine untuk menerima traffic dari load balancer eksternal dan meneruskannya ke tujuan jarak jauh Anda.
Membuat template instance untuk proxy tengah
Template instance menentukan konfigurasi untuk VM dalam grup instance terkelola (MIG).
Gunakan template berikut untuk membuat instance VM dengan proxy Envoy yang terhubung ke Cloud Service Mesh:
gcloud compute instance-templates create td-middle-proxy \ --service-proxy=enabled \ --tags=allow-hc
Untuk menyesuaikan deployment Envoy, seperti dengan menentukan nama jaringan, menetapkan jalur log, atau mengaktifkan pelacakan, lihat Panduan opsi deployment Envoy otomatis.
Buat MIG untuk proxy tengah
Buat MIG berdasarkan template. Dalam contoh ini, Anda dapat mempertahankan ukuran grup instance 1 untuk men-deploy satu instance. Untuk penggunaan produksi, aktifkan penskalaan otomatis—misalnya, berdasarkan pemakaian CPU, untuk menghindari pembuatan hambatan jika proxy tengah Anda perlu menangani banyak traffic.
gcloud compute instance-groups managed create td-middle-proxy-us-central1-a \ --zone=us-central1-a \ --template=td-middle-proxy \ --size=1
Untuk konfigurasi dan verifikasi mendatang, identifikasi dan simpan alamat IP internal instance di
MIDDLE_PROXY_IP
:MIDDLE_PROXY_IP=$(gcloud compute instances list \ --filter="name~'td-middle-proxy-us-central1-a-.*'" \ --zones=us-central1-a \ --format="value(networkInterfaces.networkIP)")
Dalam contoh ini, kita membuat MIG yang berisi instance VM yang menjalankan Envoy di
us-central1-a
. Selanjutnya dalam tutorial ini, Anda akan membuat load balancer eksternal untuk
menangani traffic internet publik dari klien Anda.
Karena load balancer eksternal dapat secara otomatis merutekan traffic ke region yang paling dekat dengan klien Anda dan ke MIG dalam region tersebut, sebaiknya Anda mempertimbangkan untuk membuat beberapa MIG. Untuk mengetahui daftar lengkap region dan zona yang tersedia di Google Cloud, lihat Region dan zona.
Men-deploy layanan lokal tersimulasi
Bagian ini menjelaskan cara men-deploy grup endpoint jaringan (NEG) konektivitas hybrid. Dalam deployment produksi, NEG ini akan berisi endpoint
(IP:port
) yang di-resolve ke server lokal Anda. Dalam contoh ini, Anda
membuat VM Compute Engine yang dapat dijangkau di IP:port
. VM ini berfungsi sebagai server lokal simulasi Anda.
Membuat VM lokal tersimulasi
Deploy instance VM tunggal untuk menyimulasikan server lokal pribadi:
gcloud compute instances create on-prem-vm \ --zone=us-central1-a \ --metadata startup-script='#! /bin/bash ## Installs apache and a custom homepage sudo su - apt-get update apt-get install -y apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello world from on-premises!</h1></body></html> EOF'
Identifikasi dan simpan alamat IP internalnya untuk konfigurasi dan verifikasi pada masa mendatang. Server di VM ini memproses permintaan masuk di port
80
:ON_PREM_IP=$(gcloud compute instances describe on-prem-vm \ --zone=us-central1-a \ --format="value(networkInterfaces.networkIP)" | sed "s/['\[\]]*//g")
Buat NEG
Buat NEG untuk penyiapan demonstrasi ini dengan menentukan jenis endpoint jaringan non-gcp-private-ip-port
. Tambahkan alamat IP dan port
untuk VM lokal yang disimulasikan sebagai endpoint ke NEG ini. Setelah langkah sebelumnya, alamat IP disimpan dalam variabel lingkungan ON_PREM_IP
.
Buat NEG:
gcloud compute network-endpoint-groups create td-on-prem-neg \ --network-endpoint-type=non-gcp-private-ip-port \ --zone=us-central1-a
Tambahkan
IP:port
ke NEG baru Anda:gcloud compute network-endpoint-groups update td-on-prem-neg \ --zone=us-central1-a \ --add-endpoint="ip=$ON_PREM_IP,port=80"
Mengonfigurasi Cloud Service Mesh dengan komponen Cloud Load Balancing
Bagian ini menunjukkan cara mengonfigurasi Cloud Service Mesh dan mengaktifkan proxy tengah Anda untuk meneruskan traffic ke layanan lokal pribadi Anda. Anda mengonfigurasi komponen berikut:
Health check. Health check ini berperilaku sedikit berbeda dari health check yang dikonfigurasi untuk jenis NEG lainnya.
Layanan backend. Untuk mengetahui informasi selengkapnya, lihat Ringkasan layanan backend.
Peta aturan perutean. Langkah ini mencakup pembuatan aturan penerusan, proxy target, dan peta URL. Untuk mengetahui informasi selengkapnya, lihat Peta aturan perutean.
Membuat health check
Health check memverifikasi bahwa endpoint Anda responsif dan dapat menerima permintaan. Health check untuk jenis NEG ini mengandalkan mekanisme health check terdistribusi Envoy.
Jenis NEG lainnya menggunakan sistem health check terpusat Google Cloud:
gcloud compute health-checks create http td-on-prem-health-check
Buat layanan backend
Buat layanan backend dengan skema load balancing
INTERNAL_SELF_MANAGED
yang akan digunakan dengan Cloud Service Mesh. Saat membuat layanan backend ini, tentukan health check yang Anda buat sebelumnya:gcloud compute backend-services create td-on-prem-backend-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --health-checks=td-on-prem-health-check
Tambahkan NEG yang Anda buat sebelumnya sebagai backend layanan backend ini:
gcloud compute backend-services add-backend td-on-prem-backend-service \ --global \ --network-endpoint-group=td-on-prem-neg \ --network-endpoint-group-zone=us-central1-a \ --balancing-mode=RATE \ --max-rate-per-endpoint=5
Buat peta aturan perutean
Peta aturan perutean menentukan cara Cloud Service Mesh merutekan traffic ke layanan backend Anda.
Buat peta URL yang menggunakan layanan backend yang ditentukan sebelumnya:
gcloud compute url-maps create td-hybrid-url-map \ --default-service=td-on-prem-backend-service
Buat file bernama
target_proxy.yaml
dengan konten berikut:name: td-hybrid-proxy proxyBind: true urlMap: global/urlMaps/td-hybrid-url-map
Gunakan perintah
import
untuk membuat proxy HTTP target (untuk mengetahui informasi selengkapnya, lihat Proxy target untuk Cloud Service Mesh):gcloud compute target-http-proxies import td-hybrid-proxy \ --source=target_proxy.yaml
Buat aturan penerusan yang mereferensikan proxy HTTP target ini. Tetapkan alamat IP aturan penerusan ke
0.0.0.0
. Menetapkan alamat IP aturan ke0.0.0.0
merutekan traffic berdasarkan port masuk, nama host HTTP, dan informasi jalur yang dikonfigurasi di peta URL. Alamat IP yang ditentukan dalam permintaan HTTP diabaikan.gcloud compute forwarding-rules create td-hybrid-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=0.0.0.0 \ --target-http-proxy=td-hybrid-proxy \ --ports=8080 \ --network=default
Verifikasi bahwa proxy tengah dapat merutekan permintaan ke layanan lokal yang disimulasikan
Cloud Service Mesh kini dikonfigurasi untuk merutekan traffic melalui proxy tengah ke layanan lokal pribadi yang disimulasikan. Anda dapat memverifikasi konfigurasi ini dengan membuat VM klien pengujian, login ke VM tersebut, dan mengirim permintaan ke proxy tengah yang menjalankan Envoy. Setelah memverifikasi konfigurasi, hapus VM klien pengujian.
Dapatkan alamat IP proxy tengah. Anda hanya memerlukan informasi ini untuk langkah verifikasi:
gcloud compute instances list
Tulis atau catat alamat IP instance di MIG
td-middle-proxy-us-central1-a
.Buat instance klien pengujian:
gcloud compute instances create test-client \ --zone=us-central1-a
Gunakan
ssh
untuk login ke klien pengujian:gcloud compute ssh test-client --zone=us-central1-a
Kirim permintaan ke VM proxy tengah, dengan mengganti alamat IP yang Anda dapatkan sebelumnya untuk
MIDDLE_PROXY_IP
:curl $MIDDLE_PROXY_IP:8080
Anda akan melihat output berikut:
Hello world from on-premises!
Keluar dari VM klien pengujian. Setelah keluar, Anda dapat menghapus VM:
gcloud compute instances delete test-client \ --zone=us-central1-a
Deploy Load Balancer Aplikasi eksternal
Di bagian ini, Anda akan men-deploy Load Balancer Aplikasi eksternal yang mengirim traffic masuk ke proxy tengah. Deployment ini adalah penyiapan Load Balancer Aplikasi eksternal standar.
Mencadangkan alamat IP eksternal
Buat alamat IP eksternal statis global (external-lb-vip
) yang akan menerima traffic dari klien eksternal. Anda akan mengambil alamat IP eksternal ini selama
langkah verifikasi nanti dalam tutorial ini.
gcloud compute addresses create external-lb-vip \ --ip-version=IPV4 \ --global
Menyiapkan load balancer HTTP eksternal
Konfigurasi load balancer eksternal untuk merutekan traffic pelanggan internet ke proxy tengah yang sudah dikonfigurasi.
Buat health check yang digunakan untuk menentukan apakah MIG yang menjalankan proxy tengah responsif dan dapat menerima traffic:
gcloud compute health-checks create tcp tcp-basic-check \ --port=8080
Buat aturan firewall untuk mengizinkan health check. Anda menggunakan kembali tag
allow-hc
di sini untuk menerapkan aturan firewall ke VM proxy tengah:gcloud compute firewall-rules create fw-allow-health-checks \ --network=default \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-hc \ --rules=tcp
Buat layanan backend:
gcloud compute backend-services create td-middle-proxy-backend-service \ --protocol=HTTP \ --health-checks=tcp-basic-check \ --global
Tambahkan MIG proxy tengah sebagai backend ke layanan backend ini:
gcloud compute backend-services add-backend td-middle-proxy-backend-service \ --instance-group=td-middle-proxy-us-central1-a \ --instance-group-zone=us-central1-a \ --global
Buat peta URL untuk mengarahkan permintaan masuk ke proxy tengah sebagai layanan backend default:
gcloud compute url-maps create lb-map-http \ --default-service=td-middle-proxy-backend-service
Buat proxy HTTP target sehingga permintaan ke alamat IP virtual (VIP) aturan penerusan load balancer eksternal ditangani sesuai dengan peta URL:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map-http
Buat aturan penerusan global untuk mengarahkan permintaan masuk ke proxy HTTP target:
gcloud compute forwarding-rules create http-forwarding-rule \ --address=external-lb-vip\ --global \ --load-balancing-scheme=EXTERNAL \ --target-http-proxy=http-lb-proxy \ --ports=80
Menetapkan named port MIG
Tetapkan port bernama untuk grup instance agar proxy tengah Anda dapat menerima traffic HTTP dari load balancer eksternal:
gcloud compute instance-groups managed set-named-ports td-middle-proxy-us-central1-a \ --named-ports=http:8080 \ --zone=us-central1-a
Memverifikasi konfigurasi Load Balancer Aplikasi eksternal
Pada langkah ini, Anda memverifikasi bahwa load balancer eksternal telah disiapkan dengan benar.
Anda akan dapat mengirim permintaan ke VIP load balancer dan mendapatkan respons dari VM lokal yang disimulasikan:
PUBLIC_VIP=gcloud compute addresses describe external-lb-vip \ --format="get(address)" \ --global
Kirim permintaan
curl
ke alamat IP eksternal (PUBLIC_VIP
) dan verifikasi bahwa Anda menerima pesanHello world
:curl $PUBLIC_VIP
Anda akan melihat output berikut:
Hello world from on-premises!
Mengaktifkan Cloud Armor
Konfigurasi kebijakan keamanan Cloud Armor agar hanya mengizinkan akses ke layanan Anda dari CLIENT_IP_RANGE
, yang harus mencakup alamat IP eksternal perangkat klien yang ingin Anda uji—misalnya, "192.0.2.0/24"
.
Kebijakan ini diterapkan pada layanan backend
load balancer eksternal (dalam contoh ini, td-hybrid-backend-service
mengarah ke
proxy tengah). Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menetapkan aturan ini, lihat
Mengonfigurasi kebijakan keamanan Cloud Armor.
Buat kebijakan keamanan Cloud Armor:
gcloud compute security-policies create external-clients-policy \ --description="policy for external clients"
Perbarui aturan default kebijakan keamanan untuk menolak semua traffic:
gcloud compute security-policies rules update 2147483647 \ --security-policy=external-clients-policy \ --action="deny-404"
Tambahkan aturan prioritas yang lebih tinggi untuk mengizinkan traffic dari rentang IP tertentu:
gcloud compute security-policies rules create 1000 \ --security-policy=external-clients-policy \ --description="allow traffic from CLIENT_IP_RANGE" \ --src-ip-ranges="CLIENT_IP_RANGE" \ --action="allow"
Lampirkan kebijakan keamanan Cloud Armor ke layanan backend Anda:
gcloud compute backend-services update td-middle-proxy-backend-service \ --security-policy=external-clients-policy
Verifikasi akhir
Kirim permintaan
curl
ke alamat IP virtual publik Load Balancer Aplikasi eksternal. Jika alamat IP perangkat klien Anda berada dalam rentang yang diizinkanCLIENT_IP_RANGE
yang ditentukan sebelumnya, Anda akan menerima respons yang diharapkan.curl $PUBLIC_VIP
Anda akan melihat output berikut:
Hello world from on-premises!
Mengirimkan permintaan
curl
yang sama dari perangkat klien lain yang alamat IP-nya berada di luarCLIENT_IP_RANGE
, atau memperbarui aturan kebijakan keamanan Anda agar tidak lagi menyertakan alamat IP klien Anda. Sekarang Anda akan menerima error404 Not Found
.
Pemecahan masalah
Petunjuk berikut menjelaskan cara memperbaiki masalah pada konfigurasi Anda.
Layanan lokal saya tidak dapat diakses melalui alamat IP Load Balancer Aplikasi eksternal global
Dengan asumsi bahwa layanan lokal Anda sudah dapat diakses di VMGoogle Cloud tempat Envoy berjalan, ikuti langkah-langkah berikut untuk memecahkan masalah penyiapan Anda:
Pastikan Google Cloud Envoy MIG dilaporkan sebagai sehat. Di Google Cloud konsol, buka Network services > Load balancing lalu klik
url-map lb-map-http
untuk melihat detailnya. Anda akan dapat melihat bahwa 1/1 instance ditd-middle-proxy-us-central1-a
responsif.Jika tidak responsif, periksa apakah aturan firewall telah dikonfigurasi untuk mengizinkan traffic health check masuk ke VM Google Cloud yang menjalankan Envoy:
gcloud compute firewall-rules describe fw-allow-health-check
Anda akan melihat output berikut:
allowed: ‑ IPProtocol: tcp ... direction: INGRESS disabled: false ... ... sourceRanges: ‑ 130.211.0.0/22 ‑ 35.191.0.0/16 targetTags: ‑ allow-hc
Langkah berikutnya
Untuk menemukan kebijakan perutean yang lebih kompleks untuk layanan lokal atau multicloud Anda, lihat fitur pengelolaan traffic lanjutan Cloud Service Mesh.
Untuk men-deploy Cloud Service Mesh, lihat Ringkasan panduan penyiapan.
Untuk mengaktifkan layanan edge jaringan tambahan, lihat panduan berikut: