Halaman ini berisi informasi dan contoh untuk menghubungkan ke instance Cloud SQL dari layanan yang berjalan di Cloud Run.
Untuk petunjuk langkah demi langkah cara menjalankan aplikasi web sampel Cloud Run yang terhubung ke Cloud SQL, lihat panduan memulai untuk terhubung dari Cloud Run ini.
Cloud SQL adalah layanan database yang terkelola sepenuhnya untuk membantu Anda menyiapkan, memelihara, mengelola, dan mengatur database relasional di cloud.
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda menjalankan container secara langsung di atas infrastruktur Google Cloud.
Menyiapkan instance Cloud SQL
- Aktifkan Cloud SQL Admin API di project Google Cloud yang menjadi sumber koneksi, jika Anda
belum melakukannya:
- Buat instance Cloud SQL untuk PostgreSQL. Sebaiknya pilih
lokasi instance Cloud SQL di region yang sama dengan layanan Cloud Run Anda untuk mendapatkan latensi yang lebih baik, menghindari biaya jaringan, dan mengurangi risiko kegagalan lintas region.
Secara default, Cloud SQL menetapkan alamat IP publik ke instance baru. Anda juga memiliki opsi untuk menetapkan alamat IP pribadi. Untuk mengetahui informasi selengkapnya tentang opsi konektivitas untuk keduanya, lihat halaman Menghubungkan Ringkasan.
Mengonfigurasi Cloud Run
Langkah-langkah untuk mengonfigurasi Cloud Run bergantung pada jenis alamat IP yang Anda tetapkan ke instance Cloud SQL. Jika Anda mengarahkan semua traffic keluar melalui traffic keluar VPC Langsung atau konektor Akses VPC Serverless, gunakan alamat IP pribadi. Bandingkan kedua metode traffic keluar jaringan tersebut.IP Publik (default)
- Pastikan instance yang dibuat sebelumnya memiliki alamat IP publik. Anda dapat memverifikasi hal ini di halaman Ringkasan untuk instance Anda di konsol Google Cloud. Jika perlu menambahkan alamat IP, lihat Mengonfigurasi halaman IP publik untuk mendapatkan petunjuk.
- Dapatkan INSTANCE_CONNECTION_NAME untuk instance Anda. Ini dapat ditemukan
di halaman Overview untuk instance Anda di
Google Cloud Console atau dengan menjalankan
perintah berikut:
gcloud sql instances describe INSTANCE_NAME
. -
Konfigurasikan akun layanan untuk layanan Anda. Pastikan
akun layanan memiliki
peran dan izin
Cloud SQL yang sesuai untuk terhubung ke Cloud SQL.
-
Akun layanan untuk layanan Anda memerlukan salah satuperan IAM
berikut:
Cloud SQL Client
(Pilihan)Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
Seperti perubahan konfigurasi lainnya, menetapkan konfigurasi baru untuk koneksi Cloud SQL akan membuat revisi Cloud Run baru. Revisi berikutnya juga akan otomatis mendapatkan koneksi Cloud SQL ini, kecuali jika Anda membuat pembaruan eksplisit untuk mengubahnya.
Konsol
-
Mulai konfigurasi layanan:
- Jika Anda menambahkan koneksi Cloud SQL ke layanan baru:
Layanan Anda harus dimasukkan ke dalam container dan diupload ke Container Registry atau Artifact Registry. Jika Anda belum memilikinya, lihat petunjuk tentang membangun dan men-deploy container image.
- Jika Anda menambahkan koneksi Cloud SQL ke layanan yang ada:
- Klik nama layanan.
- Klik tab Edit dan Deploy Revisi Baru.
- Jika Anda menambahkan koneksi Cloud SQL ke layanan baru:
- Aktifkan koneksi ke instance Cloud SQL:
- Klik Container, Variables & Secrets, Connections, Security .
- Klik tab Container.
- Scroll ke bawah ke bagian Koneksi Cloud SQL
- Klik Tambahkan koneksi
- Klik tombol Aktifkan Admin Cloud SQL jika Anda belum mengaktifkan Cloud SQL Admin API.
- Jika Anda menambahkan koneksi ke instance Cloud SQL di project Anda, pilih instance Cloud SQL yang diinginkan dari menu drop-down.
- Jika Anda menggunakan instance Cloud SQL dari project lain, pilih string koneksi kustom pada menu dropdown, lalu masukkan nama lengkap koneksi instance dalam format PROJECT-ID:REGION:INSTANCE-ID.
- Jika Anda menghapus koneksi, arahkan kursor ke sebelah kanan koneksi untuk menampilkan ikon Sampah, lalu klik ikon tersebut.
-
Klik Buat atau Deploy.
Command line
Sebelum menggunakan salah satu perintah di bawah, lakukan penggantian berikut:
- IMAGE dengan image yang Anda deploy
- SERVICE_NAME dengan nama layanan Cloud Run Anda
-
INSTANCE_CONNECTION_NAME dengan nama koneksi instance dari instance Cloud SQL, atau daftar nama koneksi yang dipisahkan koma.
Jika Anda men-deploy container baru, gunakan perintah berikut:
gcloud run deploy \ --image=IMAGE \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Jika Anda mengupdate layanan yang sudah ada, gunakan perintah berikut:gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Terraform
Kode berikut membuat container Cloud Run dasar, dengan instance Cloud SQL yang terhubung.
-
Terapkan perubahan dengan memasukkan
terraform apply
. - Verifikasi perubahan dengan memeriksa layanan Cloud Run, mengklik tab Revisi, lalu tab Koneksi.
IP Pribadi
Jika akun layanan yang memberi otorisasi merupakan project yang berbeda dengan project yang berisi instance Cloud SQL, lakukan hal berikut:
- Di kedua project, aktifkan Cloud SQL Admin API.
- Untuk akun layanan dalam project yang berisi instance Cloud SQL, tambahkan izin IAM.
- Pastikan instance Cloud SQL yang dibuat sebelumnya memiliki alamat IP pribadi. Untuk menambahkan alamat IP internal, lihat Mengonfigurasi IP pribadi.
- Konfigurasikan metode traffic keluar Anda agar terhubung ke jaringan VPC yang sama dengan instance Cloud SQL Anda. Perhatikan kondisi berikut:
- Traffic keluar VPC langsung dan Akses VPC Tanpa Server mendukung komunikasi ke jaringan VPC yang terhubung menggunakan Cloud VPN dan Peering Jaringan VPC.
- Traffic keluar VPC Langsung dan Akses VPC Tanpa Server tidak mendukung jaringan lama.
- Kecuali Anda menggunakan VPC Bersama, konektor harus memiliki project dan region yang sama dengan resource yang menggunakannya, meskipun konektor dapat mengirimkan traffic ke resource di region yang berbeda.
- Hubungkan menggunakan alamat IP pribadi dan port
5432
instance Anda.
Menghubungkan ke Cloud SQL
Setelah mengonfigurasi Cloud Run, Anda dapat terhubung ke instance Cloud SQL.
IP Publik (default)
Untuk jalur IP publik, Cloud Run menyediakan enkripsi dan terhubung menggunakan Proxy Auth Cloud SQL dengan dua cara:
- Melalui soket Unix
- Dengan menggunakan konektor Cloud SQL
Menggunakan Secret Manager
Google merekomendasikan agar Anda menggunakan Secret Manager untuk menyimpan informasi sensitif seperti kredensial SQL. Anda dapat meneruskan secret sebagai variabel lingkungan atau memasangnya sebagai volume dengan Cloud Run.
Setelah membuat secret di Secret Manager, update layanan yang ada dengan perintah berikut:
Command line
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME --update-env-vars=INSTANCE_CONNECTION_NAME=INSTANCE_CONNECTION_NAME_SECRET \ --update-secrets=DB_USER=DB_USER_SECRET:latest \ --update-secrets=DB_PASS=DB_PASS_SECRET:latest \ --update-secrets=DB_NAME=DB_NAME_SECRET:latest
Terraform
Kode berikut membuat resource rahasia untuk menyimpan nilai pengguna, sandi, dan nama database dengan aman menggunakan google_secret_manager_secret
dan google_secret_manager_secret_version
. Perhatikan bahwa Anda harus mengupdate akun layanan komputasi project agar memiliki akses ke setiap secret.
Update resource Cloud Run utama untuk menyertakan secret baru.
Terapkan perubahan dengan memasukkan terraform apply
.
Contoh perintah menggunakan versi secret, latest; Namun, Google merekomendasikan untuk menyematkan secret ke versi tertentu, SECRET_NAME:v1.
IP Pribadi
Untuk jalur IP pribadi, aplikasi Anda terhubung langsung ke instance melalui jaringan VPC. Metode ini menggunakan TCP untuk terhubung langsung ke instance Cloud SQL tanpa menggunakan Proxy Auth Cloud SQL.
Terhubung dengan TCP
Hubungkan menggunakan alamat IP pribadi instance Cloud SQL Anda sebagai host dan port 5432
.
Python
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
Java
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
Catatan:
- CLOUD-SQL-CONNECTION-NAME harus ditampilkan sebagai <MY-PROJECT>:<INSTANCE-REGION><INSTANCE-NAME>
- Menggunakan argumen ipTypes=PRIVATE akan memaksa SocketFactory untuk terhubung dengan IP pribadi yang terkait dengan instance.
- Lihat persyaratan versi factory soket JDBC untuk file pom.xml di sini .
Node.js
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
Go
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
C#
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
Ruby
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
PHP
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
Praktik terbaik dan informasi lainnya
Anda dapat menggunakan Proxy Auth Cloud SQL saat menguji aplikasi Anda secara lokal. Lihat panduan memulai penggunaan Proxy Auth Cloud SQL mendapatkan petunjuk terperinci.
Anda juga dapat menguji menggunakan Proxy Cloud SQL melalui container Docker.
Kumpulan Koneksi
Koneksi ke database pokok dapat terputus, entah oleh server database itu sendiri, atau oleh infrastruktur platform. Sebaiknya gunakan library klien yang mendukung kumpulan koneksi yang secara otomatis menghubungkan kembali koneksi klien yang rusak. Untuk contoh yang lebih detail tentang cara menggunakan kumpulan koneksi, lihat halaman Mengelola koneksi database.Batas Koneksi
Baik Cloud SQL edisi MySQL maupun PostgreSQL menerapkan batas maksimum pada koneksi serentak, dan batas ini dapat bervariasi bergantung pada mesin database yang dipilih (lihat Kuota dan Batas Cloud SQL).Instance container Cloud Run dibatasi hingga 100 koneksi ke database Cloud SQL. Setiap instance layanan atau tugas Cloud Run dapat memiliki 100 koneksi ke database. Seiring meningkatnya skala layanan atau tugas ini, jumlah total koneksi per deployment dapat bertambah.
Anda dapat membatasi jumlah maksimum koneksi yang digunakan per instance dengan menggunakan kumpulan koneksi. Untuk contoh yang lebih detail mengenai cara membatasi jumlah koneksi, lihat halaman Mengelola koneksi database.
Batas Kuota API
Cloud Run menyediakan mekanisme yang terhubung menggunakan Proxy Auth Cloud SQL, yang menggunakan Cloud SQL Admin API. Batas kuota API berlaku untuk Proxy Auth Cloud SQL. Kuota Cloud SQL Admin API yang digunakan sekitar dua kali lipat jumlah instance Cloud SQL yang dikonfigurasi oleh jumlah instance Cloud Run dari layanan tertentu yang di-deploy pada satu waktu. Anda dapat membatasi atau meningkatkan jumlah instance Cloud Run untuk mengubah kuota API yang digunakan.Langkah selanjutnya
- Pelajari lebih lanjut tentang Cloud Run
- Pelajari lebih lanjut tentang membangun dan men-deploy image container.
- Lihat contoh lengkap di Python untuk menggunakan Cloud Run dengan PostgreSQL.