Menghubungkan ke instance menggunakan Private Service Connect

Halaman ini menjelaskan cara menggunakan Private Service Connect untuk terhubung ke instance Cloud SQL.

Anda dapat menggunakan Private Service Connect untuk terhubung ke instance Cloud SQL utama atau replika baca-nya dari beberapa jaringan Virtual Private Cloud (VPC) yang tergabung dalam berbagai grup, tim, project, atau organisasi.

Sebelum memulai

Dukungan untuk menggunakan Private Service Connect dengan instance Cloud SQL tersedia untuk gcloud CLI versi 416.0.0 dan yang lebih baru.

Peran pengguna

Tabel berikut memberikan informasi tentang peran yang diperlukan untuk menggunakan Private Service Connect dengan instance Cloud SQL:

Peran Deskripsi
compute.networkAdmin

Memberikan kontrol penuh atas jaringan VPC yang memulai koneksi ke instance Cloud SQL. Anda dapat membuat dan mengelola alamat IP, aturan firewall, dan endpoint Private Service Connect.

Jika Anda menggunakan Private Service Connect untuk terhubung ke instance Cloud SQL dari beberapa jaringan VPC, setiap jaringan memiliki administrator sendiri.

dns.admin Memberikan kontrol penuh atas resource Cloud DNS, termasuk zona dan data DNS.
cloudsql.admin Memberikan kontrol penuh atas instance Cloud SQL dan mengontrol instance selama siklus prosesnya.
cloudsql.instanceUser Memberikan akses ke instance Cloud SQL. Jika terhubung melalui klien Proxy Auth Cloud SQL, Anda harus memiliki peran Klien Cloud SQL. Jika terhubung secara langsung, Anda tidak memerlukan peran dan izin Identity and Access Management (IAM).

Membuat instance Cloud SQL

Anda dapat membuat instance dan mengaktifkan Private Service Connect untuknya menggunakan gcloud CLI, Terraform, atau API.

gcloud

Untuk membuat instance dan mengaktifkan Private Service Connect untuknya, gunakan perintah gcloud sql instances create:

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip \
--database-version=DATABASE_VERSION
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD

Lakukan penggantian berikut:

  • INSTANCE_NAME: nama instance.
  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
  • REGION_NAME: nama region untuk instance.
  • ALLOWED_PROJECTS: daftar ID atau nomor project yang diizinkan, yang dipisahkan dengan koma. Jika project tidak terdapat dalam daftar ini, Anda tidak dapat menggunakannya untuk membuat instance dan mengaktifkan Private Service Connect untuk project tersebut.

  • AVAILABILITY_TYPE: mengaktifkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
    • REGIONAL: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance gagal dipindahkan ke zona lain dalam region yang dipilih.
    • ZONAL: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.

    Untuk mengetahui informasi selengkapnya tentang cara menetapkan dan menghapus ketersediaan tinggi untuk instance, lihat Mengonfigurasi instance yang ada untuk ketersediaan tinggi dan Menonaktifkan ketersediaan tinggi untuk instance.

  • DATABASE_VERSION: versi database untuk instance (misalnya, SQLSERVER_2019_STANDARD).
  • NUMBER_OF_vCPUs: jumlah core untuk instance.
  • MEMORY_SIZE: jumlah memori untuk instance.
  • ROOT_PASSWORD: sandi pengguna Cloud SQL root.

Terraform

