Menghubungkan ke layanan lokal melalui Jaringan Hybrid menggunakan Private Service Connect dan Proxy TCP NEG Hybrid

1. Pengantar

Load balancer proxy TCP regional internal dengan konektivitas hybrid memungkinkan Anda menyediakan layanan yang dihosting di lingkungan lokal atau lingkungan cloud lainnya untuk klien di jaringan VPC Anda.

Jika ingin menyediakan layanan hybrid di jaringan VPC lain, Anda dapat menggunakan Private Service Connect untuk memublikasikan layanan. Dengan menempatkan lampiran layanan di depan load balancer proxy TCP regional internal, Anda dapat memungkinkan klien di jaringan VPC lain menjangkau layanan hybrid yang berjalan di lingkungan lokal atau lingkungan cloud lainnya.

Yang akan Anda bangun

Dalam codelab ini, Anda akan mem-build load balancer Proxy TCP internal dengan Konektivitas Hybrid ke layanan lokal menggunakan Grup Endpoint Jaringan. Dari VPC Konsumen, Anda dapat berkomunikasi dengan layanan lokal.

a4fa0e406e7232fa.png

Yang akan Anda pelajari

  • Cara membuat ILB Proxy TCP dengan layanan backend NEG Hybrid
  • Cara membuat Produser Private Service Connect (Lampiran Layanan) dan Konsumen (Aturan Penerusan)
  • Cara menguji dan memvalidasi komunikasi layanan konsumen ke produsen

Yang Anda butuhkan

  • Jaringan Hybrid yang mapan, misalnya VPN HA, Interconnect, SW-WAN
  • Project Google Cloud

Membangun konektivitas hybrid

Google Cloud Anda dan lingkungan lokal atau lingkungan cloud lainnya harus terhubung melalui konektivitas hybrid, baik menggunakan lampiran VLAN Cloud Interconnect atau tunnel Cloud VPN dengan Cloud Router. Sebaiknya gunakan koneksi ketersediaan tinggi.

Cloud Router yang diaktifkan dengan Perutean dinamis global mempelajari endpoint tertentu melalui BGP dan memprogramnya ke jaringan VPC Google Cloud Anda. Pemilihan rute dinamis regional tidak didukung. Rute statis juga tidak didukung.

Jaringan VPC Google Cloud yang Anda gunakan untuk mengonfigurasi Cloud Interconnect atau Cloud VPN adalah jaringan yang sama dengan yang Anda gunakan untuk mengonfigurasi deployment load balancing hybrid. Pastikan rentang CIDR subnet jaringan VPC Anda tidak bertentangan dengan rentang CIDR jarak jauh. Ketika alamat IP tumpang tindih, rute subnet akan diprioritaskan daripada konektivitas jarak jauh.

Untuk mengetahui petunjuknya, lihat:

Iklan Rute Kustom

Subnet di bawah memerlukan iklan kustom dari Cloud Router ke jaringan lokal yang memastikan aturan firewall lokal diperbarui.

Subnet

Deskripsi

172.16.0.0/23

Subnet {i>Proxy<i} TCP yang digunakan untuk berkomunikasi langsung dengan layanan di lokasi

130.211.0.0/22, 35.191.0.0/16

Health Check Google Cloud

2. Sebelum memulai

Mengupdate project agar mendukung codelab

Codelab ini menggunakan $variables untuk membantu implementasi konfigurasi gcloud di Cloud Shell.

Di dalam Cloud Shell, lakukan hal berikut

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
psclab=YOUR-PROJECT-NAME
echo $psclab

3. Penyiapan Produsen

Membuat VPC Produsen

Di dalam Cloud Shell, lakukan hal berikut

gcloud compute networks create producer-vpc --project=$psclab --subnet-mode=custom

Membuat subnet Producer

Di dalam Cloud Shell, lakukan hal berikut

gcloud compute networks subnets create subnet-201 --project=$psclab --range=10.10.1.0/24 --network=producer-vpc --region=us-central1

Membuat subnet Proxy TCP

