Mengakses Google API global melalui backend
Halaman ini menjelaskan cara mengakses Google API global menggunakan backend Private Service Connect yang didasarkan pada Load Balancer Aplikasi internal lintas wilayah.
Konfigurasi ini memungkinkan Anda menargetkan satu atau beberapa Google API global individual sekaligus menerapkan visibilitas dan kontrol yang disediakan backend Private Service Connect.
- Anda dapat mengonfigurasi nama host kustom, yang bersifat lokal untuk Virtual Private Cloud (VPC) dan jaringan lokal yang terhubung, yang merutekan traffic ke Google API global yang Anda pilih.
- Anda dapat mengakses backend dari region mana pun, dan backend dapat memuat traffic load balancer ke grup endpoint jaringan (NEG) Private Service Connect yang berada di region mana pun.
- Anda dapat mengirim traffic ke backend dari jaringan VPC yang di-peering.
Untuk daftar Google API global yang tersedia, lihat Target Google API global.
Sebelum memulai
-
Untuk mendapatkan izin yang diperlukan guna mengonfigurasi backend untuk mengakses Google API global, minta administrator untuk memberi Anda peran IAM berikut di project Google Cloud Anda:
-
Compute Admin (
roles/compute.admin
) -
Pemilik Certificate Manager (
roles/certificatemanager.owner
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Compute Admin (
Aktifkan Compute Engine API di project Anda.
Aktifkan Certificate Manager API dalam project Anda.
Buat kunci pribadi dan sertifikat yang ditandatangani dari certificate authority (CA). Ikuti petunjuk di Langkah 1: Membuat kunci pribadi dan sertifikat. Kunci pribadi dan sertifikat diperlukan untuk membuat sertifikat SSL yang dikelola sendiri dengan Certificate Manager.
Buat resource sertifikat untuk Load Balancer Aplikasi internal lintas region menggunakan kunci pribadi dan sertifikat yang ditandatangani yang Anda buat. Saat mengupload sertifikat, Anda harus menetapkan cakupan ke
all-regions
. Untuk informasi selengkapnya, lihat Mengupload sertifikat yang dikelola sendiri ke Pengelola Sertifikat. Resource sertifikat diperlukan untuk mengonfigurasi proxy HTTPS target untuk load balancer.Buat subnet khusus proxy jika Anda belum memilikinya. Harus ada satu subnet khusus proxy di jaringan dan region VPC tempat Anda ingin membuat aturan penerusan Load Balancer Aplikasi internal lintas region. Subnet ini digunakan oleh semua Load Balancer Aplikasi internal dalam jaringan dan region tersebut.
Membuat NEG Private Service Connect
Untuk setiap Google API global yang ingin Anda akses, buat NEG Private Service Connect. NEG Private Service Connect bersifat regional, meskipun digunakan untuk menghubungkan ke Google API global.
NEG Private Service Connect tidak dapat diperbarui setelah dibuat.
Konsol
Di konsol Google Cloud, buka halaman Create a network endpoint group.
Di halaman Create network endpoint group, masukkan Name untuk grup endpoint jaringan.
Untuk Network endpoint group type, pilih Private Service Connect NEG (Regional).
Untuk Target, pilih Google API Global.
Pilih Region untuk grup endpoint jaringan.
Pilih Target service untuk grup endpoint jaringan.
Klik Create.
gcloud
Gunakan perintah network-endpoint-groups create
.
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=REGION
Ganti kode berikut:
NEG_NAME
: nama untuk grup endpoint jaringan.TARGET_SERVICE
: target Google API global yang ingin Anda hubungkan—misalnya,pubsub.googleapis.com
. Lihat daftar target Google API global yang didukung.REGION
: region tempat membuat grup endpoint jaringan.
API
Buat permintaan POST
ke metode regionNetworkEndpointGroups.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups { "name": "NEG_NAME", "networkEndpointType": "PRIVATE_SERVICE_CONNECT", "pscTargetService": "TARGET_SERVICE" }
Ganti kode berikut:
PROJECT_ID
: project ID grup endpoint jaringan.REGION
: region tempat membuat grup endpoint jaringan.NEG_NAME
: nama untuk grup endpoint jaringan.TARGET_SERVICE
: target Google API global yang ingin Anda hubungkan—misalnya,pubsub.googleapis.com
. Lihat daftar target Google API global yang didukung.
Mengonfigurasi load balancer
Untuk mengakses Google API global, konfigurasikan Load Balancer Aplikasi internal lintas-region.
Konsol
Memulai konfigurasi
Di konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
- Untuk Public facing or internal, pilih Internal, lalu klik Next.
- Untuk Cross-region or single region deployment, pilih Best for cross-region workloads, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
- Masukkan Nama untuk load balancer.
Pilih Network untuk load balancer.
Jaringan harus berisi subnet khusus proxy di region tempat Anda membuat load balancer.
Konfigurasi frontend
- Klik Frontend configuration.
- Masukkan Name untuk aturan penerusan load balancer.
- Di kolom Protocol, pilih HTTPS (includes HTTP/2 and HTTP/3).
- Pilih Region subnetwork untuk subnetwork load balancer.
- Pilih Subnetwork untuk load balancer.
- Klik Alamat IP, lalu lakukan salah satu tindakan berikut:
- Untuk menetapkan alamat IP sementara secara otomatis, pilih Ephemeral (Automatic).
- Untuk memilih alamat IP sementara, pilih Ephemeral (Custom), lalu masukkan Custom ephemeral IP address dari rentang alamat IP subnet load balancer.
- Untuk mencadangkan dan menggunakan alamat IP internal statis, klik
Create IP address, lalu lakukan hal berikut:
- Masukkan Name untuk alamat IP.
- Klik Static IP address, lalu lakukan salah satu tindakan berikut:
- Untuk menetapkan alamat IP statis secara otomatis, pilih Assign automatically.
- Untuk mengonfigurasi alamat IP tertentu, pilih Izinkan saya memilih, lalu masukkan Alamat IP kustom dari rentang alamat IP subnet load balancer.
- Klik Reserve.
- Pastikan kolom Port ditetapkan ke
443
untuk mengizinkan traffic HTTPS. - Klik daftar Certificate, lalu pilih sertifikat yang dikelola sendiri.
- Klik Done.
Konfigurasi backend
- Klik Backend configuration.
Untuk setiap Google API global yang ingin Anda akses, buat layanan backend global. Untuk membuat layanan backend global, lakukan langkah berikut:
- Dari menu Create or select backend services, pilih Create a backend service.
- Masukkan Nama untuk layanan backend.
- Tetapkan Backend type ke Private Service Connect network endpoint group.
- Tetapkan Private Service Connect target type ke Global Google API.
- Pilih HTTPS untuk protokol.
Di bagian Backends, klik menu New backend, lalu pilih grup endpoint jaringan Private Service Connect.
Jika Anda perlu membuat grup endpoint jaringan Private Service Connect baru, klik Create PSC NEG.
Klik Done.
Klik Create.
Pastikan setiap layanan backend yang ingin Anda tambahkan dipilih di menu Create or select backend services, lalu klik OK.
Aturan perutean
Kumpulan aturan untuk merutekan permintaan HTTPS yang masuk ke layanan backend tertentu disebut peta URL. Untuk mempelajari peta URL lebih lanjut, lihat Ringkasan peta URL.
Jika Anda hanya mengonfigurasi satu layanan backend untuk load balancer, aturan perutean default sudah cukup, dan Anda dapat langsung menuju ke Tinjau dan selesaikan.
Jika mengonfigurasi beberapa layanan backend, Anda harus membuat satu pencocok jalur untuk setiap layanan backend. Setiap aturan host hanya dapat mereferensikan satu pencocok jalur, tetapi dua atau beberapa aturan host dapat merujuk pada pencocok jalur yang sama.
- Jika Anda memiliki lebih dari satu layanan backend, klik Routing rules.
- Pilih Simple host and path rule.
- Untuk setiap backend, lakukan hal berikut:
- Klik Tambahkan aturan host dan jalur.
- Untuk Host, masukkan nama host yang akan digunakan untuk mengirim permintaan ke layanan ini—misalnya,
pubsub.example.com
. - Untuk Path, masukkan jalur—misalnya,
/*
. - Untuk Backends, pilih layanan backend.
Tinjau dan selesaikan
- Klik Review and finalize untuk meninjau konfigurasi.
- Klik Create.
gcloud
Untuk setiap Google API global yang ingin Anda akses, lakukan hal berikut:
Untuk membuat layanan backend global, gunakan perintah
gcloud compute backend-services create
.gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --global
Ganti
BACKEND_SERVICE_NAME
dengan nama layanan backend.Untuk menambahkan NEG ke layanan backend yang sesuai, gunakan perintah
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global
Ganti kode berikut:
NEG_NAME
: nama NEG Private Service Connect.REGION
: region NEG Private Service Connect.
Untuk membuat peta URL global untuk load balancer, gunakan perintah
gcloud compute url-maps create
.Peta URL harus merujuk ke layanan backend default. Jika Anda mengonfigurasi load balancer dengan satu layanan backend, tetapkan layanan backend tersebut sebagai default. Jika Anda mengonfigurasi load balancer untuk menggunakan beberapa layanan backend, pilih salah satu layanan backend sebagai default peta URL.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=DEFAULT_BACKEND_SERVICE_NAME
Ganti kode berikut:
URL_MAP_NAME
: nama untuk peta URL.DEFAULT_BACKEND_SERVICE_NAME
: nama layanan backend default load balancer. Default akan digunakan jika tidak ada aturan host yang cocok dengan nama host yang diminta.
Opsional: Jika Anda mengonfigurasi load balancer untuk menggunakan beberapa layanan backend, selesaikan langkah ini. Jika peta URL Anda hanya mereferensikan satu layanan backend, lewati langkah ini.
Untuk menambahkan layanan backend tambahan ke peta URL, gunakan perintah
gcloud compute url-maps add-path-matcher
.Untuk setiap layanan backend, tambahkan pencocok jalur dan satu atau beberapa aturan host. Anda harus membuat satu pencocok jalur untuk setiap layanan backend. Setiap aturan host hanya dapat mereferensikan satu pencocok jalur, tetapi dua atau beberapa aturan host dapat mereferensikan pencocok jalur yang sama.
gcloud compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=PATH_MATCHER \ --default-service=BACKEND_SERVICE_NAME \ --new-hosts=HOSTNAMES
Ganti kode berikut:
PATH_MATCHER
: nama untuk pencocok jalur.BACKEND_SERVICE_NAME
: nama layanan backend.HOSTNAMES
: satu atau beberapa nama host yang akan dikirimi permintaan untuk layanan backend—misalnya,pubsub.example.com
. Anda dapat memasukkan beberapa nama host dalam daftar yang dipisahkan koma.
Untuk membuat proxy HTTPS target, gunakan perintah
gcloud compute target-https-proxies create
.gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME
Ganti kode berikut:
PROXY_NAME
: nama untuk proxy HTTPS target.URL_MAP_NAME
: nama peta URL.CERTIFICATE_NAME
: nama resource sertifikat.
Untuk membuat aturan penerusan global bagi load balancer, gunakan perintah
gcloud compute forwarding-rules create
.gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --address=IP_ADDRESS \ --ports=443 \ --target-https-proxy=PROXY_NAME \ --subnet=SUBNET \ --subnet-region=SUBNET_REGION \ --global
Ganti kode berikut:
RULE_NAME
: nama aturan penerusan.NETWORK
: jaringan VPC dari aturan penerusan. Jaringan ini harus berisi subnet khusus proxy di region tempat Anda membuat load balancer.IP_ADDRESS
: alamat IP internal aturan penerusan, yang harus berada dalam rentang alamat IP subnet aturan penerusan. Untuk menggunakan alamat IP efemeral tertentu, masukkan alamat IP—misalnya,10.0.0.5
. Untuk menggunakan alamat IP internal statis, masukkan nama alamat IP. Untuk mengizinkan Google Cloud memilih alamat IP sementara, hapus tanda ini.SUBNET
: subnet aturan penerusan.SUBNET_REGION
: region subnet aturan pengalihan.
API
Untuk setiap Google API global yang ingin Anda akses, lakukan hal berikut:
Untuk membuat layanan backend global, buat permintaan
POST
ke metodebackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices { "loadBalancingScheme": "INTERNAL_MANAGED", "name": "BACKEND_SERVICE_NAME", "protocol": "HTTPS" }
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.BACKEND_SERVICE_NAME
: nama layanan backend.
Untuk menambahkan NEG ke layanan backend yang sesuai, buat permintaan
PATCH
ke metodebackendServices.patch
.PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG_NAME" } ] }
Ganti kode berikut:
REGION
: region NEG.NEG_NAME
: nama grup endpoint jaringan yang akan ditambahkan.
Untuk membuat peta URL global untuk load balancer, buat permintaan
POST
ke metodeurlMaps.insert
.Peta URL harus merujuk ke layanan backend default. Jika Anda mengonfigurasi load balancer dengan satu layanan backend, tetapkan layanan backend tersebut sebagai default. Jika Anda mengonfigurasi load balancer untuk menggunakan beberapa layanan backend, pilih salah satu layanan backend sebagai default peta URL.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps { "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/DEFAULT_BACKEND_SERVICE_NAME", "name": "URL_MAP_NAME" }
Ganti kode berikut:
DEFAULT_BACKEND_SERVICE_NAME
: nama default load balancer. Default digunakan jika tidak ada aturan host yang cocok dengan nama host yang diminta.URL_MAP_NAME
: nama untuk peta URL.
Jika Anda mengonfigurasi load balancer untuk menggunakan beberapa layanan backend, selesaikan langkah ini. Jika peta URL Anda hanya mereferensikan satu layanan backend, lewati langkah ini.
Untuk menambahkan layanan backend tambahan ke peta URL, buat permintaan
PATCH
ke metodeurlMaps.patch
.Untuk setiap layanan backend, tambahkan pencocok jalur dan satu atau beberapa aturan host. Anda harus membuat satu pencocok jalur untuk setiap layanan backend. Setiap aturan host hanya dapat mereferensikan satu pencocok jalur, tetapi dua atau beberapa aturan host dapat mereferensikan pencocok jalur yang sama.
Anda dapat menambahkan beberapa pencocok jalur dan aturan host dengan membuat satu permintaan API.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME { "pathMatchers": [ { "name": "PATH_MATCHER_NAME_1", "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME_1" }, { "name": "PATH_MATCHER_NAME_2", "defaultService": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME_2" } ], "hostRules": [ { "hosts": ["HOSTNAME_1"], "pathMatcher": "PATH_MATCHER_NAME_1" }, { "hosts": ["HOSTNAME_2"], "pathMatcher": "PATH_MATCHER_NAME_2" } ] }
Ganti kode berikut:
PATH_MATCHER_NAME_1
: nama untuk pencocok jalur pertama.BACKEND_SERVICE_NAME_1
: nama layanan backend pertama.PATH_MATCHER_NAME_2
: nama untuk pencocok jalur kedua.BACKEND_SERVICE_NAME_2
: nama layanan backend kedua.HOSTNAME_1
: nama host yang akan dikirimi permintaan untuk layanan pertama—misalnya,pubsub.example.com
.HOSTNAME_2
: nama host yang akan dikirimi permintaan untuk layanan kedua.
Untuk membuat proxy HTTPS target, buat permintaan
POST
ke metodetargetHttpsProxies.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxies { "name": "PROXY_NAME", "sslCertificates": [ "https://certificatemanager.googleapis.com/v1/projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME" ], "urlMap": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME" }
Ganti kode berikut:
PROJECT_ID
: ID project.PROXY_NAME
: nama untuk proxy HTTPS target.CERTIFICATE_NAME
: nama resource sertifikat.URL_MAP_NAME
: nama peta URL.
Untuk membuat aturan penerusan global bagi load balancer, buat permintaan
POST
ke metodeglobalForwardingRules.insert
. Jaringan aturan penerusan harus berisi subnet khusus proxy di subnet region aturan penerusan Anda.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "IPAddress": "IP_ADDRESS", "loadBalancingScheme": "INTERNAL_MANAGED", "name": "FORWARDING_RULE_NAME", "network": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "portRange": "443", "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME", "target": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpsProxies/PROXY_NAME" }
Ganti kode berikut:
IP_ADDRESS
: alamat IP internal aturan penerusan, yang harus berada dalam rentang alamat IP subnet aturan penerusan. Untuk menggunakan alamat IP efemeral tertentu, berikan alamat IP—misalnya,10.0.0.5
. Untuk menggunakan alamat IP internal statis, berikan nama alamat IP. Untuk mengizinkan Google Cloud memilih alamat IP sementara, hapus kolom ini.FORWARDING_RULE_NAME
: nama aturan penerusan.NETWORK_NAME
: nama jaringan VPC aturan penerusan. Jaringan ini harus berisi subnet khusus proxy di region tempat Anda membuat load balancer.SUBNET_REGION
: region subnet aturan penerusan.SUBNET_NAME
: nama subnet aturan penerusan.
Memverifikasi konfigurasi
Untuk menguji koneksi backend ke Google API global, lakukan hal berikut:
- Jika tidak memilikinya, buat instance virtual machine (VM) di jaringan VPC tempat Anda mengonfigurasi backend.
- Pastikan Anda belum membuat aturan firewall atau kebijakan firewall yang menggantikan aturan izinkan traffic keluar IPv4 tersirat.
- Hubungkan ke VM.
Dari VM, gunakan
curl
untuk memverifikasi bahwa Anda dapat membuat kueri untuk setiap API. Perintah ini menetapkan headerHost
dan mengabaikan resolusi DNS dengan menentukan alamat IP yang ditentukan pengguna.Anda dapat melewati validasi sertifikat menggunakan flag
-k
. Anda mungkin perlu melewati validasi jika menggunakan sertifikat yang ditandatangani sendiri untuk mengonfigurasi proxy HTTPS target atau jika VM tidak memiliki sertifikat certificate authority yang menandatangani sertifikat Anda.curl -iv --resolve HOSTNAME:443:IP_ADDRESS \ 'https://HOSTNAME/RESOURCE_URI'
Ganti kode berikut:
HOSTNAME
: nama host yang Anda konfigurasikan di peta URL, misalnya,pubsub.example.com
.IP_ADDRESS
: alamat IP aturan penerusan load balancer Anda.RESOURCE_URI
: sisa URI resource yang ingin Anda gunakan untuk verifikasi. Misalnya, jika load balancer meneruskan permintaan ke endpoint regional untuk Pub/Sub, Anda dapat menggunakan$discovery/rest?version=v1
.
Mengonfigurasi data DNS
Konfigurasikan data DNS untuk setiap host yang Anda tambahkan ke peta URL, yang mengarah ke alamat IP aturan penerusan. Jika Anda menggunakan Cloud DNS untuk mengelola DNS, lihat bagian Menambahkan, mengubah, dan menghapus data. Jika tidak, konfigurasikan data DNS di server DNS Anda.
Misalnya, Anda telah membuat konfigurasi berikut:
NEG Private Service Connect yang menggunakan layanan target
pubsub.googleapis.com
.Load Balancer Aplikasi internal lintas region yang menggunakan NEG Private Service Connect tersebut sebagai backend.
Peta URL yang menentukan aturan host untuk
pubsub.example.com
.
Agar konfigurasi ini berfungsi dengan benar, Anda harus membuat data DNS yang mengarah pubsub.example.com
ke alamat IP aturan penerusan.
Dengan konfigurasi ini, setiap permintaan yang dikirim ke pubsub.example.com
akan dikirim
ke load balancer, yang meneruskan permintaan ke pubsub.googleapis.com
.
Mengonfigurasi klien untuk mengirim permintaan ke backend
Untuk mengirim permintaan melalui backend, bukan endpoint layanan publik,
Anda harus mengonfigurasi klien untuk mengirim permintaan ke nama host yang Anda tentukan di
peta URL load balancer—misalnya, pubsub.example.com
. Lihat dokumentasi klien atau library klien Anda guna mengetahui informasi tentang cara mengonfigurasinya untuk menggunakan endpoint kustom. Halaman berikut menyertakan
langkah-langkah konfigurasi untuk beberapa klien umum:
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.