Untuk membuat instance dengan Private Service Connect yang diaktifkan, gunakan google_sql_database_instanceresource Terraform.

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = [] # Add consumer project IDs here.
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan bahwa resource yang dibuat atau diperbarui oleh Terraform sesuai dengan ekspektasi Anda:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada perintah:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
  • INSTANCE_NAME: nama instance.
  • REGION_NAME: nama region untuk instance.
  • ROOT_PASSWORD: sandi pengguna Cloud SQL root.
  • AVAILABILITY_TYPE: mengaktifkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
    • REGIONAL: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance gagal dipindahkan ke zona lain dalam region yang dipilih.
    • ZONAL: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.

    Untuk mengetahui informasi selengkapnya tentang cara menetapkan dan menghapus ketersediaan tinggi untuk instance, lihat Mengonfigurasi instance yang ada untuk ketersediaan tinggi dan Menonaktifkan ketersediaan tinggi untuk instance.

  • ALLOWED_PROJECTS: daftar ID atau nomor project yang diizinkan, yang dipisahkan dengan koma. Jika project tidak terdapat dalam daftar ini, Anda tidak dapat menggunakannya untuk membuat instance dan mengaktifkan Private Service Connect untuk project tersebut.

  • MACHINE_TYPE: nilai string terenumerasi yang mewakili jenis mesin untuk instance. Misalnya: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, dengan NUMBER_OF_vCPUs dan MEMORY_SIZE adalah jumlah core dan jumlah memori yang Anda inginkan untuk instance.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Meminta isi JSON:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Mendapatkan lampiran layanan

Setelah membuat instance Cloud SQL dengan Private Service Connect diaktifkan, dapatkan URI lampiran layanan dan gunakan untuk membuat endpoint Private Service Connect.

gcloud

Untuk melihat informasi ringkasan tentang instance yang mengaktifkan Private Service Connect, seperti kolom pscServiceAttachmentLink yang menampilkan URI yang mengarah ke lampiran layanan instance, gunakan perintah gcloud sql instances describe:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Lakukan penggantian berikut:

  • INSTANCE_NAME: nama instance Cloud SQL yang dapat dihubungkan dengan endpoint Private Service Connect di jaringan VPC
  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance

Contoh berikut menunjukkan contoh output untuk perintah ini:

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

Terraform

Untuk mendapatkan URI lampiran layanan, gunakan google_compute_addressresource Terraform.

resource "google_compute_address" "default" {
  name         = "psc-compute-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.44" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan bahwa resource yang dibuat atau diperbarui oleh Terraform sesuai dengan ekspektasi Anda:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada perintah:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance

Metode HTTP dan URL:

GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  ...
  pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
}

Kolom pscServiceAttachmentLink menampilkan URI yang mengarah ke lampiran layanan instance.

Membuat endpoint Private Service Connect

Anda dapat mencadangkan alamat IP internal untuk endpoint Private Service Connect dan membuat endpoint dengan alamat tersebut. Untuk membuat endpoint, Anda memerlukan URI lampiran layanan dan project yang diizinkan untuk instance.

gcloud

  1. Guna mencadangkan alamat IP internal untuk endpoint Private Service Connect, gunakan perintah
    gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_NAME \
    --addresses=INTERNAL_IP_ADDRESS

    Lakukan penggantian berikut:

    • ADDRESS_NAME: nama alamat IP internal.
    • PROJECT_ID: ID atau nomor project project Google Cloud untuk endpoint.
    • REGION_NAME: nama region untuk endpoint.
    • SUBNET_NAME: nama subnet untuk alamat IP.
    • INTERNAL_IP_ADDRESS: alamat IP yang akan dicadangkan. Alamat IP ini harus berada dalam rentang IP utama subnet. Alamat IP dapat berupa alamat RFC 1918 atau subnet dengan rentang non-RFC.
  2. Untuk memverifikasi bahwa alamat IP sudah dicadangkan, gunakan perintah gcloud compute addresses list:

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    Dalam respons, pastikan status RESERVED muncul untuk alamat IP.

  3. Untuk membuat endpoint Private Service Connect dan mengarahkannya ke lampiran layanan Cloud SQL, gunakan perintah gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create ENDPOINT_NAME \
    --address=ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --network=NETWORK_NAME \
    --target-service-attachment=SERVICE_ATTACHMENT_URI \
    --allow-psc-global-access

    Lakukan penggantian berikut:

    • ENDPOINT_NAME: nama endpoint
    • NETWORK_NAME: nama jaringan VPC untuk endpoint
    • SERVICE_ATTACHMENT_URI: URI lampiran layanan
  4. Untuk memverifikasi bahwa lampiran layanan menerima endpoint, gunakan perintah
    gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Dalam respons, verifikasi bahwa status ACCEPTED muncul untuk kolom pscConnectionStatus. Endpoint dapat terhubung ke lampiran layanan.