Alokasi proxy berada di tingkat VPC, bukan tingkat load balancer. Anda harus membuat satu subnet khusus proxy di setiap region jaringan virtual (VPC) tempat Anda menggunakan load balancer berbasis Envoy. Jika Anda men-deploy beberapa load balancer di region dan jaringan VPC yang sama, load balancer tersebut akan menggunakan subnet khusus proxy yang sama untuk load balancing.

  1. Klien membuat koneksi ke alamat IP dan port dari aturan penerusan load balancer.
  2. Setiap proxy memproses alamat IP dan port yang ditentukan oleh aturan penerusan load balancer yang sesuai. Salah satu {i>proxy<i} menerima dan menghentikan koneksi jaringan klien.
  3. Proxy tersebut membuat koneksi ke VM backend atau endpoint yang sesuai dalam NEG, seperti yang ditentukan oleh layanan backend dan peta URL load balancer.

Anda harus membuat subnet khusus proxy, terlepas dari apakah jaringan Anda adalah mode otomatis atau kustom. Subnet khusus proxy harus menyediakan 64 alamat IP atau lebih. Ini sesuai dengan panjang awalan /26 atau lebih pendek. Ukuran subnet yang direkomendasikan adalah /23 (512 alamat khusus proxy).

Di dalam Cloud Shell, lakukan hal berikut

gcloud compute networks subnets create proxy-subnet-us-central \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=us-central1 \
  --network=producer-vpc \
  --range=172.16.0.0/23

Membuat subnet NAT Private Service Connect

Buat satu atau beberapa subnet khusus untuk digunakan dengan Private Service Connect. Jika menggunakan konsol Google Cloud untuk memublikasikan layanan, Anda dapat membuat subnet selama prosedur tersebut. Buat subnet di region yang sama dengan load balancer layanan. Anda tidak dapat mengonversi subnet reguler menjadi subnet Private Service Connect.

Di dalam Cloud Shell, lakukan hal berikut

gcloud compute networks subnets create psc-nat-subnet --network=producer-vpc --region=us-central1 --range=100.100.10.0/24 --purpose=private-service-connect

Membuat Aturan Firewall Produsen

Konfigurasi aturan firewall untuk mengizinkan traffic antara endpoint Private Service Connect dan lampiran layanan. Dalam codelab ini, telah dibuat Aturan Firewall Ingress yang memungkinkan subnet NAT 100.100.10.0/24 mengakses Private Service Connect Service Lampiran (load balancer internal).

Di dalam Cloud Shell, lakukan hal berikut

gcloud compute --project=$psclab firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24

Di dalam Cloud Shell, buat aturan fw-allow-health-check untuk mengizinkan health check Google Cloud menjangkau layanan lokal (layanan backend) di port TCP 80

gcloud compute firewall-rules create fw-allow-health-check \
    --network=producer-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --rules=tcp:80

Membuat aturan firewall masuk yang memungkinkan layanan lokal berkomunikasi dengan subnet proxy di port 80

gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
    --network=producer-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=172.16.0.0/23 \
    --rules=tcp:80

Menyiapkan NEG konektivitas hybrid

Saat membuat NEG, gunakan ZONA yang meminimalkan jarak geografis antara Google Cloud dan lingkungan lokal Anda atau lingkungan cloud lainnya. Misalnya, jika Anda menghosting layanan di lingkungan lokal di Frankfurt, Jerman, Anda dapat menentukan zona europe-west3-a Google Cloud saat membuat NEG.

Selain itu, jika Anda menggunakan Cloud Interconnect, ZONE yang digunakan untuk membuat NEG harus berada di region yang sama tempat lampiran Cloud Interconnect dikonfigurasi.

Untuk region dan zona yang tersedia, lihat dokumentasi Compute Engine: Region dan zona yang tersedia.

Di dalam Cloud Shell, buat NEG konektivitas hybrid menggunakan perintah gcloud compute network-endpoint-groups create

gcloud compute network-endpoint-groups create on-prem-service-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --zone=us-central1-a \
    --network=producer-vpc

Di dalam Cloud Shell, tambahkan endpoint IP:Port lokal ke NEG hybrid.

gcloud compute network-endpoint-groups update on-prem-service-neg \
    --zone=us-central1-a \
    --add-endpoint="ip=192.168.1.5,port=80"

Mengonfigurasi load balancer

Pada langkah-langkah berikut, Anda akan mengonfigurasi load balancer (aturan penerusan) & dengan grup endpoint jaringan,

Di dalam Cloud Shell, buat health check regional yang diteruskan ke layanan lokal

gcloud compute health-checks create tcp on-prem-service-hc \
    --region=us-central1 \
    --use-serving-port

Di dalam Cloud Shell, buat layanan backend untuk backend lokal

