Mengakses Google API melalui endpoint
Dokumen ini menjelaskan cara menggunakan endpoint Private Service Connect untuk terhubung ke Google API. Daripada mengirim permintaan API ke alamat IP yang tersedia secara publik untuk endpoint layanan seperti storage.googleapis.com
, Anda dapat mengirim permintaan ke alamat IP internal endpoint.
Anda juga dapat menggunakan Private Service Connect untuk mengakses layanan di jaringan VPC lain dan untuk memublikasikan layanan.
Peran
Peran IAM berikut memberikan izin yang diperlukan untuk melakukan tugas-tugas dalam panduan ini.
Tugas | Peran |
---|---|
Membuat endpoint |
Semua peran berikut: Admin Jaringan Compute ( roles/compute.networkAdmin ),
Editor Direktori Layanan ( roles/servicedirectory.editor ), dan
Administrator DNS ( roles/dns.admin )
|
Mengonfigurasi Akses Google Pribadi (opsional) |
Admin Jaringan Compute (roles/compute.networkAdmin )
|
Sebelum memulai
Baca Tentang menghubungkan ke Google API menggunakan endpoint untuk informasi lebih lanjut, termasuk konfigurasi dan batasan DNS.
Private Service Connect tidak secara otomatis mengaktifkan API apa pun. Anda harus secara terpisah mengaktifkan Google API yang perlu Anda gunakan dari halaman API & layanan di Konsol Google Cloud.
Anda harus enable Compute Engine API di project Anda.
Anda harus enable Service Directory API di project Anda.
Anda harus enable Cloud DNS API di project Anda.
Anda harus memilih alamat IP yang akan digunakan untuk endpoint. Untuk mengetahui informasi tentang alamat IP yang dapat Anda gunakan, lihat Persyaratan alamat IP.
Aturan firewall keluar harus mengizinkan traffic ke endpoint. Konfigurasi firewall default untuk jaringan VPC mengizinkan traffic ini karena berisi aturan tersirat untuk mengizinkan egress. Pastikan Anda belum membuat aturan keluar dengan prioritas lebih tinggi yang memblokir traffic.
Instance mesin virtual (VM) tanpa alamat IP eksternal yang ditetapkan harus menggunakan subnet dengan Akses Google Pribadi yang diaktifkan untuk mengakses Google API dan layanan Google menggunakan endpoint.
VM dengan alamat IP eksternal dapat mengakses Google API dan layanan Google menggunakan endpoint meskipun Akses Google Pribadi dinonaktifkan untuk subnetnya. Konektivitas ke endpoint tetap berada dalam jaringan Google.
Jika jaringan VPC Anda tidak berisi endpoint apa pun, periksa apakah zona pribadi Cloud DNS ada untuk
p.googleapis.com
. Jika zona tersebut ada, hapus sebelum Anda membuat endpoint. Jika Anda tidak menghapusnya, pembuatan zona DNS Direktori Layanan yang digunakan untuk Private Service Connect akan gagal. Untuk mengetahui informasi selengkapnya, lihat pemecahan masalah.Endpoint tidak dapat diakses dari jaringan VPC yang di-peering.
Mengaktifkan Akses Google Pribadi untuk subnet
VM tanpa alamat IP eksternal yang ditetapkan harus terhubung ke subnet dengan Akses Google Pribadi yang diaktifkan untuk mengakses Google API dan layanan Google menggunakan endpoint.
Jika VM memiliki lebih dari satu antarmuka, hubungkan antarmuka yang dikonfigurasi dengan rute default (biasanya nic0
).
Alamat IP sumber paket yang dikirim dari VM harus cocok dengan alamat IPv4 internal utama antarmuka VM atau alamat IPv4 internal dari rentang IP alias.
Untuk mengaktifkan Akses Google Pribadi di subnet, ikuti langkah-langkah berikut.
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik nama jaringan yang berisi subnet tempat Anda perlu mengaktifkan Akses Google Pribadi.
Klik nama subnet. Halaman Subnet details akan ditampilkan.
Klik Edit.
Di bagian Akses Google Pribadi, pilih Aktif.
Klik Save.
gcloud
Tentukan nama dan region subnet. Untuk menampilkan subnet jaringan tertentu, gunakan perintah berikut:
gcloud compute networks subnets list --filter=NETWORK_NAME
Jalankan perintah berikut untuk mengaktifkan Akses Google Pribadi:
gcloud compute networks subnets update SUBNET_NAME \ --region=REGION \ --enable-private-ip-google-access
Pastikan Akses Google Pribadi diaktifkan dengan menjalankan perintah ini:
gcloud compute networks subnets describe SUBNET_NAME \ --region=REGION \ --format="get(privateIpGoogleAccess)"
Ganti kode berikut:
SUBNET_NAME
: nama subnetREGION
: region untuk subnetNETWORK_NAME
: nama jaringan VPC yang berisi subnet
Terraform
Anda dapat menggunakan resource Terraform untuk mengaktifkan Akses Google Pribadi di subnet.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Membuat endpoint
Setelah memilih alamat IP yang memenuhi persyaratan, Anda dapat membuat endpoint.
Endpoint terhubung ke Google API dan layanan menggunakan aturan penerusan global. Setiap aturan penerusan diperhitungkan dalam kuota per jaringan VPC untuk Private Service Connect.
Anda tidak dapat memperbarui endpoint untuk layanan dan Google API setelah dibuat. Jika Anda perlu mengupdate endpoint untuk Google API dan layanan Google, hapus endpoint, lalu buat endpoint baru.
Konsol
Di Konsol Google Cloud, buka halaman Private Service Connect.
Klik tab Connected endpoints.
Klik Connected endpoint.
Untuk Target, pilih paket API target yang ingin Anda gunakan:
- All Google APIs
- VPC-SC
Untuk Endpoint name, masukkan nama endpoint.
Pilih Network untuk endpoint.
Pilih IP Address untuk endpoint.
Alamat IP harus memenuhi persyaratan ini.
Jika memerlukan alamat IP baru, Anda dapat membuatnya:
- Klik Create IP address.
- Masukkan Name dan Description alamat IP.
- Masukkan IP address yang ingin Anda gunakan dan klik Save .
Jika Service Directory region belum dikonfigurasi untuk jaringan VPC ini, pilih region yang ingin Anda gunakan.
Semua endpoint yang digunakan untuk mengakses Google API dan layanan Google di jaringan VPC tertentu menggunakan region Direktori Layanan yang sama.
Jika Service Directory namespace belum dikonfigurasi untuk jaringan VPC ini, konfigurasikan namespace yang ingin digunakan:
Untuk menggunakan namespace yang ditetapkan secara otomatis, klik menu drop-down Namespace, lalu pilih namespace yang ditetapkan secara otomatis.
Untuk memilih namespace yang sudah ada dan digunakan di jaringan lain, klik menu drop-down Namespace, lalu pilih namespace dari daftar. Daftar ini menampilkan semua namespace dalam project. Anda harus memilih namespace yang hanya digunakan untuk endpoint yang digunakan untuk mengakses Google API.
Untuk membuat namespace baru, klik menu drop-down Namespace, lalu klik Create namespace. Masukkan namespace dan klik Create.
Semua endpoint yang Anda gunakan untuk mengakses Google API dan layanan Google di jaringan VPC tertentu menggunakan namespace Direktori Layanan yang sama.
Klik Add endpoint.
gcloud
Cadangkan alamat IP internal global untuk ditetapkan ke endpoint.
gcloud compute addresses create ADDRESS_NAME \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=ENDPOINT_IP \ --network=NETWORK_NAME
Ganti kode berikut:
ADDRESS_NAME
: nama yang akan ditetapkan ke alamat IP yang dicadangkan.ENDPOINT_IP
: alamat IP yang akan dicadangkan untuk endpoint.Alamat IP harus memenuhi persyaratan ini.
NETWORK_NAME
: nama jaringan VPC untuk endpoint.
Buat aturan penerusan untuk menghubungkan endpoint ke Google API dan layanan Google.
gcloud compute forwarding-rules create ENDPOINT_NAME \ --global \ --network=NETWORK_NAME \ --address=ADDRESS_NAME \ --target-google-apis-bundle=API_BUNDLE \ [ --service-directory-registration=REGION_NAMESPACE_URI ]
Ganti kode berikut:
ENDPOINT_NAME
: nama yang akan ditetapkan ke endpoint. Nama harus berupa string yang terdiri dari 1-20 karakter, yang hanya berisi huruf kecil dan angka. Nama harus diawali dengan huruf.NETWORK_NAME
: nama jaringan VPC untuk endpoint.ADDRESS_NAME
: nama alamat yang dicadangkan di jaringan yang terkait.API_BUNDLE
: paket API yang ingin dibuat tersedia menggunakan endpoint. Lihat daftar API yang didukung.Gunakan
all-apis
untuk memberikan akses ke semua API yang didukung.Gunakan
vpc-sc
untuk membatasi akses ke Google API yang mendukung Kontrol Layanan VPC.
REGION_NAMESPACE_URI
: URI region atau namespace Direktori Layanan yang ingin Anda gunakan. URI ini harus mereferensikan project yang sama dengan project tempat Anda membuat endpoint.Anda dapat menentukan region hanya dengan
projects/PROJECT_NAME/locations/REGION
.Anda dapat menentukan region dan namespace dengan
projects/PROJECT_NAME/locations/REGION/namespaces/NAMESPACE
.
Jika Anda menghilangkan
--service-directory-registration
sepenuhnya, atau menetapkan region tanpa namespace, hal berikut akan terjadi:Jika suatu region atau namespace sudah dikonfigurasi untuk jaringan VPC ini, default tersebut akan digunakan.
Jika suatu region tidak dikonfigurasi, region tersebut akan disetel ke
us-central1
. Jika namespace tidak dikonfigurasi, namespace yang dihasilkan sistem akan ditetapkan.
API
Cadangkan alamat IP internal global untuk ditetapkan ke endpoint.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses { "name": ADDRESS_NAME, "address": ENDPOINT_IP, "addressType": "INTERNAL", "purpose": PRIVATE_SERVICE_CONNECT, "network": NETWORK_URL }
Ganti kode berikut:
PROJECT_ID
: project ID Anda.ADDRESS_NAME
: nama yang akan ditetapkan ke alamat IP yang dicadangkan.ENDPOINT_IP
: alamat IP yang akan dicadangkan untuk endpoint.Alamat IP harus memenuhi persyaratan ini.
NETWORK_URL
: jaringan VPC untuk endpoint. Gunakan metode network.list ataugcloud compute networks list --uri
untuk menemukan URL jaringan Anda.
Buat aturan penerusan untuk menghubungkan endpoint ke Google API dan layanan Google.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "IPAddress": ADDRESS_URL, "network": NETWORK_URL, "name": ENDPOINT_NAME, "target": API_BUNDLE, "serviceDirectoryRegistrations : [ { "service_directory_region": REGION, "namespace": "NAMESPACE" } ], }
Ganti kode berikut:
PROJECT_ID
: project ID Anda.ENDPOINT_NAME
: nama yang akan ditetapkan ke endpoint. Nama harus berupa string yang terdiri dari 1-20 karakter, yang hanya berisi huruf kecil dan angka. Nama harus diawali dengan huruf.NETWORK_URL
: jaringan VPC untuk endpoint. Gunakan metode network.list ataugcloud compute networks list --uri
untuk menemukan URL jaringan Anda.ADDRESS_URL
: URL alamat yang dicadangkan di jaringan yang terkait. Gunakan metode globalAddresses.list ataugcloud compute addresses list --uri
untuk menemukan URL alamat yang Anda cadangkan.API_BUNDLE
: paket API yang ingin dibuat tersedia menggunakan endpoint. Lihat daftar API yang didukung.Gunakan
all-apis
untuk memberikan akses ke semua API yang didukung.Gunakan
vpc-sc
untuk membatasi akses ke Google API yang mendukung Kontrol Layanan VPC.
REGION
: region Direktori Layanan yang ingin Anda gunakan. Contoh,us-central1
. Jika Anda menghilangkanREGION
, dan suatu region sudah dikonfigurasi untuk jaringan VPC ini, region tersebut akan digunakan. Jika suatu region tidak dikonfigurasi, region tersebut akan disetel keus-central1
.NAMESPACE
: nama namespace Direktori Layanan yang ingin Anda gunakan. Jika Anda menghilangkanNAMESPACE
, dan suatu namespace sudah dikonfigurasi untuk jaringan VPC ini, namespace tersebut akan digunakan. Jika namespace tidak dikonfigurasi, namespace yang dihasilkan sistem akan ditetapkan.
Terraform
Anda dapat menggunakan resource Terraform berikut untuk membuat endpoint:
Memverifikasi bahwa endpoint berfungsi
Buat instance VM di jaringan VPC tempat Private Service Connect dikonfigurasi. Jalankan perintah berikut pada VM untuk memverifikasi bahwa endpoint Private Service Connect berfungsi. Endpoint tidak merespons permintaan ping (ICMP).
curl -v ENDPOINT_IP/generate_204
Ganti ENDPOINT_IP
dengan alamat IP endpoint.
Jika endpoint berfungsi, Anda akan melihat kode respons 204
HTTP.
Menampilkan daftar endpoint
Anda dapat menampilkan daftar semua endpoint yang dikonfigurasi.
Konsol
Di Konsol Google Cloud, buka halaman Private Service Connect.
Klik tab Connected endpoints.
Endpoint akan ditampilkan.
gcloud
gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
Output-nya mirip dengan berikut ini:
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET RULE IP TCP all-apis
Mendapatkan informasi tentang endpoint
Anda dapat melihat semua detail konfigurasi endpoint.
Konsol
Di Konsol Google Cloud, buka halaman Private Service Connect.
Klik tab Connected endpoints.
Endpoint akan ditampilkan.
Klik endpoint yang ingin Anda lihat detailnya.
gcloud
gcloud compute forwarding-rules describe \ ENDPOINT_NAME --global
Memberi label pada endpoint
Anda dapat mengelola label untuk endpoint. Lihat melabeli resource untuk mengetahui informasi selengkapnya.
Menghapus endpoint
Anda dapat menghapus endpoint.
Konsol
Di Konsol Google Cloud, buka halaman Private Service Connect.
Klik tab Connected endpoints.
Pilih endpoint yang ingin dihapus, lalu klik Delete.
gcloud
gcloud compute forwarding-rules delete \ ENDPOINT_NAME --global
Ganti ENDPOINT_NAME
dengan nama endpoint yang ingin Anda hapus.
Menggunakan endpoint
Untuk menggunakan endpoint, Anda harus mengirim permintaan ke nama host DNS yang di-resolve ke alamat IP endpoint.
Anda dapat menggunakan nama DNS
p.googleapis.com
yang dibuat secara otomatis jika dapat mengonfigurasi klien Anda untuk menggunakan endpoint kustom dan jika data DNSp.googleapis.com
dibuat untuk API dan layanan yang ingin digunakan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan nama DNSp.googleapis.com
.Misalnya, jika nama endpoint Anda adalah
xyz
, data DNS akan dibuat untukstorage-xyz.p.googleapis.com
,compute-xyz.p.googleapis.com
, dan API lain yang umum digunakan dalam paket API.Anda dapat membuat data DNS menggunakan nama DNS default jika menggunakan klien yang belum dikonfigurasi untuk menggunakan endpoint kustom, atau jika data DNS
p.googleapis.com
tidak ada untuk layanan yang ingin Anda gunakan. Untuk mengetahui informasi selengkapnya, lihat Membuat data DNS menggunakan nama DNS default.Misalnya, buat data DNS.untuk
storage.googleapis.com
dancompute.googleapis.com
.
Gunakan nama DNS p.googleapis.com
Saat Anda membuat endpoint, Direktori Layanan membuat data DNS untuk API dan layanan yang umum digunakan, yang tersedia menggunakan endpoint tersebut. Data DNS hanya dibuat untuk API dan layanan yang memiliki nama DNS default dengan akhiran googleapis.com
, dan hanya untuk subset API dan layanan tersebut.
Data DNS dibuat di zona pribadi p.googleapis.com
. Data tersebut mengarah ke alamat IP endpoint, dan menggunakan format ini: SERVICE-ENDPOINT.p.googleapis.com
Misalnya, jika nama endpoint Anda adalah xyz
, data DNS akan dibuat untuk storage-xyz.p.googleapis.com
, compute-xyz.p.googleapis.com
, dan API lain yang didukung.
Klien yang dapat dikonfigurasi untuk menggunakan endpoint kustom dapat menggunakan nama DNS p.googleapis.com
untuk mengirim permintaan ke endpoint.
Lihat dokumentasi klien atau library klien Anda guna mengetahui informasi tentang cara mengonfigurasinya untuk menggunakan endpoint kustom. Contoh:
Python: Anda dapat mengonfigurasi
api_endpoint
di Opsi klien.Go: Anda dapat mengonfigurasi
WithEndpoint
di ClientOptions..NET: Anda dapat mengonfigurasi
Endpoint
di class builder klien.gcloud: Anda dapat mengonfigurasi
api_endpoint_overrides
di gcloud CLI.
Membuat data DNS menggunakan nama DNS default
Anda perlu membuat data DNS guna mengarahkan nama DNS default untuk API dan layanan ke endpoint Anda dalam situasi berikut:
Klien atau aplikasi Anda tidak dapat dikonfigurasi untuk menggunakan nama DNS
p.googleapis.com
.Anda perlu mengakses layanan yang didukung, tetapi tidak ada nama DNS
p.googleapis.com
yang dibuat secara otomatis untuk layanan tersebut.
Untuk membuat data DNS yang mengarah ke endpoint Private Service Connect Anda, ikuti petunjuk berikut:
Buat zona DNS untuk domain yang perlu Anda gunakan (misalnya,
googleapis.com
ataugcr.io
). Sebaiknya buat zona pribadi Cloud DNS untuk tujuan ini.Di zona DNS ini:
Buat data
A
untuk nama domain (zona) itu sendiri; misalnya,googleapis.com
ataugcr.io
. Arahkan dataA
ini ke alamat IP endpoint. Jika Anda menggunakan Cloud DNS, lihat menambahkan data.Buat data
CNAME
untuk semua nama host domain tambahan yang memungkinkan dengan menggunakan tanda bintang dan titik yang diikuti dengan nama domain (zona); misalnya,*.googleapis.com
atau*.gcr.io
. Arahkan dataCNAME
ini ke dataA
di zona yang sama. Misalnya, arahkan*.googleapis.com
kegoogleapis.com
atau arahkan*.gcr.io
kegcr.io
.
Mengakses endpoint dari host lokal
Jika jaringan lokal Anda terhubung ke jaringan VPC, Anda dapat menggunakan Private Service Connect untuk mengakses Google API dan layanan Google dari host lokal menggunakan alamat IP internal endpoint.
Jaringan lokal Anda harus terhubung ke jaringan VPC menggunakan tunnel Cloud VPN atau lampiran VLAN.
Endpoint berada di jaringan VPC yang terhubung ke jaringan lokal Anda.
Jaringan lokal harus memiliki rute yang sesuai untuk endpoint. Konfigurasikan pemberitahuan rute kustom Cloud Router agar mengumumkan rute untuk endpoint di sesi BGP yang mengelola rute untuk tunnel Cloud VPN atau lampiran VLAN.
Anda harus mengonfigurasi sistem lokal agar dapat membuat kueri ke zona DNS pribadi Anda.
Jika Anda telah menerapkan zona DNS pribadi menggunakan Cloud DNS, selesaikan langkah-langkah berikut:
Buat kebijakan server masuk di jaringan VPC yang terhubung dengan jaringan lokal Anda.
Identifikasi titik entri forwarder masuk, di region tempat tunnel Cloud VPN dan lampiran VLAN Anda berada, di jaringan VPC tempat infrastruktur lokal koneksi jaringan.
Konfigurasikan sistem lokal dan server nama DNS lokal untuk meneruskan nama DNS untuk endpoint Private Service Connect ke titik entri forwarder masuk di region yang sama dengan tunnel Cloud VPN atau lampiran VLAN yang terhubung ke jaringan VPC.
Pemecahan masalah
Pembuatan zona DNS pribadi gagal
Saat Anda membuat endpoint, zona DNS Direktori Layanan akan dibuat. Pembuatan zona bisa gagal karena alasan berikut:
Anda belum mengaktifkan Cloud DNS API di project.
Anda tidak memiliki izin yang diperlukan untuk membuat zona DNS Direktori Layanan.
Zona DNS dengan nama zona yang sama ada di jaringan VPC ini.
Zona DNS untuk
p.googleapis.com
sudah ada di jaringan VPC ini.
Zona yang bertentangan mungkin terjadi karena penghapusan sebelumnya gagal.
Untuk membuat zona DNS Direktori Layanan, lakukan hal berikut:
Pastikan Cloud DNS API diaktifkan di project Anda.
Pastikan Anda memiliki izin yang diperlukan untuk membuat zona DNS Direktori Layanan:
dns.managedZones.create
servicedirectory.namespaces.associatePrivateZone
Buat zona DNS Direktori Layanan yang didukung oleh namespace Direktori Layanan yang terkait dengan endpoint Anda.
Gunakan nilai berikut saat Anda membuat zona:
Zone name: Gunakan nama zona yang sama dengan yang digunakan sistem selama upaya pembuatan yang gagal. Pesan error menampilkan nama zona yang digunakan.
DNS name:
p.googleapis.com.
(sertakan titik di bagian akhir).Service Directory namespace: Temukan namespace Direktori Layanan untuk endpoint Private Service Connect yang Anda buat, dan gunakan namespace ini saat Anda membuat zona DNS Direktori Layanan.
Namespace Direktori Layanan memiliki format berikut:
goog-psc-NETWORK_NAME-NETWORK_ID
.
Penghapusan zona DNS pribadi gagal
Saat Anda menghapus endpoint terakhir di jaringan VPC, konfigurasi Direktori Layanan terkait, termasuk zona DNS, akan dihapus.
Penghapusan ini bisa gagal karena alasan berikut:
Anda tidak memiliki izin yang diperlukan untuk menghapus zona DNS.
Zona ini berisi entri DNS yang ditentukan pengguna yang tidak dibuat oleh Direktori Layanan.
Untuk mengatasi masalah ini, lakukan langkah berikut:
Verifikasi bahwa Anda memiliki izin
dns.managedZones.delete
. Untuk mengetahui informasi selengkapnya, lihat Kontrol Akses di dokumentasi Cloud DNS.