REST

  1. Cadangkan alamat IP internal untuk endpoint Private Service Connect.

  2. Pastikan alamat IP sudah dicadangkan.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint Private Service Connect
    • REGION_NAME: nama region
    • ADDRESS_NAME: nama alamat IP

    Metode HTTP dan URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "compute#address",
      "id": "ADDRESS_ID",
      "creationTimestamp": "2024-05-09T11:20:50.114-07:00",
      "name": "ADDRESS_NAME",
      "description": "This is the name of the internal IP address.",
      "address": "IP_ADDRESS",
      "status": "RESERVED",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "addressType": "EXTERNAL"
    }
    

    Dalam respons, pastikan status RESERVED muncul untuk alamat IP.

  3. Buat endpoint Private Service Connect dan arahkan ke lampiran layanan Cloud SQL.

  4. Pastikan lampiran layanan menerima endpoint.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint Private Service Connect
    • REGION_NAME: nama region
    • ENDPOINT_NAME: nama endpoint

    Metode HTTP dan URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "compute#forwardingRule",
      "id": "ENDPOINT_ID",
      "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
      "name": "ENDPOINT_NAME",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "IPAddress": "IP_ADDRESS",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
      "serviceDirectoryRegistrations": [
        {
          "namespace": "goog-psc-default"
        }
      ],
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "fingerprint": "FINGERPRINT_ID",
      "pscConnectionId": "CONNECTION_ID",
      "pscConnectionStatus": "ACCEPTED",
      "allowPscGlobalAccess": true
    }
    

    Dalam respons, verifikasi bahwa status ACCEPTED muncul untuk kolom pscConnectionStatus. Endpoint dapat terhubung ke lampiran layanan.

Menghubungkan ke instance Cloud SQL

Anda dapat terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan menggunakan alamat IP internal, data DNS, Proxy Auth Cloud SQL, Konektor Bahasa Cloud SQL, atau aplikasi Google Cloud lainnya.

Mengonfigurasi zona DNS terkelola dan data DNS

Cloud SQL tidak membuat data DNS secara otomatis. Sebagai gantinya, respons API pencarian instance menyediakan nama DNS yang disarankan. Sebaiknya Anda membuat data DNS di zona DNS pribadi pada jaringan VPC yang sesuai. Hal ini memungkinkan penggunaan Proxy Auth Cloud SQL secara konsisten untuk terhubung dari berbagai jaringan.

gcloud

  1. Untuk melihat informasi ringkasan tentang instance Cloud SQL, termasuk nama DNS instance, gunakan perintah gcloud sql instances describe:

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Lakukan penggantian berikut:

    • INSTANCE_NAME: nama instance Cloud SQL
    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance

    Pada respons, pastikan nama DNS muncul. Nama ini memiliki pola berikut: INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.. Contoh: 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog..

  2. Untuk membuat zona DNS pribadi, gunakan perintah gcloud dns managed-zones create. Zona ini dikaitkan dengan jaringan VPC yang digunakan untuk terhubung ke instance Cloud SQL melalui endpoint Private Service Connect.

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description=DESCRIPTION \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

    Lakukan penggantian berikut:

    • ZONE_NAME: nama zona DNS
    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi zona
    • DESCRIPTION: deskripsi zona (misalnya, zona DNS untuk instance Cloud SQL)
    • DNS_NAME: nama akhiran DNS untuk zona, seperti REGION_NAME.sql.goog. (dengan REGION_NAME adalah nama region untuk zona tersebut)
    • NETWORK_NAME: nama jaringan VPC
  3. Setelah Anda membuat endpoint Private Service Connect, untuk membuat data DNS di zona tersebut, gunakan perintah gcloud dns record-sets create:

    gcloud dns record-sets create DNS_RECORD \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

    Lakukan penggantian berikut:

    • DNS_RECORD: nama data DNS. Data ini disetel ke nama DNS yang Anda ambil dari instance Cloud SQL sebelumnya dalam prosedur ini (misalnya, 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.).
    • RRSET_TYPE: jenis data resource dari kumpulan data DNS (misalnya, A).
    • RR_DATA: alamat IP yang dialokasikan untuk endpoint Private Service Connect (misalnya, 198.51.100.5). Anda juga dapat memasukkan beberapa nilai seperti rrdata1 rrdata2 rrdata3 (misalnya, 10.1.2.3 10.2.3.4 10.3.4.5).

