Menyiapkan layanan edge jaringan untuk deployment 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:

Contoh layanan edge jaringan.
Contoh layanan edge jaringan (klik untuk memperbesar)

Untuk menghadirkan manfaat ini ke layanan pribadi, lokal, atau multi-cloud, Anda men-deploy Load Balancer Aplikasi eksternal untuk menerima traffic dari internet publik. Load Balancer Aplikasi eksternal meneruskan traffic ke proxy tengah yang dikonfigurasi Traffic Director. Proxy tengah ini mengarahkan traffic ke lingkungan lokal atau lingkungan non-Google Cloud Anda menggunakan Cloud VPN atau Cloud Interconnect.

Tutorial ini akan memandu Anda memahami contoh end-to-end yang menggunakan Google Cloud Armor di edge Google untuk mengizinkan klien mengakses layanan lokal secara pribadi. Klien diberi akses berdasarkan alamat IP mereka.

Anda akan menyelesaikan tugas berikut:

  1. Deploy Envoy sebagai proxy tengah dalam grup instance terkelola (MIG). Proxy Envoy ini otomatis terhubung ke Traffic Director.
  2. Membuat instance virtual machine (VM) lokal yang disimulasikan. Dalam contoh di dunia nyata, Anda mungkin sudah memiliki VM lokal.
  3. Mengonfigurasi Traffic Director untuk merutekan semua permintaan yang mencapai proxy tengah ke VM lokal yang disimulasikan.
  4. Membuat Load Balancer Aplikasi eksternal untuk menerima traffic dari internet publik dan meneruskannya ke proxy tengah.
  5. Memasang kebijakan keamanan Google Cloud Armor ke Load Balancer Aplikasi eksternal.

Setelah menyelesaikan tugas ini, Anda dapat secara opsional mempelajari layanan edge tambahan dan fitur pengelolaan traffic lanjutan.

Prasyarat

Sebelum menyiapkan proxy tengah, selesaikan tugas berikut:

  • Tinjau Bersiap untuk menyiapkan Traffic Director dengan Envoy dan selesaikan semua tugas prasyarat, yang mencakup memberikan izin dan peran yang diperlukan, serta mengaktifkan Traffic Director API.

  • Pastikan endpoint pribadi lokal Anda dapat dijangkau dari dalam jaringan Virtual Private Cloud (VPC) Google Cloud melalui Cloud VPN atau Cloud Interconnect. Contoh yang digunakan dalam tutorial ini hanya merutekan traffic ke endpoint dalam Google Cloud, sehingga Anda tidak perlu mengonfigurasi konektivitas hybrid untuk mengikutinya. Dalam skenario deployment sebenarnya, konfigurasi konektivitas hybrid diperlukan.

  • Pastikan rentang CIDR subnet VPC Anda tidak bertentangan dengan rentang CIDR jarak jauh Anda. Ketika alamat IP tumpang-tindih, rute subnet akan diprioritaskan daripada konektivitas jarak jauh.

  • Untuk demonstrasi ini, dapatkan izin yang diperlukan guna membuat dan memperbarui kebijakan keamanan Google Cloud Armor. Izinnya mungkin bervariasi jika Anda ingin menggunakan layanan lain, seperti Cloud CDN.

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.

Membuat template instance untuk proxy tengah

Template instance menentukan konfigurasi untuk VM dalam grup instance terkelola (MIG).

  1. Gunakan template berikut untuk membuat instance VM dengan proxy Envoy yang terhubung ke Traffic Director:

    gcloud compute instance-templates create td-middle-proxy \
        --service-proxy=enabled \
        --tags=allow-hc
    
  2. Untuk menyesuaikan deployment Envoy, seperti dengan menentukan nama jaringan, menetapkan jalur log, dan/atau mengaktifkan pelacakan, lihat panduan opsi deployment Envoy Otomatis.

Buat MIG untuk proxy tengah

  1. 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 timbulnya bottleneck 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
    
  2. Untuk konfigurasi dan verifikasi pada masa 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. Nanti dalam tutorial ini, Anda akan membuat load balancer eksternal untuk menangani traffic internet publik dari klien Anda.

