Menyiapkan layanan edge jaringan dengan grup endpoint jaringan konektivitas hybrid

Google menawarkan berbagai layanan edge jaringan yang dapat kemampuan dan keamanan layanan berbasis di luar Google Cloud (layanan lokal dan multi-cloud)—misalnya, di lingkungan lokal pusat data atau di {i> cloud publik<i} 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, Anda men-deploy Load Balancer Aplikasi eksternal untuk menerima traffic dari publik di Internet. Load Balancer Aplikasi eksternal meneruskan traffic ke proxy tengah yang Cloud Service Mesh melakukan konfigurasi. Proxy tengah ini mengarahkan traffic ke infrastruktur lokal Anda atau lingkungan non-Google Cloud menggunakan Cloud VPN atau Cloud Interconnect.

Tutorial ini memandu Anda melalui sebuah contoh {i>end-to-end<i} yang menggunakan Google Cloud Armor di edge Google untuk memungkinkan klien mengakses dan layanan lokal secara pribadi. Klien mendapatkan akses yang diizinkan berdasarkan IP mereka alamat IPv6

Anda akan menyelesaikan tugas-tugas berikut:

  1. Men-deploy Envoy sebagai proxy tengah dalam grup instance terkelola (MIG). Utusan Ini proxy secara otomatis terhubung ke Cloud Service Mesh.
  2. Membuat instance virtual machine (VM) lokal yang disimulasikan. Di di dunia nyata, Anda mungkin sudah memiliki VM lokal.
  3. Mengonfigurasi Cloud Service Mesh untuk merutekan semua permintaan yang mencapai titik tengah ke VM lokal yang disimulasikan.
  4. Buat Load Balancer Aplikasi eksternal untuk menerima traffic dari internet publik dan meneruskannya ke {i>proxy<i} tengah.
  5. Pasang kebijakan keamanan Google Cloud Armor ke Load Balancer Aplikasi eksternal.

Setelah menyelesaikan tugas ini, Anda dapat mempelajari edge tambahan dan fitur pengelolaan lalu lintas lanjutan.

Prasyarat

Sebelum menyiapkan proxy tengah, selesaikan tugas berikut:

  • Tinjau Persiapan untuk menyiapkan Cloud Service Mesh dengan Envoy dan menyelesaikan semua tugas prasyarat, termasuk memberikan izin serta mengaktifkan Cloud Service Mesh API.

  • Pastikan endpoint lokal pribadi Anda dapat dijangkau dari dalam ke jaringan Virtual Private Cloud (VPC) Google Cloud 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 dunia nyata skenario deployment, maka Anda perlu mengonfigurasi konektivitas hibrida.

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

  • Untuk demonstrasi ini, dapatkan izin yang diperlukan untuk membuat dan memperbarui kebijakan keamanan Google Cloud Armor. Izin mungkin berbeda 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 Anda.

Membuat template instance untuk proxy tengah

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

  1. Gunakan template berikut untuk membuat instance VM dengan proxy Envoy terhubung ke Cloud Service Mesh:

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

Membuat MIG untuk proxy tengah

  1. Buat MIG berdasarkan template. Dalam contoh ini, Anda dapat mempertahankan grup instance 1 untuk men-deploy satu instance. Untuk penggunaan produksi, mengaktifkan penskalaan otomatis—untuk berdasarkan pemakaian CPU, untuk menghindari timbulnya bottleneck jika {i>middle proxy<i} perlu menangani banyak lalu lintas data.

    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 mendatang, identifikasi dan simpan Alamat IP 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 membuat load balancer eksternal untuk menangani lalu lintas internet publik dari klien Anda.

Karena load balancer eksternal dapat secara otomatis merutekan traffic ke region yang paling dekat dengan klien dan MIG dalam wilayah tersebut, Anda mungkin sebaiknya buat beberapa MIG. Untuk daftar lengkap layanan region dan zona yang tersedia, lihat Region dan zona.

Men-deploy layanan lokal tersimulasi

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

Membuat simulasi VM lokal

  1. Deploy satu instance VM 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'
    
  2. Identifikasi dan simpan alamat IP internalnya untuk konfigurasi masa mendatang dan verifikasi. 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 simulasi VM lokal Anda sebagai endpoint untuk NEG ini. Mengikuti di di langkah sebelumnya, alamat IP akan disimpan dalam 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:

    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 layanan tengah Anda proxy untuk meneruskan traffic ke layanan lokal pribadi Anda. Anda mengonfigurasi komponen berikut:

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

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

  • Peta aturan pemilihan rute. Langkah ini termasuk membuat aturan penerusan, yaitu target proxy, dan peta URL. Untuk 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 health check terpusat Google Cloud sistem:

gcloud compute health-checks create http td-on-prem-health-check

Membuat layanan backend

  1. Membuat layanan backend dengan load balancing INTERNAL_SELF_MANAGED skema kustom yang akan digunakan dengan Cloud Service Mesh. Saat Anda membuat backend ini menentukan 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 pemilihan rute

Peta aturan pemilihan rute menentukan cara Cloud Service Mesh merutekan traffic ke layanan backend.

  1. 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
    
  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, lihat Proxy target untuk Cloud Service Mesh):

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

Memastikan proxy tengah dapat mengarahkan permintaan ke layanan lokal yang disimulasikan

Cloud Service Mesh kini dikonfigurasi untuk mengarahkan traffic melalui bagian tengah {i>proxy<i} ke layanan lokal pribadi Anda yang disimulasikan. Anda dapat memverifikasinya. konfigurasi dengan membuat VM klien pengujian, login ke VM tersebut, dan mengirim permintaan ke proxy tengah yang sedang 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 dalam 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, yang menggantikan 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!
    
  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 {i>proxy<i} tengah. Deployment ini adalah penyiapan Load Balancer Aplikasi eksternal standar.

Mencadangkan alamat IP eksternal

Membuat alamat IP eksternal statis global (external-lb-vip) tempat alamat IP eksternal klien akan mengirimkan lalu lintas data. Anda akan mengambil alamat IP eksternal ini selama langkah verifikasi berikutnya dalam tutorial ini.

gcloud compute addresses create external-lb-vip \
    --ip-version=IPV4 \
    --global

Menyiapkan load balancer HTTP eksternal

Mengonfigurasi load balancer eksternal untuk merutekan pelanggan internet traffic ke proxy tengah yang sudah dikonfigurasi.

  1. Membuat 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. Membuat 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
    
  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 agar permintaan ke load balancer eksternal alamat IP virtual aturan penerusan (VIP) 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
    

Menyetel port bernama MIG

Menyetel 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 disiapkan dengan benar.

  1. Anda dapat mengirim permintaan ke VIP load balancer dan mendapatkan dari simulasi VM lokal:

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

    curl $PUBLIC_VIP
    

    Anda akan melihat output berikut:

    Hello world from on-premises!
    

Aktifkan Google Cloud Armor

Mengonfigurasi kebijakan keamanan Google Cloud Armor agar hanya mengizinkan akses ke layanan dari CLIENT_IP_RANGE, yang harus menyertakan ekstensi eksternal Alamat IP 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 {i>proxy<i} tengah). Untuk informasi selengkapnya tentang izin akses yang diperlukan untuk mengatur aturan ini, lihat Konfigurasikan 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 spesifik:

    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. Tambahkan 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 IP virtual publik Load Balancer Aplikasi eksternal alamat IPv6 Jika alamat IP perangkat klien Anda berada dalam batas yang diizinkan CLIENT_IP_RANGE yang ditentukan sebelumnya, Anda akan menerima respons yang diharapkan.

    curl $PUBLIC_VIP
    

    Anda akan melihat output berikut:

    Hello world from on-premises!
    
  2. Mengajukan permintaan curl yang sama dari perangkat klien lain yang alamat IP-nya terletak di luar CLIENT_IP_RANGE, atau perbarui aturan kebijakan keamanan untuk tidak lagi menyertakan alamat IP klien Anda. Anda seharusnya sekarang menerima error 404 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 VM Google Cloud tempat Envoys berjalan, ikuti langkah-langkah berikut untuk memecahkan masalah penyiapan:

  1. Pastikan Google Cloud Envoy MIG dilaporkan sebagai sehat. Di Konsol Google Cloud, buka Layanan jaringan &gt; Load balancing dan klik url-map lb-map-http untuk melihat detailnya. Anda harus dapat lihat bahwa 1/1 instance di td-middle-proxy-us-central1-a responsif.

  2. Jika tidak responsif, periksa apakah aturan {i>firewall<i} telah dikonfigurasi untuk mengizinkan traffic pemeriksaan kondisi masuk ke VM Google Cloud yang sedang berjalan Utusan:

    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