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:

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.

  1. Buat pemeriksaan health check dan izinkan traffic dari pemeriksaan.
    1. 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.

    2. 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
  2. Buat load balancer internal L4 dan izinkan traffic dari load balancer.
    1. 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 
    2. Tambahkan grup instance ke layanan backend.
      gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
    3. 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
    4. 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
  3. Membuat lampiran layanan
    1. Buat subnet untuk PSC NAT. Perintah berikut membuat subnet dengan nama psc-nat-subnet1 dan tujuannya adalah PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. 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
    3. 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@developer.gserviceaccount.com",
              "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 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

Untuk mengonfigurasi konektivitas pribadi, lakukan langkah-langkah berikut:

  1. Buat load balancer. Jika sudah memiliki load balancer, lewati langkah ini.
    1. Buat NEG zona. Untuk mengetahui informasi selengkapnya, lihat Membuat NEG zonal.
    2. Tambahkan NEG zonal sebagai backend, dan buat aturan berikut:
      1. 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
      2. 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
  2. Membuat lampiran layanan
    1. Buat subnet untuk PSC NAT. Perintah berikut membuat subnet dengan nama psc-nat-subnet1 dan tujuannya adalah PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. 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
    3. 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@developer.gserviceaccount.com",
              "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.

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@developer.gserviceaccount.com",
      "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 IP

Untuk petunjuk cara membuat lampiran endpoint sebagai alamat IP, lihat Membuat lampiran endpoint sebagai alamat IP.

Lampiran endpoint sebagai nama host

Dalam 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"
      • Untuk informasi tentang cara memecahkan masalah Load Balancer, lihat Memecahkan masalah Load Balancer Aplikasi internal.

      • 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.
    • Uji Konektivitas Google Cloud dapat digunakan untuk mengidentifikasi kesenjangan dalam konfigurasi jaringan Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat dan menjalankan Uji Konektivitas.