Karena load balancer eksternal dapat otomatis mengarahkan traffic ke region yang paling dekat dengan klien Anda dan ke MIG dalam region tersebut, sebaiknya pertimbangkan untuk membuat beberapa MIG. Untuk mengetahui daftar lengkap region dan zona Google Cloud yang tersedia, lihat Region dan zona.

Men-deploy layanan lokal yang disimulasikan

Bagian ini menjelaskan deployment grup endpoint jaringan konektivitas hybrid (NEG). Dalam deployment produksi, NEG ini akan berisi endpoint (IP:port) yang di-resolve ke server lokal. Dalam contoh ini, Anda membuat VM Compute Engine yang dapat dijangkau di IP:port. VM ini bertindak sebagai server lokal yang disimulasikan.

Membuat VM lokal yang disimulasikan

  1. Deploy satu instance VM untuk menyimulasikan server lokal dan 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'
    
  2. Identifikasi dan simpan alamat IP internalnya untuk konfigurasi dan verifikasi mendatang. Server di VM ini memproses permintaan masuk pada 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. Mengikuti langkah sebelumnya, alamat IP disimpan di variabel lingkungan ON_PREM_IP.

  1. Buat NEG:

    gcloud compute network-endpoint-groups create td-on-prem-neg \
        --network-endpoint-type=non-gcp-private-ip-port \
        --zone=us-central1-a
    
  2. 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 Traffic Director dengan komponen Cloud Load Balancing

Bagian ini menunjukkan cara mengonfigurasi Traffic Director dan mengaktifkan proxy tengah Anda untuk meneruskan traffic ke layanan lokal dan pribadi. Anda mengonfigurasi komponen berikut:

  • Health check. Health check ini berperilaku sedikit berbeda dengan health check yang dikonfigurasi untuk jenis NEG lainnya.

  • Layanan backend. Untuk mengetahui informasi selengkapnya, lihat Ringkasan layanan backend.

  • Peta aturan perutean. Langkah ini termasuk membuat aturan penerusan, proxy target, dan peta URL. Untuk mengetahui informasi selengkapnya, lihat Peta aturan pemilihan rute.

Membuat health check

Health check memverifikasi bahwa endpoint Anda responsif dan dapat menerima permintaan. Health check untuk jenis NEG ini bergantung pada 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

Membuat layanan backend

  1. Buat layanan backend dengan skema load balancing INTERNAL_SELF_MANAGED untuk digunakan dengan Traffic Director. 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
    
  2. 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
    

Membuat peta aturan perutean

Peta aturan perutean menentukan cara Traffic Director mengarahkan traffic ke layanan backend Anda.

  1. Buat peta URL yang menggunakan layanan backend yang telah ditentukan sebelumnya:

    gcloud compute url-maps create td-hybrid-url-map \
        --default-service=td-on-prem-backend-service
    
  2. Buat file bernama target_proxy.yaml dengan konten berikut:

    name: td-hybrid-proxy
    proxyBind: true
    urlMap: global/urlMaps/td-hybrid-url-map
    
  3. Gunakan perintah import untuk membuat proxy HTTP target (untuk mengetahui informasi selengkapnya, lihat Proxy target untuk Traffic Director):

    gcloud compute target-http-proxies import td-hybrid-proxy \
        --source=target_proxy.yaml
    
  4. Buat aturan penerusan yang mereferensikan proxy HTTP target ini. Tetapkan alamat IP aturan penerusan ke 0.0.0.0. Menetapkan alamat IP aturan ke 0.0.0.0 akan mengarahkan traffic berdasarkan port masuk, nama host HTTP, dan informasi jalur yang dikonfigurasi di peta URL. Alamat IP yang ditetapkan dalam permintaan HTTP akan 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
    

Memverifikasi bahwa proxy tengah dapat merutekan permintaan ke layanan lokal yang disimulasikan