gcloud compute backend-services create on-premise-service-backend \
   --load-balancing-scheme=INTERNAL_MANAGED \
   --protocol=TCP \
   --region=us-central1 \
   --health-checks=on-prem-service-hc \
   --health-checks-region=us-central1

Di dalam Cloud Shell, tambahkan backend NEG hybrid ke layanan backend. Untuk MAX_CONNECTIONS, masukkan koneksi serentak maksimum yang harus ditangani backend.

gcloud compute backend-services add-backend on-premise-service-backend \
   --network-endpoint-group=on-prem-service-neg \
   --network-endpoint-group-zone=us-central1-a \
   --region=us-central1 \
   --balancing-mode=CONNECTION \
   --max-connections=100

Di dalam Cloud Shell, buat Proxy Target

gcloud compute target-tcp-proxies create on-premise-svc-tcpproxy \
   --backend-service=on-premise-service-backend \
   --region=us-central1

Di dalam Cloud Shell, buat aturan penerusan (ILB)

Buat aturan penerusan menggunakan perintah gcloud compute forwarding-rules create.

Ganti FWD_Rules_PORT dengan satu nomor port dari 1-65535. Aturan penerusan hanya meneruskan paket dengan port tujuan yang cocok.

gcloud compute forwarding-rules create tcp-ilb-psc \
   --load-balancing-scheme=INTERNAL_MANAGED \
   --network=producer-vpc \
   --subnet=subnet-201 \
   --ports=80 \
   --region=us-central1 \
   --target-tcp-proxy=on-premise-svc-tcpproxy \
   --target-tcp-proxy-region=us-central1

Mendapatkan Alamat IP load balancer internal

gcloud compute forwarding-rules describe tcp-ilb-psc --region=us-central1 | grep -i IPAddress:

Example output:
gcloud compute forwarding-rules describe tcp-ilb-psc --region=us-central1 | grep -i IPAddress:
IPAddress: 10.10.1.2

4. Memvalidasi load balancer

Dari Cloud Console, buka Network Services → Load Balancing → Load Balancer. Perhatikan bahwa 1 NEG adalah 'Hijau' yang menunjukkan bahwa health check berhasil untuk layanan lokal

c16a93d1e185336b.png

Memilih ‘on-premise-service-backend&#39; akan menghasilkan Alamat IP Front End

26db2d30747fd40a.pngS

5. Lihat rute yang dipelajari dari infrastruktur lokal

Buka Jaringan VPC → Rute. Catatan, subnet layanan lokal yang dipelajari 192.168.1.0/27

bae85fdc418f9811.png

6. Memvalidasi konektivitas ke layanan lokal

Dari VPC Produser, kita akan membuat VM untuk menguji konektivitas ke layanan lokal. Setelah itu, Lampiran Layanan akan dikonfigurasi berikutnya.

Di dalam Cloud Shell, buat instance pengujian di vpc produser

gcloud compute instances create test-box-us-central1 \
    --zone=us-central1-a \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --subnet=subnet-201 \
    --no-address

Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
  • Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.

Di dalam Cloud Shell, buat instance pengujian di vpc produser

gcloud compute firewall-rules create ssh-iap \
    --network producer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Login ke test-box-us-central1 menggunakan IAP di Cloud Shell untuk memvalidasi konektivitas ke layanan lokal dengan melakukan curl terhadap Alamat IP load balancing. Coba lagi jika waktu tunggu habis.

gcloud compute ssh test-box-us-central1 --project=$psclab --zone=us-central1-a --tunnel-through-iap

Lakukan curl yang memvalidasi konektivitas ke layanan lokal. Setelah proses validasi, keluar dari VM, kembali ke perintah Cloud Shell. Ganti IP Load Balancer Internal berdasarkan output Anda yang diidentifikasi di langkah 3 dan 4.

