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:

    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.

  • 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

  1. Di konsol Google Cloud, buka halaman Create a network endpoint group.

    Buka Membuat grup endpoint jaringan

  2. Di halaman Create network endpoint group, masukkan Name untuk grup endpoint jaringan.

  3. Untuk Network endpoint group type, pilih Private Service Connect NEG (Regional).

  4. Untuk Target, pilih Google API Global.

  5. Pilih Region untuk grup endpoint jaringan.

  6. Pilih Target service untuk grup endpoint jaringan.

  7. 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

  1. Di konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
  4. Untuk Public facing or internal, pilih Internal, lalu klik Next.
  5. Untuk Cross-region or single region deployment, pilih Best for cross-region workloads, lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Masukkan Nama untuk load balancer.
  2. Pilih Network untuk load balancer.

    Jaringan harus berisi subnet khusus proxy di region tempat Anda membuat load balancer.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Masukkan Name untuk aturan penerusan load balancer.
  3. Di kolom Protocol, pilih HTTPS (includes HTTP/2 and HTTP/3).
  4. Pilih Region subnetwork untuk subnetwork load balancer.
  5. Pilih Subnetwork untuk load balancer.
  6. 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:
      1. Masukkan Name untuk alamat IP.
      2. 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.
      3. Klik Reserve.
  7. Pastikan kolom Port ditetapkan ke 443 untuk mengizinkan traffic HTTPS.
  8. Klik daftar Certificate, lalu pilih sertifikat yang dikelola sendiri.
  9. Klik Done.

Konfigurasi backend

  1. Klik Backend configuration.
  2. Untuk setiap Google API global yang ingin Anda akses, buat layanan backend global. Untuk membuat layanan backend global, lakukan langkah berikut:

    1. Dari menu Create or select backend services, pilih Create a backend service.
    2. Masukkan Nama untuk layanan backend.
    3. Tetapkan Backend type ke Private Service Connect network endpoint group.
    4. Tetapkan Private Service Connect target type ke Global Google API.
    5. Pilih HTTPS untuk protokol.
    6. 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.

    7. Klik Done.

    8. Klik Create.

  3. 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.

  1. Jika Anda memiliki lebih dari satu layanan backend, klik Routing rules.
  2. Pilih Simple host and path rule.
  3. Untuk setiap backend, lakukan hal berikut:
    1. Klik Tambahkan aturan host dan jalur.
    2. Untuk Host, masukkan nama host yang akan digunakan untuk mengirim permintaan ke layanan ini—misalnya, pubsub.example.com.
    3. Untuk Path, masukkan jalur—misalnya, /*.
    4. Untuk Backends, pilih layanan backend.

Tinjau dan selesaikan

  1. Klik Review and finalize untuk meninjau konfigurasi.
  2. Klik Create.

gcloud

  1. Untuk setiap Google API global yang ingin Anda akses, lakukan hal berikut:

    1. 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.

    2. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

  1. Untuk setiap Google API global yang ingin Anda akses, lakukan hal berikut:

    1. Untuk membuat layanan backend global, buat permintaan POST ke metode backendServices.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.
    2. Untuk menambahkan NEG ke layanan backend yang sesuai, buat permintaan PATCH ke metode backendServices.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.
  2. Untuk membuat peta URL global untuk load balancer, buat permintaan POST ke metode urlMaps.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.
  3. 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 metode urlMaps.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.
  4. Untuk membuat proxy HTTPS target, buat permintaan POST ke metode targetHttpsProxies.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.
  5. Untuk membuat aturan penerusan global bagi load balancer, buat permintaan POST ke metode globalForwardingRules.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:

  1. Jika tidak memilikinya, buat instance virtual machine (VM) di jaringan VPC tempat Anda mengonfigurasi backend.
  2. Pastikan Anda belum membuat aturan firewall atau kebijakan firewall yang menggantikan aturan izinkan traffic keluar IPv4 tersirat.
  3. Hubungkan ke VM.
  4. Dari VM, gunakan curl untuk memverifikasi bahwa Anda dapat membuat kueri untuk setiap API. Perintah ini menetapkan header Host 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.