REST

  1. Dapatkan nama DNS instance Cloud SQL.
  2. Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance

    Metode HTTP dan URL:

    GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      ...
      "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog."
    }
    

    Kolom dnsName menampilkan nama DNS instance Cloud SQL. Nama DNS selalu diakhiri dengan titik (.).

  3. Buat zona DNS pribadi. Zona ini dikaitkan dengan jaringan VPC yang digunakan untuk terhubung ke instance Cloud SQL melalui endpoint Private Service Connect.
  4. Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi zona DNS
    • ZONE_NAME: nama zona
    • DESCRIPTION: deskripsi zona (misalnya, zona DNS untuk instance Cloud SQL)
    • DNS_NAME: nama akhiran DNS untuk zona, seperti REGION_NAME.sql.goog. (dengan REGION_NAME adalah nama region untuk zona tersebut)
    • NETWORK_NAME: nama jaringan VPC

    Metode HTTP dan URL:

    POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones

    Meminta isi JSON:

    {
      "name": "ZONE_NAME",
      "description": "DESCRIPTION",
      "dnsName": "DNS_NAME",
      "visibility": "private",
      "privateVisibilityConfig": {
        "kind": "dns#managedZonePrivateVisibilityConfig",
        "networks": [
          {
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME"
          }
        ]
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "name": "ZONE_NAME",
      "dnsName": "DNS_NAME",
      "description": "DESCRIPTION",
      "id": "ID",
      "nameServers": [
        "ns-gcp-private.googledomains.com."
      ],
      "creationTime": "2024-05-10T17:05:34.607Z",
      "visibility": "private",
      "privateVisibilityConfig": {
        "networks": [
          {
            "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork"
          }
        ],
        "gkeClusters": [],
        "kind": "dns#managedZonePrivateVisibilityConfig"
      },
      "cloudLoggingConfig": {
        "kind": "dns#managedZoneCloudLoggingConfig"
      },
      "kind": "dns#managedZone"
    }
    
  5. Setelah membuat endpoint Private Service Connect, buat data DNS di zona tersebut.
  6. Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi zona DNS.
    • ZONE_NAME: nama zona.
    • DNS_RECORD: nama data DNS. Data ini disetel ke nama DNS yang Anda ambil dari instance Cloud SQL sebelumnya dalam prosedur ini (misalnya, 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.).
    • RRSET_TYPE: jenis kumpulan data (misalnya, A).
    • TTL: time to live (TTL) untuk kumpulan data yang ditetapkan dalam jumlah detik (misalnya, 300).
    • RR_DATA: alamat IP yang dialokasikan untuk endpoint Private Service Connect (misalnya, 198.51.100.5). Anda juga dapat memasukkan beberapa nilai seperti rrdata1 rrdata2 rrdata3 (misalnya, 10.1.2.3 10.2.3.4 10.3.4.5).

    Metode HTTP dan URL:

    POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME

    Meminta isi JSON:

    {
      "deletions": []
      "additions": [
        {
          "name": "DNS_RECORD",
          "type": "RRSET_TYPE",
          "ttl": TTL,
          "rrdatas": [
            "RR_DATA"
          ]
        }
      ]
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "additions": [
        {
          "name": "DNS_RECORD",
          "type": "RRSET_TYPE",
          "ttl": TTL,
          "rrdatas": [
            "RR_DATA"
          ],
          "signatureRrdatas": [],
          "kind": "dns#resourceRecordSet"
        }
      ],
      "deletions": [],
      "startTime": "2024-05-10T17:29:44.375Z",
      "id": "CHANGE_ID",
      "status": "pending",
      "kind": "dns#change"
    }
    

Menghubungkan langsung menggunakan data DNS

Sebelum terhubung ke instance Cloud SQL menggunakan data DNS, selesaikan tindakan berikut:

  1. Buat endpoint Private Service Connect.
  2. Pastikan bahwa lampiran layanan instance menerima endpoint. Untuk memverifikasi bahwa status endpoint adalah ACCEPTED, periksa statusnya.
  3. Konfigurasi zona terkelola DNS dan data DNS.

Setelah memenuhi kondisi ini, gunakan data DNS untuk terhubung ke instance dari jaringan VPC mana pun tempat Anda membuat endpoint.

sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME

Lakukan penggantian berikut:

  • DNS_RECORD: data DNS endpoint
  • DATABASE_NAME: nama database Cloud SQL untuk SQL Server yang berada dalam instance
  • USERNAME: nama pengguna yang terhubung ke instance

Terhubung langsung melalui alamat IP internal

Sebelum terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan, selesaikan tindakan berikut:

  1. Buat endpoint Private Service Connect.
  2. Pastikan bahwa lampiran layanan instance menerima endpoint. Untuk memverifikasi bahwa status endpoint adalah ACCEPTED, periksa statusnya.

Setelah memenuhi kondisi ini, gunakan alamat IP endpoint untuk mengakses instance dari jaringan VPC tempat Anda membuat endpoint.

  1. Ambil alamat IP internal endpoint Private Service Connect.

    gcloud

    Untuk mengambil alamat IP, gunakan perintah gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Lakukan penggantian berikut:

    • ADDRESS_NAME: nama alamat IP endpoint
    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint
    • REGION_NAME: nama region untuk endpoint

    Pada respons, verifikasi bahwa alamat IP muncul untuk kolom address. Ini adalah alamat IP internal.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint
    • REGION_NAME: nama region untuk endpoint
    • ADDRESS_NAME: nama alamat IP endpoint

    Metode HTTP dan URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "compute#address",
      "id": "ADDRESS_ID",
      "creationTimestamp": "2024-05-09T11:20:50.114-07:00",
      "name": "ADDRESS_NAME",
      "description": "This is the name of the internal IP address.",
      "address": "IP_ADDRESS",
      "status": "RESERVED",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "addressType": "EXTERNAL"
    }
    

    Alamat IP internal adalah nilai yang dikaitkan dengan kolom address.

  2. Untuk terhubung ke instance Cloud SQL, gunakan alamat IP internal.

    sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME

    Lakukan penggantian berikut:

    • IP_ADDRESS: alamat IP endpoint
    • DATABASE_NAME: nama database Cloud SQL untuk SQL Server yang berada dalam instance
    • USERNAME: nama pengguna yang terhubung ke instance

