1. Pengantar
Terakhir Diperbarui: 06-05-2021
Memikirkan koneksi
Ada banyak jenis aplikasi dan framework di luar sana. Dalam codelab ini, kita akan membahas cara terhubung ke Cloud SQL dari aplikasi yang dijalankan di virtual machine terkelola di Google Compute Engine melalui alamat IP pribadi internal menggunakan Proxy Cloud SQL. Ini adalah cara yang sangat aman untuk menjalankan aplikasi stateful di Cloud. Anda meminimalkan eksposur ke internet dengan membatasi penggunaan IP pribadi saja, dan menggunakan Proxy SQL yang menangani konektivitas SSL untuk Anda.
Salah satu kasus penggunaan umum untuk hal ini adalah, misalnya, aplikasi lokal yang telah dipindahkan untuk berjalan di Cloud, bukan secara lokal.
Yang akan Anda bangun
Codelab ini sangat minimalis. Tujuannya adalah untuk memandu Anda memahami seluk-beluk bagian koneksi, tanpa terlalu memikirkan aplikasi itu sendiri. Dalam kondisi ideal, menghubungkan ke Cloud SQL sama seperti menghubungkan ke instance database SQL lainnya, sehingga Anda dapat menggunakan apa yang Anda buat dalam codelab ini, dan menerapkannya ke aplikasi produksi apa pun.
Petunjuk ini akan mencakup panduan untuk melakukan berbagai hal di konsol GCP, serta menyertakan perintah gcloud yang setara untuk digunakan di CLI atau otomatisasi.
Langkah-langkahnya adalah:
- Buat Akun Layanan minimal untuk mengaktifkan koneksi ke instance Cloud SQL
- Membuat VM di Google Compute Engine (GCE)
- Buat instance Cloud SQL (tutorial ini menggunakan Postgres, tetapi berfungsi serupa untuk MySQL atau SQL Server)
- Download dan jalankan Proxy Cloud SQL di instance GCE
Yang Anda butuhkan
- Akun GCP tempat Anda memiliki izin untuk mengaktifkan API dan membuat layanan
2. Membuat akun layanan
Akun layanan digunakan untuk memberikan izin penggunaan layanan yang berbeda dalam project GCP Anda. Untuk codelab ini, kita memerlukannya agar dapat memberikan izin kepada Proxy Cloud SQL untuk terhubung ke instance Cloud SQL kita.
Di Konsol
Buka halaman akun layanan IAM dan klik tombol
di bagian atas halaman.
Beri nama dan ID yang unik untuk akun layanan Anda, lalu klik BUAT.
Di halaman berikutnya, klik menu drop-down untuk Memilih peran. Filter untuk "Cloud SQL" dan pilih peran Cloud SQL Client. Klik CONTINUE.
Klik SELESAI.
Menggunakan gcloud
Buat akun layanan:
gcloud iam service-accounts create <SERVICE_ACCOUNT_NAME> --display-name "<SERVICE_ACCOUNT_NAME> service account"
Tindakan ini akan membuat akun layanan, tetapi saat ini tidak ada peran/izin yang ditetapkan untuk akun tersebut. Untuk menetapkan peran yang sesuai, jalankan:
gcloud projects add-iam-policy-binding <GCP PROJECT ID> --member serviceAccount:<SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com --role roles/cloudsql.client
Misalnya, jika akun layanan Anda diberi nama sa-test saat Anda membuatnya, dan project Anda adalah my-project-test, maka perintahnya adalah:
gcloud projects add-iam-policy-binding my-project-test --member serviceAccount:sa-test@my-project-test.iam.gserviceaccount.com --role roles/cloudsql.client
gcloud iam service-accounts keys create service-account.json --iam-account <SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com
3. Membuat VM Compute Engine
Google Compute Engine adalah layanan terkelola tempat mesin virtual akan berjalan yang akan menyimpan aplikasi yang ingin kita hubungkan. Dalam codelab ini, kita tidak akan membuat aplikasi, tetapi kita akan mengonfirmasi konektivitas dengan menjalankan psql.
Di Konsol
Buka halaman Google Compute Engine, lalu klik tombol
.
Ada banyak opsi di sini, satu-satunya hal yang perlu Anda lakukan adalah:
- Beri nama instance Anda
- Ubah
Machine typemenjadif1-micro - Di bagian Akses API dan identitas, ubah dropdown untuk
Service accountdariDefault compute service accountke yang Anda buat di langkah sebelumnya. - Klik Buat di bagian paling bawah halaman
Menggunakan gcloud
Akun layanan adalah nama lengkap akun layanan yang Anda buat sebelumnya, sehingga akan dalam format: <NAME>@<PROJECT>.iam.gserviceaccount.com.
gcloud compute instances create <INSTANCE NAME> --machine-type=f1-micro --zone=us-central1-b --service-account=<SERVICE ACCOUNT FULL NAME>
gcloud compute zones list
4. Membuat instance Cloud SQL
Cloud SQL adalah penawaran database relasional terkelola kami. Layanan ini mendukung MySQL, PostgreSQL, dan SQL Server. Untuk codelab ini, kita akan membuat database Postgres, tetapi petunjuknya serupa untuk ketiga database tersebut.
Di Konsol
Buka halaman Cloud SQL, lalu klik tombol
.
Seperti yang saya sebutkan, sebagian besar codelab ini bersifat umum untuk semua jenis SQL, tetapi untuk codelab ini, pilih PostgreSQL.
- Beri ID instance Anda
- Masukkan sandi untuk pengguna default (nama pengguna akan menjadi default untuk DB yang dipilih, misalnya
rootuntuk MySQL ataupostgresuntuk PostgreSQL) - Jika Anda mengubah region instance komputasi, Anda juga harus mengubah region di sini agar sesuai.
- Scroll ke bawah, lalu klik
show configuration options - Luaskan bagian
Connectivity - Hapus centang pada opsi untuk
Public IPdan centang kotakPrivate IP - Pastikan
defaultdipilih di dropdown yang muncul saat IP Pribadi dicentang - Scroll ke bawah, lalu klik Buat
Biasanya, instance memerlukan waktu beberapa menit untuk dimulai.
Menggunakan gcloud
Karena kita tidak memiliki perintah yang bagus untuk mengaktifkan API dari sini, kita harus melakukannya secara manual
gcloud services enable servicenetworking.googleapis.com
Selanjutnya, kita perlu mengaktifkan konektivitas layanan pribadi di jaringan VPC default. Langkah pertama untuk melakukannya adalah mengalokasikan rentang alamat IP bernama untuk digunakan instance kita.
gcloud compute addresses create sql-codelab-allocation --global --purpose=VPC_PEERING --prefix-length=24 --network=default
Selanjutnya, tetapkan rentang IP tersebut ke layanan internal kita (proses ini memerlukan waktu sekitar satu menit).
gcloud services vpc-peerings update --service=servicenetworking.googleapis.com --network=default --project=<PROJECT ID> --ranges=sql-codelab-allocation --force
Terakhir, pembuatan instance itu sendiri saat ini hanya tersedia dengan versi beta. Kombinasi --no-assign-ip dan --network=default yang memungkinkan konektivitas IP pribadi. Saat ini, tidak ada cara untuk mengaktifkan IP Pribadi dan IP Publik secara bersamaan. Jadi, jika Anda memerlukan akses publik, Anda harus mengedit instance setelah pembuatan. Proses ini membutuhkan waktu beberapa menit hingga selesai.
gcloud beta sql instances create test-sql-codelab-00 --no-assign-ip --database-version=POSTGRES_11 --tier=db-f1-micro --region=us-central1 --network=default --root-password=<PASSWORD>
5. Menyiapkan dan menjalankan Proxy Cloud SQL
Setelah terhubung ke VM, kita akan memerlukan string koneksi instance. Pertama, kita akan mengambilnya, lalu kita akan terhubung ke VM itu sendiri melalui SSH. Petunjuk untuk bagian ini akan ada di bagian masing-masing untuk Konsol vs. gcloud, dan kemudian bagian lainnya akan berupa perintah yang dijalankan dari shell di VM di bagiannya sendiri.
Di Konsol
Buka di sini, lalu klik nama instance Cloud SQL Anda.
Scroll ke bawah sedikit, lalu salin Connection name ke suatu tempat untuk digunakan nanti.
Buka halaman daftar instance Google Compute Engine, lalu temukan baris dengan VM Anda.
Di kolom Connect, klik tombol SSH dan jendela terpisah akan terbuka yang terhubung secara aman ke mesin virtual.
Lewati bagian Using gcloud untuk petunjuk selanjutnya karena sama untuk keduanya.
Menggunakan gcloud
Ganti <INSTANCE NAME> dengan nama instance Cloud SQL Anda:
gcloud sql instances describe <INSTANCE NAME> | grep connectionName
Simpan nama koneksi instance untuk digunakan nanti.
Anda harus mengganti <ZONE> dengan zona yang digunakan saat Anda membuat instance. Jika Anda tidak mengubahnya, maka setelannya adalah us-central1-b. Selain itu, ganti <INSTANCE_NAME> dengan apa pun yang Anda tentukan sebelumnya.
gcloud compute ssh --zone <ZONE> <INSTANCE_NAME>
Setelah terhubung ke VM
Pertama, kita perlu mendownload proxy. Bergantung pada sistem operasi Anda. Jika Anda tidak mengubah OS saat pembuatan VM, maka OS-nya adalah Linux dan Anda dapat menggunakan:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy
Jika Anda telah mengganti sistem operasi, Anda dapat membuka di sini untuk mendapatkan perintah yang tepat guna mendapatkan proxy untuk OS Anda.
Untuk menjalankan proxy, ambil nama koneksi instance yang Anda salin dari detail instance Cloud SQL untuk menggantikan <INSTANCE_CONNECTION_NAME>. Perhatikan juga, nomor port tcp dapat berubah jika Anda tidak menggunakan db Postgres, atau jika Anda telah mengubah port default yang digunakan db untuk memproses permintaan.
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &
6. Menguji koneksi dan menyelesaikan
Seperti yang disebutkan sebelumnya, jika Anda memiliki aplikasi yang ingin diaktifkan di instance GCE untuk diuji, tentu saja tidak masalah. Untuk codelab ini, kita akan menginstal psql dan menggunakan klien tersebut untuk memverifikasi bahwa kita dapat terhubung ke database.
Dari sesi SSH di VM:
sudo apt-get install postgresql-client
psql "host=127.0.0.1 port=5432 sslmode=disable user=postgres"
Kemudian, tentukan sandi pengguna default yang Anda siapkan saat membuat instance Cloud SQL.
Selamat! Jika semuanya berjalan lancar, Anda akan melihat perintah Postgres dan dapat menjalankan perintah terhadap database Anda.
Apa selanjutnya?
Lihat beberapa codelab ini...