Konektivitas jaringan di VPC Google Cloud
Halaman ini menjelaskan cara menyiapkan konektivitas pribadi dari Konektor Integrasi ke layanan backend Anda seperti MySQL, Postgres, dan SQL Server yang dihosting di Google Cloud VPC.
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 Google Cloud atau VPC yang sama.
- Layanan backend dan lampiran layanan PSC berada di project Google Cloud atau VPC 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 probe health check harus dikirim ke port yang sama.
- Konfigurasikan aturan firewall untuk memfasilitasi aliran traffic.
Aturan traffic masuk
Traffic dari subnet lampiran layanan PSC akan menjangkau layanan backend Anda.
Aturan traffic 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 Konektor Integrasi 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 harus 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.
- Membuat 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 NAT PSC 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:
..... { "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 Anda membuat lampiran layanan PSC, buat lampiran endpoint untuk menggunakan lampiran layanan PSC. Untuk 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 dengan 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:
- Mengonfigurasi 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 sudah memiliki load balancer, lewati langkah ini.
- Buat NEG zona. Untuk mengetahui informasi selengkapnya, lihat Membuat NEG zonal.
- Tambahkan NEG zonal 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.
- Membuat 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 NAT PSC 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:
..... { "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
Mencantumkan project Konektor Integrasi dalam daftar yang diizinkan 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:
..... { "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 mengizinkan project Konektor Integrasi dalam lampiran layanan PSC, buat lampiran endpoint untuk menggunakan lampiran layanan PSC. Untuk informasi selengkapnya, lihat Membuat lampiran endpoint.
Membuat lampiran endpoint
Lampiran endpoint sebagai alamat IPUntuk 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 mengaktifkan TLS, tujuan mengharuskan Anda menggunakan nama host, bukan IP pribadi, untuk melakukan validasi TLS. Jika DNS pribadi digunakan, bukan alamat IP untuk tujuan host, selain membuat lampiran endpoint sebagai alamat IP, Anda juga harus mengonfigurasi zona terkelola. Untuk petunjuk cara membuat lampiran endpoint sebagai nama host, lihat Membuat lampiran endpoint sebagai nama host.
Kemudian, 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 di 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 Host Address sebagai Destination Type 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 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. Oleh karena itu, 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 perlu 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 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. Oleh karena itu, 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.