Terhubung menggunakan Proxy Auth Cloud SQL

Proxy Auth Cloud SQL adalah konektor yang menyediakan akses aman ke instance dengan Private Service Connect yang diaktifkan tanpa memerlukan jaringan resmi atau untuk mengonfigurasi SSL.

Untuk mengizinkan koneksi klien Proxy Auth Cloud SQL, siapkan data DNS yang cocok dengan nama DNS yang direkomendasikan dan disediakan untuk instance. Pencatatan DNS adalah pemetaan antara sumber daya DNS dan nama domain.

Download dan instal Proxy Auth Cloud SQL

Agar terhubung ke instance dengan Private Service Connect yang diaktifkan, Anda harus mendownload dan menginstal biner untuk Proxy Auth Cloud SQL. Biner yang Anda unduh tergantung pada sistem operasi, dan apakah menggunakan kernel 32-bit atau 64-bit. Sebagian besar perangkat keras yang lebih baru menggunakan kernel 64-bit.

Jika tidak yakin apakah komputer Anda menjalankan kernel 32-bit atau 64-bit, gunakan perintah uname -a untuk Linux atau macOS. Untuk Windows, lihat dokumentasi Windows.

Memulai Proxy Auth Cloud SQL

Auth Proxy Cloud SQL mendukung koneksi ke instance dengan Private Service Connect yang diaktifkan. Untuk mengetahui informasi selengkapnya, lihat Memulai Proxy Auth Cloud SQL.

  1. Melihat informasi ringkasan tentang instance Cloud SQL, termasuk nama koneksi instance.

    gcloud

    Untuk melihat informasi ringkasan tentang instance Cloud SQL, gunakan perintah
    gcloud sql instances describe.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --format='value(connectionName)'

    Lakukan penggantian berikut:

    • INSTANCE_NAME: nama instance Cloud SQL
    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance

    Nama koneksi dalam format PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance

    Metode HTTP dan URL:

    GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      ...
      "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME"
    }
    

    Nama koneksi dalam format PROJECT_ID:REGION_NAME:INSTANCE_NAME.

  2. Salin nama koneksi instance.
  3. Luncurkan Auth Proxy Cloud SQL:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Ganti INSTANCE_CONNECTION_NAME dengan nama koneksi instance yang Anda salin di langkah sebelumnya.