Traffic Director kini dikonfigurasi untuk merutekan traffic melalui proxy tengah ke layanan lokal 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.

  1. Dapatkan alamat IP proxy tengah. Anda hanya memerlukan informasi ini untuk langkah verifikasi:

    gcloud compute instances list
    
  2. Tulis atau catat alamat IP instance di MIG td-middle-proxy-us-central1-a.

  3. Buat instance klien pengujian:

    gcloud compute instances create test-client \
        --zone=us-central1-a
    
  4. Gunakan ssh untuk login ke klien pengujian:

    gcloud compute ssh test-client
        --zone=us-central1-a
    
  5. Kirim permintaan ke VM proxy tengah, dengan mengganti alamat IP yang Anda peroleh sebelumnya untuk MIDDLE_PROXY_IP:

    curl $MIDDLE_PROXY_IP:8080
    

    Anda akan melihat output berikut:

    Hello world from on-premises!
    
  6. Keluar dari VM klien pengujian. Setelah keluar, Anda dapat menghapus VM:

    gcloud compute instances delete test-client \
        --zone=us-central1-a
    

Men-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 dikirimi traffic oleh klien eksternal. Anda 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.

  1. 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
    
  2. Buat aturan firewall untuk mengizinkan health check. Gunakan 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
    
  3. Buat layanan backend:

    gcloud compute backend-services create td-middle-proxy-backend-service \
        --protocol=HTTP \
        --health-checks=tcp-basic-check \
        --global
    
  4. 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
    
  5. 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
    
  6. 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
    
  7. 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
    

Setel port bernama 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 akan memverifikasi bahwa load balancer eksternal sudah disiapkan dengan benar.

  1. Anda seharusnya dapat mengirim permintaan ke VIP load balancer dan mendapatkan respons dari VM yang disimulasikan di infrastruktur lokal:

    PUBLIC_VIP=gcloud compute addresses describe external-lb-vip \
        --format="get(address)" \
        --global
    
  2. Berikan permintaan curl ke alamat IP publik dan pastikan Anda menerima pesan Hello world:

    curl $PUBLIC_VIP
    

    Anda akan melihat output berikut:

    Hello world from on-premises!
    

Aktifkan Google Cloud Armor

Konfigurasi kebijakan keamanan Google Cloud Armor agar hanya mengizinkan akses ke layanan Anda dari CLIENT_IP_RANGE, yang harus menyertakan alamat IP publik 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 yang mengarah ke proxy tengah). Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menetapkan aturan ini, lihat Mengonfigurasi kebijakan keamanan Google Cloud Armor.

  1. Buat kebijakan keamanan Google Cloud Armor:

    gcloud compute security-policies create external-clients-policy \
        --description="policy for external clients"
    
  2. Perbarui aturan default kebijakan keamanan untuk menolak semua traffic:

    gcloud compute security-policies rules update 2147483647 \
        --security-policy=external-clients-policy \
        --action="deny-404"
    
  3. 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"
    
  4. Lampirkan kebijakan keamanan Google Cloud Armor ke layanan backend Anda:

    gcloud compute backend-services update td-middle-proxy-backend-service \
        --security-policy=external-clients-policy
    

Verifikasi akhir

  1. Kirimkan permintaan curl ke alamat IP virtual publik Load Balancer Aplikasi eksternal. Jika alamat IP perangkat klien Anda berada dalam CLIENT_IP_RANGE yang diizinkan yang telah ditentukan sebelumnya, Anda akan menerima respons yang diharapkan.

    curl $PUBLIC_VIP
    

    Anda akan melihat output berikut:

    Hello world from on-premises!
    
  2. Berikan permintaan curl yang sama dari perangkat klien lain yang alamat IP-nya berada di luar CLIENT_IP_RANGE, atau perbarui aturan kebijakan keamanan Anda agar tidak lagi menyertakan alamat IP klien Anda. Sekarang Anda akan menerima error 404 Not Found.

Pemecahan masalah

Layanan lokal saya tidak dapat diakses melalui alamat IP Load Balancer Aplikasi eksternal global

Dengan asumsi bahwa layanan lokal Anda sudah dapat diakses di VM Google Cloud yang menjalankan Envoys, ikuti langkah-langkah berikut untuk memecahkan masalah penyiapan Anda:

  1. Pastikan Google Cloud Envoy MIG dilaporkan responsif. Di Konsol Google Cloud, buka Network services > Load balancing, lalu klik url-map lb-map-http untuk melihat detailnya. Anda akan dapat melihat bahwa 1/1 instance di td-middle-proxy-us-central1-a responsif.

  2. 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 selanjutnya