Konektivitas jaringan di VPC Google Cloud
Halaman ini menjelaskan cara menyiapkan konektivitas pribadi dari Integration Connectors ke layanan backend Anda, seperti MySQL, Postgres, dan SQL Server yang dihosting di VPC Google Cloud.
Halaman ini mengasumsikan bahwa Anda sudah memahami konsep berikut:
Konektivitas pribadi ke VPC Google Cloud dapat termasuk dalam salah satu kategori berikut:
- Layanan backend dan lampiran layanan PSC berada di project atau VPC Google Cloud yang sama.
- Backend service dan lampiran layanan PSC berada di project atau VPC Google Cloud yang berbeda.
Pertimbangan
Saat Anda membuat lampiran layanan PSC, pertimbangkan poin-poin penting berikut:
- Lampiran layanan PSC dan load balancer dibuat di subnet yang berbeda dalam VPC yang sama. Secara khusus, lampiran layanan selalu dibuat di subnet NAT.
- Traffic dari load balancer dan pemeriksaan health check harus dikirim ke port yang sama.
- Konfigurasi aturan firewall untuk memfasilitasi aliran traffic.
Aturan traffic masuk
Traffic dari subnet lampiran layanan PSC harus menjangkau layanan backend Anda.
Aturan keluar
Traffic keluar diaktifkan secara default di project Google Cloud, kecuali jika aturan penolakan tertentu dikonfigurasi.
- Semua komponen Google Cloud Anda seperti lampiran layanan PSC dan load balancer harus berada di region yang sama.
Konektivitas pribadi ke layanan backend di VPC Google Cloud
Bagian ini menjelaskan cara membuat konektivitas pribadi saat layanan backend dan lampiran layanan PSC berada dalam project Google Cloud yang sama.
Gambar berikut menunjukkan penyiapan konektivitas jaringan pribadi dari Integration Connectors ke layanan yang dihosting di VPC Google Cloud:
Untuk menyiapkan konektivitas pribadi ke layanan backend di VPC Google Cloud, selesaikan langkah-langkah berikut:
- Buat lampiran layanan PSC.
- Buat lampiran endpoint untuk menggunakan lampiran layanan PSC.
- Konfigurasi koneksi untuk menggunakan lampiran endpoint.
Membuat lampiran layanan PSC
Untuk membuat konektivitas pribadi dari Integration Connectors, layanan Anda harus diekspos ke Integration Connectors menggunakan lampiran layanan PSC. Lampiran layanan selalu menggunakan load balancer. Oleh karena itu, jika layanan Anda tidak berada di balik load balancer, load balancer perlu dikonfigurasi.
- Buat pemeriksaan health check dan izinkan traffic dari pemeriksaan.
- Buat probe health check.
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION
Dalam perintah ini, tetapkan BACKEND_SERVER_PORT ke 3306 yang merupakan port default tempat server MySQL berjalan.
- Buat aturan firewall untuk mengizinkan traffic dari probe.
gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
- Buat probe health check.
- Buat load balancer internal L4 dan izinkan traffic dari load balancer.
- Buat layanan backend.
gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION
- Tambahkan grup instance ke layanan backend.
gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
- Membuat aturan penerusan.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
-
Buat aturan firewall untuk mengizinkan traffic internal dari load balancer ke grup instance.
gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Buat layanan backend.
- Buat lampiran layanan
- Buat subnet untuk PSC NAT. Perintah berikut membuat subnet dengan nama
psc-nat-subnet1
dan tujuannya adalahPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Buat aturan firewall untuk mengizinkan traffic dari PSC NAT ke load balancer.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Buat lampiran layanan dengan persetujuan eksplisit.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
Dalam perintah ini, LIMIT adalah batas koneksi untuk project. Batas koneksi adalah jumlah endpoint PSC konsumen yang dapat terhubung ke layanan ini. Untuk mendapatkan SERVICE_DIRECTORY_PROJECT_ID, lakukan langkah berikut:
-
Anda dapat membuat lampiran layanan PSC sehingga hanya menerima permintaan dari project Google Cloud yang ditentukan. Namun, untuk melakukannya, Anda memerlukan project ID direktori layanan yang terkait dengan project Google Cloud Anda. Untuk mendapatkan project ID direktori layanan, Anda dapat menggunakan List Connections API seperti yang ditunjukkan dalam contoh berikut.
Sintaks
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Ganti kode berikut:
- CONNECTORS_PROJECT_ID: ID project Google Cloud tempat Anda membuat koneksi.
Contoh
Contoh ini mendapatkan project ID direktori layanan untuk project Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
Menjalankan perintah ini di terminal akan menampilkan output yang mirip dengan berikut ini:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Pada contoh output, untuk project Google Cloud
connectors-test
, project ID direktori layanan adalahabcdefghijk-tp
.
-
- Buat subnet untuk PSC NAT. Perintah berikut membuat subnet dengan nama
Setelah membuat lampiran layanan PSC, buat lampiran endpoint untuk menggunakan lampiran layanan PSC. Untuk mengetahui informasi selengkapnya, lihat Membuat lampiran endpoint.
Konektivitas pribadi untuk project Google Cloud yang berbeda
Bagian ini menjelaskan cara membuat konektivitas pribadi saat layanan backend dan lampiran layanan PSC berada di project atau VPC Google Cloud yang berbeda.
Gambar berikut menunjukkan penyiapan konektivitas jaringan pribadi yang mana lampiran layanan PSC dan layanan backend berada di project Google Cloud yang berbeda:
Untuk menyiapkan konektivitas pribadi untuk project Google Cloud yang berbeda, selesaikan langkah-langkah berikut:
- Konfigurasi konektivitas pribadi.
- Buat lampiran endpoint untuk menggunakan lampiran layanan PSC.
- Konfigurasi koneksi untuk menggunakan lampiran endpoint.
Mengonfigurasi konektivitas pribadi
Untuk mengonfigurasi konektivitas pribadi, lakukan langkah-langkah berikut:
- Buat load balancer. Jika Anda sudah memiliki load balancer, lewati langkah ini.
- Buat NEG zona. Untuk mengetahui informasi selengkapnya, lihat Membuat NEG zona.
- Tambahkan NEG zona sebagai backend, dan buat aturan berikut:
- Membuat aturan penerusan.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \ --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \ --backend-service-region=REGION
-
Buat aturan firewall untuk mengizinkan traffic internal dari load balancer ke grup instance.
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \ --direction=INGRESS --priority=1000 --network=VPC_NETWORK \ --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Membuat aturan penerusan.
- Buat lampiran layanan
- Buat subnet untuk PSC NAT. Perintah berikut membuat subnet dengan nama
psc-nat-subnet1
dan tujuannya adalahPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Buat aturan firewall untuk mengizinkan traffic dari PSC NAT ke load balancer.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Buat lampiran layanan dengan persetujuan eksplisit.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
Dalam perintah ini, LIMIT adalah batas koneksi untuk project. Batas koneksi adalah jumlah endpoint PSC konsumen yang dapat terhubung ke layanan ini. Untuk mendapatkan SERVICE_DIRECTORY_PROJECT_ID, lakukan langkah berikut:
-
Anda dapat membuat lampiran layanan PSC sehingga hanya menerima permintaan dari project Google Cloud yang ditentukan. Namun, untuk melakukannya, Anda memerlukan project ID direktori layanan yang terkait dengan project Google Cloud Anda. Untuk mendapatkan project ID direktori layanan, Anda dapat menggunakan List Connections API seperti yang ditunjukkan dalam contoh berikut.
Sintaks
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Ganti kode berikut:
- CONNECTORS_PROJECT_ID: ID project Google Cloud tempat Anda membuat koneksi.
Contoh
Contoh ini mendapatkan project ID direktori layanan untuk project Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
Menjalankan perintah ini di terminal akan menampilkan output yang mirip dengan berikut ini:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Pada contoh output, untuk project Google Cloud
connectors-test
, project ID direktori layanan adalahabcdefghijk-tp
.
-
- Buat subnet untuk PSC NAT. Perintah berikut membuat subnet dengan nama
Membuat daftar yang diizinkan untuk project Integration Connectors di lampiran layanan
Anda dapat membuat lampiran layanan PSC sehingga hanya menerima permintaan dari project Google Cloud yang ditentukan. Namun, untuk melakukannya, Anda memerlukan project ID direktori layanan yang terkait dengan project Google Cloud Anda. Untuk mendapatkan project ID direktori layanan, Anda dapat menggunakan List Connections API seperti yang ditunjukkan dalam contoh berikut.
Sintaks
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Ganti kode berikut:
- CONNECTORS_PROJECT_ID: ID project Google Cloud tempat Anda membuat koneksi.
Contoh
Contoh ini mendapatkan project ID direktori layanan untuk project Google Cloud connectors-test
.
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
Menjalankan perintah ini di terminal akan menampilkan output yang mirip dengan berikut ini:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Pada contoh output, untuk project Google Cloud connectors-test
, project ID
direktori layanan adalah abcdefghijk-tp
.
Setelah Anda memasukkan project Integration Connectors ke dalam daftar yang diizinkan di lampiran layanan PSC, buat lampiran endpoint untuk menggunakan lampiran layanan PSC. Untuk mengetahui informasi selengkapnya, lihat Membuat lampiran endpoint.
Membuat lampiran endpoint
Lampiran endpoint sebagai alamat IPUntuk mengetahui petunjuk cara membuat lampiran endpoint sebagai alamat IP, lihat Membuat lampiran endpoint sebagai alamat IP.
Lampiran endpoint sebagai nama hostDalam kasus tertentu seperti backend yang mendukung TLS, tujuan mengharuskan Anda menggunakan nama host, bukan IP pribadi, untuk melakukan validasi TLS. Dalam kasus saat DNS pribadi digunakan, bukan alamat IP untuk tujuan host, selain membuat lampiran endpoint sebagai alamat IP, Anda juga harus mengonfigurasi zona terkelola. Untuk mengetahui petunjuk cara membuat lampiran endpoint sebagai nama host, lihat Membuat lampiran endpoint sebagai nama host.
Nanti, saat mengonfigurasi koneksi untuk menggunakan lampiran endpoint, Anda dapat memilih lampiran endpoint ini.
Mengonfigurasi koneksi untuk menggunakan lampiran endpoint
Setelah membuat lampiran endpoint, gunakan lampiran endpoint dalam koneksi Anda. Saat Anda membuat koneksi baru atau memperbarui koneksi yang ada, di bagian Tujuan, pilih Lampiran endpoint sebagai Jenis Tujuan dan pilih lampiran endpoint yang Anda buat dari daftar Lampiran Endpoint.
Jika Anda membuat zona terkelola, pilih Alamat Host sebagai Jenis Tujuan dan gunakan A-record yang Anda buat saat membuat zona terkelola.
Tips pemecahan masalah
Jika Anda mengalami masalah dengan konektivitas pribadi, ikuti panduan yang tercantum di bagian ini untuk menghindari masalah umum.
- Untuk memverifikasi bahwa lampiran endpoint disiapkan dengan benar dan koneksi PSC dibuat, periksa status koneksi. Untuk mengetahui informasi selengkapnya, lihat Memverifikasi koneksi lampiran endpoint.
- Pastikan konfigurasi berikut untuk aturan firewall:
- Traffic dari subnet lampiran layanan PSC harus diizinkan untuk menjangkau layanan backend Anda.
- Load balancer harus dapat mengirim traffic ke layanan backend Anda.
- Load balancer pass-through (ILB TCP/UDP L4)
Permintaan dari IP NAT lampiran layanan PSC harus dapat
menjangkau backend Anda. IP NAT ini dialokasikan secara otomatis dari rentang subnet NAT PSC, sehingga Anda harus mengizinkan seluruh rentang IP subnet NAT tempat lampiran layanan Anda berada. Untuk menemukan subnet NAT PSC,
gunakan perintah berikut:
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
- Load balancer berbasis proxy/HTTP(s) (ILB proxy L4, ILB L7)
Permintaan dari load balancer proxy berasal dari subnet khusus proxy di
region. Oleh karena itu, aturan firewall Anda harus dikonfigurasi untuk mengizinkan permintaan
dari rentang subnet khusus proxy untuk menjangkau backend Anda. Untuk menemukan subnet
khusus proxy, gunakan perintah berikut:
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
- Pemeriksaan health check harus dapat mengakses sistem backend Anda. Pemeriksaan health check Google Cloud memiliki rentang IP tetap (35.191.0.0/16, 130.211.0.0/22). Jadi, alamat IP ini harus diizinkan untuk mengirim traffic ke server backend Anda.
Untuk mengetahui informasi tentang cara memecahkan masalah Load Balancer, lihat Memecahkan masalah Load Balancer Aplikasi internal.
- Load balancer pass-through (ILB TCP/UDP L4)
Permintaan dari IP NAT lampiran layanan PSC harus dapat
menjangkau backend Anda. IP NAT ini dialokasikan secara otomatis dari rentang subnet NAT PSC, sehingga Anda harus mengizinkan seluruh rentang IP subnet NAT tempat lampiran layanan Anda berada. Untuk menemukan subnet NAT PSC,
gunakan perintah berikut:
- Uji konektivitas Google Cloud dapat digunakan untuk mengidentifikasi kesenjangan dalam konfigurasi jaringan Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat dan menjalankan Uji Konektivitas.