Menghubungkan menggunakan Cloud SQL Language Connectors

Konektor Bahasa Cloud SQL adalah library yang menyediakan akses aman ke instance Cloud SQL dengan Private Service Connect yang diaktifkan tanpa memerlukan jaringan resmi atau untuk mengonfigurasi SSL.

Untuk mengizinkan koneksi dengan Cloud SQL Language Connectors, siapkan data DNS yang cocok dengan nama DNS yang direkomendasikan dan disediakan untuk instance tersebut. Pencatatan DNS adalah pemetaan antara sumber daya DNS dan nama domain.

Konektor Bahasa Cloud SQL mendukung koneksi Private Service Connect melalui jenis IP PSC dalam library masing-masing.

Menghubungkan dari App Engine Standard, Cloud Run, atau Cloud Functions

Untuk terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan, Anda dapat menggunakan App Engine Standard, Cloud Run, atau Cloud Functions.

Dalam lingkungan serverless yang didukung ini, Konektor Bahasa Cloud SQL dan koneksi TCP langsung yang menggunakan alamat IP dan nomor port didukung. Untuk koneksi TCP langsung, ini adalah alamat IP yang Anda cadangkan saat membuat endpoint Private Service Connect. Anda dapat menentukan alamat IP sebagai alamat untuk host database.

Jika membuat data DNS untuk endpoint, Anda dapat menentukan data ini untuk host.

Menghubungkan dari BigQuery

Untuk mengakses data di Cloud SQL dan membuat kueri terhadap data ini melalui koneksi IP internal, gunakan parameter
--enable-google-private-path . Parameter ini hanya valid jika:

  • Anda menggunakan parameter --no-assign-ip.
  • Anda menggunakan parameter --network untuk menentukan nama jaringan VPC yang ingin Anda gunakan untuk membuat koneksi internal.

Menguji konektivitas

Untuk menguji konektivitas masuk ke instance Cloud SQL dengan Private Service Connect yang diaktifkan, tetapkan alamat IP endpoint Private Service Connect menjadi alamat IP tujuan.

gcloud

Untuk membuat uji konektivitas bagi instance Cloud SQL dengan Private Service Connect yang diaktifkan, gunakan perintah gcloud network-management connectivity-tests create:

gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \
--source-instance=SOURCE_INSTANCE \
--destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \
--destination-network=DESTINATION_NETWORK \
--destination-port=DESTINATION_PORT \
--protocol=tcp