deepakmichael@test-box-us-central1:~$ curl -v 10.10.1.2
* Expire in 0 ms for 6 (transfer 0x55b9a6b2f0f0)
*   Trying 10.10.1.2...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55b9a6b2f0f0)
* Connected to 10.10.1.2 (10.10.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.10.1.2
> User-Agent: curl/7.64.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Accept-Ranges: bytes
< ETag: "3380914763"
< Last-Modified: Mon, 05 Dec 2022 15:10:56 GMT
< Expires: Mon, 05 Dec 2022 15:42:38 GMT
< Cache-Control: max-age=0
< Content-Length: 37
< Date: Mon, 05 Dec 2022 15:42:38 GMT
< Server: lighttpd/1.4.53
< 
Welcome to my on-premise service!!

7. Membuat Lampiran Layanan Private Service Connect

Pada langkah-langkah berikut, kita akan membuat Lampiran Layanan. Setelah disambungkan dengan Customer Endpoint, akses ke layanan lokal dapat dicapai tanpa perlu peering VPC.

Membuat Lampiran Layanan

Di dalam Cloud Shell, buat Lampiran Layanan

gcloud compute service-attachments create service-1 --region=us-central1 --producer-forwarding-rule=tcp-ilb-psc --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet

Opsional: Jika menggunakan VPC bersama, buat Lampiran Layanan di Project Layanan

gcloud compute service-attachments create service-1 --region=us-central1 --producer-forwarding-rule=tcp-ilb-psc --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/<region>/subnetworks/<natsubnet>

Validasi lampiran layanan TCP

gcloud compute service-attachments describe service-1 --region us-central1

8. Opsional: Buka Network Services → Private Service Connect untuk melihat Lampiran Layanan yang baru dibuat

bddc23a10d38d981.png

Memilih Service-1 akan memberikan detail yang lebih lengkap, termasuk URI Lampiran Layanan yang digunakan oleh konsumen untuk membuat Koneksi Layanan Pribadi. Catat URI karena akan digunakan pada langkah berikutnya.

5c0a74874536909d.png

Detail Lampiran Layanan: projects/<projectname>/ regions/us-central1/serviceLampirans/service-1

9. Penyiapan Konsumen

Membuat VPC Konsumen

Di dalam Cloud Shell, lakukan hal berikut

gcloud compute networks create consumer-vpc --project=$psclab --subnet-mode=custom

Membuat subnet Konsumen

Di dalam Cloud Shell, buat subnet GCE

gcloud compute networks subnets create subnet-101 --project=$psclab --range=10.100.1.0/24 --network=consumer-vpc --region=us-central1

Di dalam Cloud Shell, buat Subnet Endpoint Konsumen

gcloud compute networks subnets create subnet-102 --project=$psclab --range=10.100.2.0/24 --network=consumer-vpc --region=us-central1

Membuat Endpoint Konsumen (aturan penerusan)

Di dalam Cloud Shell, buat Alamat IP statis yang akan digunakan sebagai Consumer Endpoint

gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=subnet-102 --addresses 10.100.2.10

Mari gunakan URI Lampiran Layanan yang dibuat sebelumnya untuk membuat Endpoint Konsumen

Di dalam Cloud Shell, buat Consumer Endpoint

gcloud compute forwarding-rules create psc-consumer-1 --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$psclab/regions/us-central1/serviceAttachments/service-1

10. Validasi Consumer Private Service Connect - VPC Konsumen

Dari VPC Konsumen, verifikasi Koneksi Layanan Pribadi yang berhasil dengan membuka Layanan Jaringan → Private Service Connect → Endpoint Terhubung. Perhatikan koneksi psc-consumer-1 yang sudah dibuat dan Alamat IP terkait yang telah kami buat sebelumnya.

629d4cea87293a42.pngS

Saat memilih psc-consumer-1, detail tambahan akan diberikan, termasuk URI Lampiran Layanan

18b132b458f698b4.pngS

11. Validasi Consumer Private Service Connect - VPC Produsen

Dari VPC Produsen, verifikasi Koneksi Layanan Pribadi yang berhasil dengan membuka Layanan Jaringan → Private Service ConnectLayanan yang Dipublikasikan. Perhatikan bahwa koneksi service-1 yang dipublikasikan kini menunjukkan 1 aturan penerusan (endpoint koneksi).

3387b170742d7d8d.pngS

12. Buat Zona DNS Pribadi & Catatan A

Buat Zona DNS Pribadi yang dipetakan ke Endpoint Koneksi PSC, sehingga memungkinkan akses yang lancar ke Producer dari host mana pun dalam VPC.

Dari Cloud Shell

gcloud dns --project=$psclab managed-zones create codelab-zone --description="" --dns-name="codelab.net." --visibility="private" --networks="consumer-vpc"

gcloud dns --project=$psclab record-sets create service1.codelab.net. --zone="codelab-zone" --type="A" --ttl="300" --rrdatas="10.100.2.10"

13. Memvalidasi akses Konsumen ke layanan Producer menggunakan VM

Dari VPC Konsumen, kita akan membuat VM untuk menguji konektivitas ke layanan lokal dengan mengakses layanan endpoint konsumen1.codelabs.net

Di dalam Cloud Shell, buat instance pengujian di VPC konsumen

gcloud compute instances create consumer-vm \
    --zone=us-central1-a \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --subnet=subnet-101 \
    --no-address

Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
  • Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.

Di dalam Cloud Shell, buat instance pengujian di VPC konsumen

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Login ke vm konsumen menggunakan IAP di Cloud Shell untuk memvalidasi konektivitas ke layanan lokal dengan melakukan curl terhadap dns FQDN service1.codelab.net. Coba lagi jika waktu tunggu habis.

gcloud compute ssh consumer-vm --project=$psclab --zone=us-central1-a --tunnel-through-iap

Lakukan curl yang memvalidasi konektivitas ke layanan lokal. Setelah divalidasi, keluar dari VM, kembali ke perintah Cloud Shell

Di dalam Cloud Shell, lakukan curl

$ curl -v service1.codelab.net
*   Trying 10.100.2.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x5650fc3390f0)
* Connected to service1.codelab.net (10.100.2.10) port 80 (#0)
> GET / HTTP/1.1
> Host: service1.codelab.net
> User-Agent: curl/7.64.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Accept-Ranges: bytes
< ETag: "3380914763"
< Last-Modified: Mon, 05 Dec 2022 15:10:56 GMT
< Expires: Mon, 05 Dec 2022 15:15:41 GMT
< Cache-Control: max-age=0
< Content-Length: 37
< Date: Mon, 05 Dec 2022 15:15:41 GMT
< Server: lighttpd/1.4.53
< 
Welcome to my on-premise service!!

Diberikan di bawah ini adalah contoh tangkapan dari layanan lokal, perhatikan bahwa Alamat IP Sumber 172.16.0.2 berasal dari rentang Subnet Proxy TCP 172.16.0.0/23

6dafe24917c937cb.pngS

14. Pembersihan Produsen

Menghapus komponen Producer

Di dalam Cloud Shell, hapus komponen produser

gcloud compute instances delete test-box-us-central1 --zone=us-central1-a --quiet

gcloud compute service-attachments delete service-1 --region=us-central1 --quiet 

gcloud compute forwarding-rules delete tcp-ilb-psc --region=us-central1 --quiet

gcloud compute target-tcp-proxies delete on-premise-svc-tcpproxy --region=us-central1 --quiet

gcloud compute backend-services delete on-premise-service-backend --region=us-central1 --quiet

gcloud compute network-endpoint-groups delete on-prem-service-neg --zone=us-central1-a --quiet

gcloud compute networks subnets delete psc-nat-subnet subnet-201 proxy-subnet-us-central --region=us-central1 --quiet

gcloud compute firewall-rules delete ssh-iap fw-allow-proxy-only-subnet allow-to-ingress-nat-subnet fw-allow-health-check --quiet

gcloud compute health-checks delete on-prem-service-hc --region=us-central1 --quiet

gcloud compute networks delete producer-vpc --quiet

15. Pembersihan Konsumen

Menghapus komponen Konsumen

Di dalam Cloud Shell, hapus komponen konsumen

gcloud compute instances delete consumer-vm --zone=us-central1-a --quiet

gcloud compute forwarding-rules delete psc-consumer-1 --region=us-central1 --quiet

gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet

gcloud compute networks subnets delete subnet-101 subnet-102 --region=us-central1 --quiet

gcloud compute firewall-rules delete ssh-iap-consumer --quiet

gcloud dns record-sets delete service1.codelab.net --type=A --zone=codelab-zone --quiet

gcloud dns managed-zones delete codelab-zone --quiet 

gcloud compute networks delete consumer-vpc --quiet 

16. Selamat

Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi Private Service Connect dengan Proxy TCP.

Anda telah membuat infrastruktur produsen dan menambahkan lampiran layanan di VPC produsen yang mengarah ke layanan lokal. Anda telah mempelajari cara membuat endpoint konsumen di VPC Konsumen yang memungkinkan konektivitas ke layanan lokal.

Apa selanjutnya?

Lihat beberapa codelab ini...

Bacaan lebih lanjut & Video

Dokumen referensi