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 dari beberapa jaringan Virtual Private Cloud (VPC) yang tergabung dalam grup, tim, project, atau organisasi yang berbeda.
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, kebijakan koneksi layanan, dan endpoint Private Service Connect. Jika Anda menggunakan Private Service Connect untuk terhubung ke instance Cloud SQL dari beberapa jaringan VPC, setiap jaringan memiliki administratornya 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 langsung, Anda tidak memerlukan peran dan izin Identity and Access Management (IAM). |
Membuat endpoint Private Service Connect
Endpoint Private Service Connect adalah alamat IP internal di jaringan VPC konsumen, yang dapat diakses langsung oleh klien di jaringan tersebut. Klien dapat menggunakan endpoint ini untuk terhubung ke instance Cloud SQL.
Anda dapat meminta Cloud SQL membuat endpoint Private Service Connect secara otomatis di VPC atau membuat endpoint secara manual.
Agar Cloud SQL membuat endpoint Private Service Connect secara otomatis, lakukan tindakan berikut:
- Buat kebijakan koneksi layanan di jaringan VPC Anda. Dengan kebijakan ini, Anda dapat menyediakan endpoint Private Service Connect secara otomatis.
- Buat instance Cloud SQL dengan Private Service Connect yang diaktifkan untuk instance tersebut, dan konfigurasikan instance untuk membuat endpoint Private Service Connect secara otomatis.
- Mengambil endpoint untuk instance. Hal ini memungkinkan Anda menggunakan endpoint untuk terhubung ke instance.
Untuk membuat endpoint Private Service Connect secara manual, lakukan tindakan berikut:
- Buat instance Cloud SQL dengan Private Service Connect yang diaktifkan untuk instance tersebut.
- Dapatkan URI lampiran layanan. Anda menggunakan URI ini untuk membuat endpoint Private Service Connect.
- Cadangkan alamat IP internal untuk endpoint Private Service Connect dan buat endpoint dengan alamat tersebut.
Membuat endpoint secara otomatis
Beberapa bagian berikutnya menjelaskan cara mengonfigurasi instance Anda agar Cloud SQL dapat membuat endpoint Private Service Connect secara otomatis.
Membuat kebijakan koneksi layanan
Kebijakan koneksi layanan memungkinkan Anda mengizinkan class layanan yang ditentukan untuk membuat endpoint Private Service Connect di jaringan VPC konsumen. Anda dapat menggunakan kebijakan koneksi layanan untuk mengizinkan Cloud SQL membuat endpoint Private Service Connect secara otomatis.
Anda dapat membuat kebijakan koneksi layanan menggunakan konsol Google Cloud, gcloud CLI, atau API.
Konsol
Di Konsol Google Cloud, buka halaman Private Service Connect.
Klik tab Kebijakan Koneksi.
Klik Create connection policy.
Masukkan Name untuk kebijakan koneksi.
Tentukan class layanan dengan melakukan hal berikut:
- Untuk Source service class, pilih Google services.
- Dari menu Service class, pilih
google-cloud-sql
karena Cloud SQL adalah layanan terkelola untuk kebijakan koneksi.
Di bagian Target endpoints scope, pilih Network dan Region tempat kebijakan ini diterapkan.
Di bagian Policy, pilih satu atau beberapa subnet dari menu Subnetworks. Subnet digunakan untuk mengalokasikan alamat IP untuk endpoint.
Opsional: Tentukan Connection limit untuk kebijakan. Batas ini menentukan jumlah endpoint yang dapat dibuat dengan menggunakan kebijakan koneksi ini. Jika Anda tidak menentukan batas koneksi, berarti tidak ada batas.
Klik Create policy.
gcloud
Untuk membuat kebijakan koneksi layanan, gunakan
perintah service-connection-policies create
.
gcloud network-connectivity service-connection-policies create POLICY_NAME \ --network=NETWORK \ --project=PROJECT_ID \ --region=REGION \ --service-class=SERVICE_CLASS \ --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \ --psc-connection-limit=LIMIT \ --description=DESCRIPTION \ --producer-instance-location=PRODUCER_INSTANCE_LOCATION \ --allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL
Ganti kode berikut:
POLICY_NAME
: nama kebijakan koneksi layanan Anda.NETWORK
: jaringan tempat kebijakan ini berlaku.PROJECT_ID
: project ID atau nomor project jaringan VPC. Untuk jaringan VPC Bersama, Anda harus men-deploy kebijakan koneksi layanan di project host karena kebijakan ini tidak didukung di project layanan.REGION
: region tempat kebijakan ini berlaku. Kebijakan yang sama harus ada untuk setiap region tempat Anda ingin mengotomatiskan konektivitas layanan.SERVICE_CLASS
: ID resource yang disediakan produsen dari class layanan. Untuk Cloud SQL, class layanannya adalahgoogle-cloud-sql
.SUBNETS
: satu atau beberapa subnet konsumen reguler yang digunakan untuk mengaloksir alamat IP untuk endpoint Private Service Connect. Alamat IP ini dialokasikan secara otomatis dan dikembalikan ke kumpulan subnet saat instance layanan terkelola dibuat dan dihapus. Subnet harus berada di region yang sama dengan kebijakan koneksi layanan. Jika beberapa kebijakan koneksi memiliki region yang sama, Anda dapat menggunakan kembali subnetwork yang sama dalam kebijakan ini. Anda dapat memasukkan beberapa subnet dalam daftar yang dipisahkan koma.LIMIT
: jumlah maksimum endpoint yang dapat Anda buat menggunakan kebijakan ini. Jika Anda tidak menentukan batas, berarti tidak ada batas.DESCRIPTION
: deskripsi opsional untuk kebijakan koneksi layanan.PRODUCER_INSTANCE_LOCATION
: gunakan flag opsional ini untuk menentukan apakah akan memberikan otorisasi hierarki lokasi kustom untuk instance Cloud SQL. Anda dapat menetapkan nilaiPRODUCER_INSTANCE_LOCATION
hanya ke salah satu dari berikut ini:custom-resource-hierarchy-levels
: instance harus berada di salah satu project, folder, atau organisasi yang Anda berikan sebagai nilai untuk parameterallowed-google-producers-resource-hierarchy-level
.none
: instance berada dalam project yang sama dengan kebijakan koneksi layanan.
RESOURCE_HIERARCHY_LEVEL
: daftar project, folder, atau organisasi tempat instance berada. Daftar ini dalam bentukprojects/PROJECT_ID
,folders/FOLDER_ID
, atauorganizations/ORGANIZATION_ID
.
Misalnya, perintah berikut akan membuat kebijakan koneksi layanan untuk class layanan
google-cloud-sql
yang mengalokasikan alamat IP dari subnet managed-services
. Maksimal 10 endpoint Private Service Connect dapat dibuat menggunakan kebijakan ini. Endpoint harus dibuat dalam project yang berada di organisasi yang sama dengan instance layanan terkelola. Instance Cloud SQL berada di project myproject
.
gcloud network-connectivity service-connection-policies create cloud-sql-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-sql \ --subnets=managed-service-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-google-producers-resource-hierarchy-level=projects/myproject
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Anda.REGION
: region kebijakan koneksi layanan Anda.POLICY_NAME
: nama kebijakan koneksi layanan Anda.DESCRIPTION
: deskripsi opsional dari kebijakan koneksi layanan Anda.NETWORK
: jaringan kebijakan koneksi layanan Anda.LIMIT
: jumlah maksimum endpoint yang dapat Anda buat menggunakan kebijakan ini. Jika Anda tidak menentukan batas, berarti tidak ada batas.SUBNETS
: satu atau beberapa subnet konsumen reguler yang digunakan untuk mengalokasikan alamat IP untuk endpoint Private Service Connect. Alamat IP ini dialokasikan secara otomatis dan dikembalikan ke kumpulan subnet saat instance layanan terkelola dibuat dan dihapus. Subnet harus berada di region yang sama dengan kebijakan koneksi layanan. Jika beberapa kebijakan koneksi memiliki region yang sama, Anda dapat menggunakan kembali subnetwork yang sama dalam kebijakan ini. Anda dapat memasukkan beberapa subnet dalam daftar yang dipisahkan koma.SERVICE_CLASS
: ID resource yang disediakan produsen dari class layanan.
Metode HTTP dan URL:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
Meminta isi JSON:
{ "description": "DESCRIPTION", "network": "projects/PROJECT_ID/global/networks/NETWORK", "pscConfig": { "limit": "LIMIT", "subnetworks": [ "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" ] }, "serviceClass": "SERVICE_CLASS" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T16:59:29.236110917Z", "target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Membuat instance Cloud SQL
Anda dapat membuat instance dengan Private Service Connect yang diaktifkan untuk instance tersebut dan mengonfigurasi instance untuk membuat endpoint secara otomatis menggunakan gcloud CLI atau API.
gcloud
Untuk membuat instance dengan Private Service Connect yang diaktifkan untuk instance tersebut, 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 \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --psc-auto-connections=network=VPC_NETWORK,project=SERVICE_PROJECT \ --enable-bin-log
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 project ID atau nomor yang diizinkan yang dipisahkan koma dari tempat endpoint Private Service Connect dapat terhubung ke instance Cloud SQL.
Jika project tidak ada dalam daftar ini, Anda tidak dapat membuat endpoint Private Service Connect dalam project untuk terhubung ke instance.
- AVAILABILITY_TYPE: memungkinkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
REGIONAL
: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance akan dialihkan ke zona lain dalam region yang Anda pilih.ZONAL
: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.
Untuk 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.
- MACHINE_TYPE: jenis mesin untuk instance.
- DATABASE_VERSION: versi database untuk instance (misalnya,
MYSQL_8_0
). - VPC_NETWORK: jalur ke jaringan VPC tempat endpoint Private Service Connect perlu dibuat. Misalnya:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: project tempat endpoint Private Service Connect dibuat. Jika jaringan VPC bukan VPC bersama, jaringan ini hanya dapat menjadi project host untuk jaringan. Jika ini adalah VPC bersama, project tersebut dapat berupa project host atau project layanan.
Setiap project yang Anda tentukan dalam parameter koneksi otomatis akan otomatis ditambahkan ke project yang diizinkan. Jika ingin, untuk project yang ingin Anda buat endpoint Private Service Connect-nya secara manual, Anda dapat menambahkan project ini ke daftar project yang diizinkan.
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.
- AVAILABILITY_TYPE: memungkinkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
REGIONAL
: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance akan dialihkan ke zona lain dalam region yang Anda pilih.ZONAL
: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.
Untuk 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 project ID atau nomor yang diizinkan yang dipisahkan koma dari tempat endpoint Private Service Connect dapat terhubung ke instance Cloud SQL.
Jika project tidak ada dalam daftar ini, Anda tidak dapat membuat endpoint Private Service Connect dalam project untuk terhubung ke instance.
- MACHINE_TYPE: jenis mesin untuk instance.
- VPC_NETWORK: jalur ke jaringan VPC tempat endpoint Private Service Connect perlu dibuat.
SERVICE_PROJECT: project tempat endpoint Private Service Connect dibuat. Jika jaringan VPC bukan VPC bersama, jaringan ini hanya dapat menjadi project host untuk jaringan. Jika ini adalah VPC bersama, project tersebut dapat berupa project host atau project layanan.
Setiap project yang Anda tentukan dalam parameter koneksi otomatis akan otomatis ditambahkan ke project yang diizinkan. Jika ingin, untuk project yang ingin Anda buat endpoint Private Service Connect-nya secara manual, Anda dapat menambahkan project ini ke daftar project yang diizinkan.
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": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK" } ], "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" }
Mengambil endpoint
Dengan mengambil alamat IP internal, yang merupakan endpoint Private Service Connect untuk instance, Anda dapat menggunakan endpoint ini untuk terhubung ke instance.
gcloud
Untuk melihat informasi tentang instance, termasuk alamat IP yang merupakan endpoint Private Service Connect untuk instance, gunakan perintah gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
Lakukan penggantian berikut:
- INSTANCE_NAME: nama instance Cloud SQL. Jika instance ini mengaktifkan Private Service Connect, endpoint Private Service Connect di jaringan VPC dapat terhubung ke instance tersebut.
- PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
Dalam respons, catat nilai yang muncul di samping kolom pscConfig:pscAutoConnections:ipAddress
. Nilai ini adalah alamat IP internal yang juga merupakan endpoint Private Service Connect untuk instance.
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 Cloud SQL. Jika instance ini mengaktifkan Private Service Connect, endpoint Private Service Connect di jaringan VPC dapat terhubung ke instance tersebut.
Metode HTTP dan URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "MYSQL_8_0", "settings": { "authorizedGaeApplications": [], "tier": "db-custom-2-7680", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": { consumerNetwork:"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK", consumerNetworkStatus:"CONSUMER_NETWORK_STATUS", consumerProject:"SERVICE_PROJECT", ipAddress:"IP_ADDRESS", status:"STATUS" }, "pscEnabled": true }, "ipv4Enabled": false }, }
Kolom berikut tersedia untuk instance yang telah mengaktifkan Private Service Connect:
allowedConsumerProjects
: daftar project yang diizinkan untuk instance. Anda dapat membuat endpoint Private Service Connect dari jaringan VPC mana pun dalam project ini ke lampiran layanan instance.pscAutoConnections
: jaringan VPC yang diizinkan, status kebijakan koneksi layanan, dan status alamat IP yang merupakan endpoint untuk instance.pscEnabled
: apakah instance telah mengaktifkan Private Service Connect.
Untuk melihat cara membuat permintaan REST API yang mendasarinya untuk tugas ini, lihat halaman instances:get.
Membuat endpoint secara manual
Beberapa bagian berikutnya menjelaskan cara membuat endpoint Private Service Connect secara manual.
Membuat instance Cloud SQL
Anda dapat membuat instance dengan Private Service Connect yang diaktifkan untuk instance tersebut menggunakan gcloud CLI, Terraform, atau API.
gcloud
Untuk membuat instance dengan Private Service Connect yang diaktifkan untuk instance tersebut, 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 \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --enable-bin-log
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 project ID atau nomor yang diizinkan yang dipisahkan koma dari tempat endpoint Private Service Connect dapat terhubung ke instance Cloud SQL.
Jika project tidak ada dalam daftar ini, Anda tidak dapat membuat endpoint Private Service Connect dalam project untuk terhubung ke instance.
- 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 akan dialihkan ke zona lain dalam region yang Anda pilih.ZONAL
: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.
Untuk 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.
- MACHINE_TYPE: jenis mesin untuk instance.
- DATABASE_VERSION: versi database untuk instance (misalnya,
MYSQL_8_0
).
Terraform
Untuk membuat instance dengan Private Service Connect yang diaktifkan untuk instance tersebut, gunakan google_sql_database_instance
resource Terraform.
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- 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.
- AVAILABILITY_TYPE: memungkinkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
REGIONAL
: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance akan dialihkan ke zona lain dalam region yang Anda pilih.ZONAL
: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.
Untuk 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 project ID atau nomor yang diizinkan yang dipisahkan koma dari tempat endpoint Private Service Connect dapat terhubung ke instance Cloud SQL.
Jika project tidak ada dalam daftar ini, Anda tidak dapat membuat endpoint Private Service Connect dalam project untuk terhubung ke instance.
- MACHINE_TYPE: jenis mesin 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": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "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 yang diaktifkan, dapatkan URI lampiran layanan dan gunakan untuk membuat endpoint Private Service Connect.
gcloud
Untuk melihat informasi ringkasan tentang instance dengan Private Service Connect yang diaktifkan, 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_address
resource Terraform.
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- 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 tersebut.
gcloud
Untuk 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.
Untuk memverifikasi bahwa alamat IP sudah dicadangkan, gunakan perintah
gcloud compute addresses list
:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
Dalam respons, verifikasi bahwa status
RESERVED
muncul untuk alamat IP.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
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, pastikan status
ACCEPTED
muncul untuk kolompscConnectionStatus
. Endpoint dapat terhubung ke lampiran layanan.
Terraform
Untuk membuat endpoint Private Service Connect, gunakan google_sql_database_instance
resource Terraform.
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- 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
Cadangkan alamat IP internal untuk endpoint Private Service Connect.
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, verifikasi bahwa status
RESERVED
muncul untuk alamat IP.Buat endpoint Private Service Connect dan arahkan ke lampiran layanan Cloud SQL.
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, pastikan status
ACCEPTED
muncul untuk kolompscConnectionStatus
. 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, Cloud SQL Language Connector, 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 memberikan nama DNS yang disarankan. Sebaiknya buat data DNS di zona DNS pribadi pada jaringan VPC yang sesuai. Hal ini memberikan cara yang konsisten untuk menggunakan Proxy Auth Cloud SQL guna terhubung dari berbagai jaringan.
gcloud
Untuk melihat informasi ringkasan tentang instance Cloud SQL, termasuk nama DNS instance tersebut, 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
Dalam 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.
.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) - NETWORK_NAME: nama jaringan VPC
Setelah Anda membuat endpoint Private Service Connect, untuk membuat data DNS di zona, 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 ditetapkan 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 sepertirrdata1 rrdata2 rrdata3
(misalnya,10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD: nama data DNS. Data ini ditetapkan ke nama DNS yang Anda ambil dari instance Cloud SQL sebelumnya dalam prosedur ini (misalnya,
REST
- Dapatkan nama DNS instance Cloud SQL.
- PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
- INSTANCE_NAME: nama instance
- Buat zona DNS pribadi. Zona ini dikaitkan dengan jaringan VPC yang digunakan untuk terhubung ke instance Cloud SQL melalui endpoint Private Service Connect.
- 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) - NETWORK_NAME: nama jaringan VPC
- Setelah Anda membuat endpoint Private Service Connect, buat data DNS di zona.
- PROJECT_ID: ID atau nomor project project Google Cloud yang berisi zona DNS.
- ZONE_NAME: nama zona.
- DNS_RECORD: nama data DNS. Data ini ditetapkan 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 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 sepertirrdata1 rrdata2 rrdata3
(misalnya,10.1.2.3 10.2.3.4 10.3.4.5
).
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
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 (.
).
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
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" }
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
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, lakukan hal berikut:
- Buat endpoint Private Service Connect.
- Konfirmasi bahwa lampiran layanan instance menerima endpoint. Untuk memverifikasi bahwa status endpoint adalah
ACCEPTED
, periksa statusnya. - Mengonfigurasi zona DNS terkelola dan data DNS.
Setelah Anda memenuhi kondisi ini, gunakan data DNS untuk terhubung ke instance dari jaringan VPC mana pun tempat Anda membuat endpoint.
mysql --host=DNS_RECORD --user=USERNAME -p
Lakukan penggantian berikut:
- DNS_RECORD: data DNS endpoint
- USERNAME: nama pengguna yang terhubung ke instance
Menghubungkan langsung melalui alamat IP internal
Sebelum terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan, lakukan hal berikut:
- Buat endpoint Private Service Connect.
- Konfirmasi bahwa lampiran layanan instance menerima endpoint. Untuk memverifikasi bahwa status endpoint adalah
ACCEPTED
, periksa statusnya.
Setelah Anda memenuhi kondisi ini, gunakan alamat IP endpoint untuk mengakses instance dari jaringan VPC mana pun tempat Anda membuat endpoint.
Ambil alamat IP internal endpoint Private Service Connect menggunakan nama alamat IP endpoint.
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
Dalam respons, pastikan 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 terkait dengan kolom
address
.Atau, ambil alamat IP internal endpoint Private Service Connect menggunakan lampiran layanan instance Cloud SQL.
gcloud
Untuk mengambil alamat IP, gunakan perintah
gcloud compute forwarding-rules list
:gcloud compute forwarding-rules list \ --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \ --project=PROJECT_ID
Lakukan penggantian berikut:
- REGION_NAME: nama region untuk endpoint
- PROJECT_ID: ID atau nomor project project Google Cloud yang berisi endpoint
- SERVICE_ATTACHMENT_NAME: nama lampiran layanan untuk instance Cloud SQL
Dalam respons, pastikan alamat IP muncul. Ini adalah alamat IP internal.
Berikut adalah contoh respons:
NAME
REGION
IP_ADDRESS
TARGET
myInstance
us-central1
10.10.10.10
us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8
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
- SERVICE_ATTACHMENT_PROJECT_ID: ID atau nomor project project Google Cloud yang berisi lampiran layanan
- SERVICE_ATTACHMENT_NAME: nama lampiran layanan untuk instance Cloud SQL
Metode HTTP dan URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "compute#forwardingRuleList", "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules", "items": [ { "kind": "compute#forwardingRule", "id": "FORWARDING_RULE_ID", "creationTimestamp": "2023-10-31T13:04:37.168-07:00", "name": "FORWARDING_RULE_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/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "PSC_CONNECTION_ID", "pscConnectionStatus": "CLOSED", "allowPscGlobalAccess": true } ], "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules" }
Alamat IP internal adalah nilai yang terkait dengan kolom
IPAddress
.-
Untuk terhubung ke instance Cloud SQL, gunakan alamat IP internal.
mysql --host=IP_ADDRESS --user=USERNAME -p
Lakukan penggantian berikut:
- IP_ADDRESS: alamat IP endpoint
- USERNAME: nama pengguna yang terhubung ke instance
Terhubung menggunakan Proxy Auth Cloud SQL
Proxy Auth Cloud SQL adalah konektor yang memberikan 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, yang disediakan untuk instance. Pencatatan DNS adalah pemetaan antara sumber daya DNS dan nama domain.
Jika Anda terhubung melalui Private Service Connect, Proxy Auth Cloud SQL versi v2.5.0 atau yang lebih baru diperlukan.
Download dan instal Proxy Auth Cloud SQL
Untuk terhubung ke instance dengan Private Service Connect yang diaktifkan, Anda harus mendownload dan menginstal biner untuk Proxy Auth Cloud SQL. Biner yang Anda download bergantung pada sistem operasi, dan apakah sistem operasi tersebut 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
Proxy Auth Cloud SQL mendukung koneksi ke instance dengan Private Service Connect yang diaktifkan. Untuk informasi selengkapnya, lihat Memulai Proxy Auth Cloud SQL.
- Melihat informasi ringkasan tentang instance Cloud SQL, termasuk nama koneksi instance tersebut.
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 menggunakan 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 menggunakan format
PROJECT_ID:REGION_NAME:INSTANCE_NAME
. - Salin nama koneksi instance.
Luncurkan Proxy Auth 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, yang disediakan untuk instance. 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.
- Konektor Python Cloud SQL (v1.3.0 atau yang lebih baru)
- Konektor Cloud SQL Go (v1.4.0 atau yang lebih baru)
- Cloud SQL Java Connector (v1.13.0 atau yang lebih baru)
- Konektor Node.js Cloud SQL (v0.5.0 atau yang lebih baru)
Menghubungkan dari App Engine Standard, Cloud Run, atau fungsi Cloud Run
Untuk terhubung ke instance Cloud SQL dengan Private Service Connect yang diaktifkan, Anda dapat menggunakan App Engine Standard, Cloud Run, atau fungsi Cloud Run.
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 sebagai alamat IP tujuan.
gcloud
Untuk membuat pengujian konektivitas untuk 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 MySQL, nomor port-nya adalah
3306
.
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 MySQL, nomor port-nya adalah
3306
. - 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 dengan Private Service Connect yang diaktifkan.
- Anda tidak dapat menggunakan backend Private Service Connect untuk instance yang mengaktifkan Private Service Connect.
- Flag berikut tidak valid atau terpengaruh:
--no-assign-ip:
gunakan 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 resmi--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 mengonfigurasi instance dengan Private Service Connect yang diaktifkan untuk menggunakan akses layanan pribadi atau koneksi IP eksternal.
- Anda tidak dapat mengaktifkan koneksi IP eksternal pada instance dengan Private Service Connect yang diaktifkan.
- 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, Database Migration Service, atau Datastream 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 resmi tidak didukung.
- Jika project jaringan Anda berisi instance yang menggunakan arsitektur jaringan Cloud SQL lama, Anda tidak dapat membuat instance Private Service Connect. Cloud SQL menyediakan alat untuk membantu Anda mengupgrade instance dari arsitektur jaringan lama ke arsitektur jaringan baru. Untuk informasi selengkapnya atau memeriksa arsitektur jaringan instance Cloud SQL di project Anda dan melakukan upgrade yang diperlukan, lihat Mengupgrade instance ke arsitektur jaringan baru.
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. - 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 }
- Verifikasi bahwa status endpoint adalah
ACCEPTED
. Jika statusnya adalahPENDING
, 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 Private Service Connect yang diaktifkan.
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 Private Service Connect yang diaktifkan.
- Pelajari lebih lanjut cara melihat informasi ringkasan tentang instance dengan Private Service Connect yang diaktifkan.
- Pelajari lebih lanjut cara menetapkan dan menghapus ketersediaan tinggi untuk instance dengan Private Service Connect yang diaktifkan.
- Pelajari lebih lanjut cara mengedit dan menghapus instance dengan Private Service Connect yang diaktifkan.