Lakukan penggantian berikut:

  • CONNECTIVITY_TEST_NAME: nama uji konektivitas.
  • SOURCE_INSTANCE: URI untuk instance Compute Engine tempat alamat IP sumber berada (misalnya, projects/myproject/zones/myzone/instances/myinstance).
  • DESTINATION_CLOUD_SQL_INSTANCE: URL untuk instance Cloud SQL (misalnya, projects/myproject/instances/myinstance).
  • DESTINATION_NETWORK: URI untuk jaringan VPC tempat alamat IP tujuan berada (misalnya, projects/myproject/global/networks/mynetwork).
  • DESTINATION_PORT: nomor port yang dicadangkan untuk instance. Untuk instance Cloud SQL untuk SQL Server, nomor port-nya adalah 1433.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
  • CONNECTIVITY_TEST_NAME: nama uji konektivitas.
  • SOURCE_IP_ADDRESS: alamat IP instance Compute Engine sumber.
  • SOURCE_INSTANCE: URI untuk instance Compute Engine tempat alamat IP sumber berada (misalnya, projects/myproject/zones/myzone/instances/myinstance).
  • SOURCE_NETWORK: URI untuk jaringan VPC tempat alamat IP sumber berada (misalnya, projects/myproject/global/networks/mynetwork).
  • DESTINATION_IP_ADDRESS: alamat IP instance Cloud SQL tujuan.
  • DESTINATION_PORT: nomor port yang dicadangkan untuk instance. Untuk instance Cloud SQL untuk SQL Server, nomor port-nya adalah 1433.
  • DESTINATION_NETWORK: URI untuk jaringan VPC tempat alamat IP tujuan berada (misalnya, projects/myproject/global/networks/mynetwork).

Metode HTTP dan URL:

POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME

Meminta isi JSON:

{
  "source": {
    "ipAddress": "SOURCE_IP_ADDRESS",
    "instance": "SOURCE_INSTANCE",
    "network": "SOURCE_NETWORK"
  },
  "destination": {
    "ipAddress": "DESTINATION_IP_ADDRESS",
    "port": DESTINATION_PORT,
    "network": "DESTINATION_NETWORK",
    "projectId": "PROJECT_ID"
  },
  "protocol": "TCP"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata",
    "createTime": "2024-05-23T16:43:49.313981473Z",
    "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME",
    "verb": "create",
    "cancelRequested": false,
    "apiVersion": "v1"
  },
  "done": false
}

