Halaman ini berisi informasi dan contoh untuk terhubung ke instance Cloud SQL dari layanan yang berjalan di Cloud Build.
Cloud SQL adalah layanan database yang terkelola sepenuhnya untuk membantu Anda menyiapkan, memelihara, mengelola, dan mengatur database relasional Anda di cloud.
Cloud Build adalah layanan yang mengeksekusi build Anda di infrastruktur Google Cloud.
Siapkan 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 MySQL. 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.
Konfigurasi Cloud Build
Langkah-langkah untuk mengonfigurasi Cloud Build bergantung pada jenis alamat IP yang Anda tetapkan ke instance Cloud SQL.IP Publik (default)
Pastikan bahwa
akun layanan Cloud Build Anda memiliki
peran dan izin IAM
yang diperlukan untuk terhubung ke instance Cloud SQL.
Akun layanan Cloud Build tercantum di halaman
IAM
di konsol Google Cloud sebagai Akun utama
[YOUR-PROJECT-NUMBER]@cloudbuild.gserviceaccount.com
.
Untuk melihat akun layanan ini di Konsol Google Cloud, centang kotak Include Google-available role Grants.
Akun layanan Cloud Build Anda memerlukan salah satu peran IAM berikut:
Cloud SQL Client
(Pilihan)Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
Jika akun layanan Cloud Build termasuk dalam project yang berbeda dengan instance Cloud SQL, izin Cloud SQL Admin API dan IAM perlu ditambahkan untuk kedua project.
IP Pribadi
Untuk terhubung ke instance Cloud SQL Anda melalui IP pribadi, Cloud Build harus berada dalam jaringan VPC yang sama dengan instance Cloud SQL Anda. Untuk mengonfigurasinya:
- Siapkan koneksi pribadi antara jaringan VPC instance Cloud SQL Anda dan jaringan produsen layanan.
- Buat kumpulan pribadi Cloud Build.
Setelah dikonfigurasi, aplikasi Anda akan dapat terhubung langsung menggunakan
alamat IP pribadi instance dan port 3306
Anda saat build Anda dijalankan di kumpulan tersebut.
Menghubungkan ke Cloud SQL
Setelah Anda mengonfigurasi Cloud Build, Anda dapat terhubung ke instance Cloud SQL Anda.
IP Publik (default)
Untuk jalur IP publik, Cloud Build mendukung soket Unix dan TCP.
Anda dapat menggunakan Proxy Auth Cloud SQL dalam langkah Cloud Build untuk mengizinkan koneksi ke database Anda. Konfigurasi ini:
- Mem-build container Anda dan mengirimkannya ke Container Registry.
- Mem-build container kedua, dengan menyalin di biner Proxy Auth Cloud SQL.
- Container yang di-build oleh Cloud Build tidak perlu dikirim ke registry mana pun, dan akan dihapus saat build selesai.
- Dengan menggunakan container kedua, memulai Proxy Auth Cloud SQL dan menjalankan perintah migrasi apa pun.
Contoh kode Cloud Build di atas menunjukkan cara Anda menjalankan skrip migrate hipotetis setelah men-deploy aplikasi contoh di atas untuk memperbarui database Cloud SQL-nya menggunakan Proxy Auth Cloud SQL dan Cloud Build. Untuk menjalankan contoh kode Cloud Build ini langkah-langkah penyiapan yang diperlukan adalah:
- Buat nama folder
sql-proxy
- Buat file
Dockerfile
di foldersql-proxy
dengan satu baris kode berikut untuk konten filenya:FROM gcr.io/gcp-runtimes/ubuntu_20_0_4
- Buat file
cloudbuild.yaml
di foldersql-proxy
. - Update file
cloudbuild.yaml
:- Salin contoh kode Cloud Build di atas dan tempelkan ke file
cloudbuild.yaml
. - Gunakan koneksi TCP atau koneksi soket Unix dengan menghapus blok kode untuk metode koneksi yang tidak digunakan.
- Update kode contoh
_DATABASE_TYPE
dalam bloksubstitutions:
menjadimysql
. - Jika Anda menggunakan koneksi TCP, perbarui kode contoh
_DATABASE_PORT
dalam bloksubstitutions:
menjadi3306
, yang merupakan port yang digunakan oleh MySQL. - Ganti nilai placeholder berikut dengan nilai yang digunakan dalam project Anda:
mydatabase
myuser
myinstance
- Salin contoh kode Cloud Build di atas dan tempelkan ke file
- Buat secret bernama
database_password
di Secret Manager.- Agar akun layanan Cloud Build dapat mengakses secret ini, Anda harus memberinya peran Secret Manager Secret Accessor di IAM. Lihat Menggunakan secret dari Secret Manager untuk informasi selengkapnya.
- Buat file skrip migrate.py di folder
sql-proxy
.- Skrip ini dapat merujuk ke variabel lingkungan berikut dan secret yang dibuat di file
cloudbuild.yaml
menggunakan contoh berikut:os.getenv('DATABASE_NAME')
os.getenv('DATABASE_USER')
os.getenv('DATABASE_PASS')
os.getenv('INSTANCE_CONNECTION_NAME')
- Untuk merujuk variabel yang sama dari skrip Bash (misalnya:
migrate.sh
) gunakan contoh berikut:$DATABASE_NAME
$DATABASE_USER
$DATABASE_PASS
$INSTANCE_CONNECTION_NAME
- Skrip ini dapat merujuk ke variabel lingkungan berikut dan secret yang dibuat di file
- Jalankan perintah
gcloud builds submit
berikut untuk mem-build container dengan Proxy Auth Cloud SQL, memulai Proxy Auth Cloud SQL, dan menjalankan skripmigrate.py
:gcloud builds submit --config cloudbuild.yaml
IP Pribadi
Untuk jalur IP pribadi, aplikasi Anda terhubung langsung ke instance melalui kumpulan pribadi. 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 3306
.
Python
Untuk menemukan cuplikan ini dalam konteks aplikasi web, lihat README pada GitHub.
Java
Untuk melihat cuplikan ini dalam konteks aplikasi web, lihat README di GitHub.
Catatan:
- INSTANCE_CONNECTION_NAME harus direpresentasikan sebagai <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- Menggunakan argumen ipTypes=PRIVATE akan memaksa SocketFactory untuk terhubung dengan IP pribadi yang terkait dengan sebuah 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.
Kemudian Anda dapat membuat langkah Cloud Build untuk menjalankan kode Anda secara langsung.
Contoh kode Cloud Build di atas menunjukkan cara Anda menjalankan skrip migrate hipotetis setelah men-deploy aplikasi contoh di atas untuk memperbarui database Cloud SQL-nya menggunakan Cloud Build. Untuk menjalankan contoh kode Cloud Build ini langkah-langkah penyiapan yang diperlukan adalah:
- Buat nama folder
sql-private-pool
- Buat file
Dockerfile
di foldersql-private-pool
dengan satu baris kode berikut untuk konten filenya:FROM gcr.io/gcp-runtimes/ubuntu_20_0_4
- Buat file
cloudbuild.yaml
di foldersql-private-pool
. - Update file
cloudbuild.yaml
:- Salin contoh kode Cloud Build di atas dan tempelkan ke file
cloudbuild.yaml
. - Ganti nilai placeholder berikut dengan nilai yang digunakan dalam project Anda:
mydatabase
myuser
databasehost
, dalam bentukhost:port
.
- Salin contoh kode Cloud Build di atas dan tempelkan ke file
- Buat secret bernama
database_password
di Secret Manager.- Agar akun layanan Cloud Build dapat mengakses secret ini, Anda harus memberinya peran Secret Manager Secret Accessor di IAM. Lihat Menggunakan secret dari Secret Manager untuk informasi selengkapnya.
- Buat file skrip migrate.py di folder
sql-proxy
.- Skrip ini dapat merujuk ke variabel lingkungan berikut dan secret yang dibuat di file
cloudbuild.yaml
menggunakan contoh berikut:os.getenv('DATABASE_NAME')
os.getenv('DATABASE_USER')
os.getenv('DATABASE_PASS')
os.getenv('DATABASE_HOST')
- Untuk merujuk variabel yang sama dari skrip Bash (misalnya:
migrate.sh
) gunakan contoh berikut:$DATABASE_NAME
$DATABASE_USER
$DATABASE_PASS
$DATABASE_HOST
- Skrip ini dapat merujuk ke variabel lingkungan berikut dan secret yang dibuat di file
- Jalankan perintah
gcloud builds submit
berikut untuk mem-build container dengan Proxy Auth Cloud SQL, memulai Proxy Auth Cloud SQL, dan menjalankan skripmigrate.py
:gcloud builds submit --config cloudbuild.yaml
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.
Migrasi skema database
Dengan mengonfigurasi Cloud Build agar terhubung ke Cloud SQL, Anda dapat menjalankan tugas migrasi skema database di Cloud Build menggunakan kode yang sama dengan yang akan Anda deploy ke platform serverless lainnya.
Menggunakan Secret Manager
Anda dapat menggunakan Secret Manager untuk menyertakan informasi sensitif dalam build Anda.