Batasan

  • Anda dapat menyiapkan hingga 20 endpoint Private Service Connect yang terhubung ke lampiran layanan instance Cloud SQL yang mengaktifkan Private Service Connect.
  • Anda tidak dapat menggunakan backend untuk instance yang mengaktifkan Private Service Connect.
  • Flag berikut tidak valid atau terpengaruh:
    • --no-assign-ip: menggunakan tanda ini karena instance dengan Private Service Connect yang diaktifkan tidak didukung untuk menggunakan jenis konektivitas lain seperti koneksi IP eksternal
    • --authorized-networks: Anda tidak dapat menggunakan tanda ini untuk menambahkan jaringan yang diizinkan
    • --network: Anda tidak dapat menggunakan tanda ini karena terkait dengan akses layanan pribadi
    • --allocated-ip-range-name: Anda tidak dapat menggunakan tanda ini karena nama rentang IP yang diizinkan tidak didukung
  • Anda tidak dapat membuat replika eksternal instance dengan Private Service Connect yang diaktifkan.
  • Anda tidak dapat mengaktifkan atau menonaktifkan Private Service Connect pada instance yang ada.
  • Anda tidak dapat mengonfigurasi instance yang mengaktifkan Private Service Connect untuk menggunakan akses layanan pribadi atau koneksi IP eksternal.
    • Anda tidak dapat mengaktifkan koneksi IP eksternal pada instance yang mengaktifkan Private Service Connect.
    • Anda tidak dapat mengaktifkan akses layanan pribadi atau menambahkan jaringan resmi ke instance.
    • Anda tidak dapat mengubah jenis konektivitas instance.
    • Anda tidak dapat menggunakan perintah gcloud sql connect, Cloud Shell, Cloud Build, atau Database Migration Service untuk terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan.
    • Saat menguji konektivitas ke instance Cloud SQL dengan Private Service Connect yang diaktifkan, Anda tidak dapat menetapkan item berikut:
      • Alamat IP internal atau nama DNS instance sebagai tujuan secara langsung
      • Instance sebagai sumber
      • Alamat IP endpoint Private Service Connect sebagai sumber
    • Pemberian izin berbasis IP menggunakan jaringan yang diizinkan tidak didukung.
    • Untuk instance Cloud SQL yang mengaktifkan Private Service Connect, Layanan Terkelola untuk Microsoft Active Directory (juga disebut Microsoft AD Terkelola) dan server tertaut tidak didukung.

    Memecahkan masalah

    Bagian ini berisi informasi tentang masalah yang terkait dengan instance Cloud SQL dengan Private Service Connect yang diaktifkan beserta langkah-langkah untuk pemecahan masalah.

    Masalah Pemecahan masalah
    Lampiran layanan instance tidak menerima endpoint Private Service Connect.
    1. Periksa status endpoint.

      gcloud

      Untuk memeriksa status, gunakan perintah
      gcloud compute forwarding-rules describe.

      gcloud compute forwarding-rules describe ENDPOINT_NAME \
      --project=PROJECT_ID \
      --region=REGION_NAME \
      | grep pscConnectionStatus

      Lakukan penggantian berikut:

      • ENDPOINT_NAME: nama endpoint
      • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint
      • REGION_NAME: nama region untuk endpoint

      REST

      Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

      • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint Private Service Connect
      • REGION_NAME: nama region
      • ENDPOINT_NAME: nama endpoint

      Metode HTTP dan URL:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

      Untuk mengirim permintaan, perluas salah satu opsi berikut:

      Anda akan melihat respons JSON seperti berikut:

      {
        "kind": "compute#forwardingRule",
        "id": "ENDPOINT_ID",
        "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
        "name": "ENDPOINT_NAME",
        "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
        "IPAddress": "IP_ADDRESS",
        "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
        "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
        "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
        "serviceDirectoryRegistrations": [
          {
            "namespace": "goog-psc-default"
          }
        ],
        "networkTier": "PREMIUM",
        "labelFingerprint": "LABEL_FINGERPRINT_ID",
        "fingerprint": "FINGERPRINT_ID",
        "pscConnectionId": "CONNECTION_ID",
        "pscConnectionStatus": "ACCEPTED",
        "allowPscGlobalAccess": true
      }
      
    2. Verifikasi bahwa status endpoint adalah ACCEPTED. Jika statusnya PENDING, berarti instance tidak mengizinkan project Google Cloud yang berisi endpoint. Pastikan project jaringan tempat endpoint dibuat diizinkan. Untuk mengetahui informasi selengkapnya, lihat Mengedit instance dengan mengaktifkan Private Service Connect.

    Langkah selanjutnya

    • Pelajari IP pribadi lebih lanjut.
    • Pelajari Private Service Connect lebih lanjut.
    • Pelajari lebih lanjut cara membuat replika baca instance dengan Private Service Connect yang diaktifkan.
    • Pelajari lebih lanjut cara meng-clone instance dengan mengaktifkan Private Service Connect.
    • Pelajari lebih lanjut cara melihat informasi ringkasan tentang instance yang mengaktifkan Private Service Connect.
    • Pelajari lebih lanjut cara menyetel dan menghapus ketersediaan tinggi untuk instance yang mengaktifkan Private Service Connect.
    • Pelajari lebih lanjut cara mengedit dan menghapus instance yang mengaktifkan Private Service Connect.