1. Pengantar
Terakhir diperbarui: 06-05-2021
Mempertimbangkan hubungan
Ada banyak jenis aplikasi dan kerangka kerja di luar sana. Dalam codelab ini, kita akan membahas cara menghubungkan 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 paparan 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 digeser untuk berjalan di Cloud, bukan secara lokal.
Yang akan Anda bangun
Codelab ini sangat minimalis. Idenya adalah untuk memandu Anda memahami komponen-komponen sambungan, tanpa terlalu memikirkan aplikasi itu sendiri. Idealnya, menghubungkan ke Cloud SQL sama seperti menghubungkan ke instance database SQL lainnya sehingga Anda harus dapat mengambil apa yang Anda buat dalam codelab ini, dan menerapkannya ke aplikasi produksi apa pun.
Petunjuk ini akan mencakup panduan cara melakukan berbagai hal di konsol GCP, serta menyertakan perintah gcloud yang setara untuk digunakan di CLI atau otomatisasi.
Setiap langkah tersebut adalah:
- Buat Akun Layanan minimal untuk mengaktifkan koneksi ke instance Cloud SQL
- Membuat VM di Google Compute Engine (GCE)
- Membuat 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 yang izinnya Anda miliki 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.
Di Konsol
Buka halaman akun layanan IAM dan klik tombol di bagian atas halaman.
Beri akun layanan Anda nama dan ID yang unik, 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 akun tidak memiliki peran/izin yang ditetapkan ke 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
Mis. Jika akun layanan Anda diberi nama sa-test
saat Anda membuatnya, dan project Anda adalah my-project-test
, 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 virtual machine akan berjalan, yang akan menyimpan aplikasi yang ingin kita hubungkan. Dalam codelab ini, kita tidak membangun aplikasi, tetapi akan mengonfirmasi konektivitas dengan menjalankan psql.
Di Konsol
Buka halaman Google Compute Engine dan klik tombol .
Ada banyak opsi di sini, yang Anda perlukan hanyalah:
- Beri nama instance Anda
- Ubah
Machine type
menjadif1-micro
- Di bagian Identitas dan Akses API, ubah dropdown untuk
Service account
dariDefault compute service account
menjadi menu yang Anda buat di langkah sebelumnya. - Klik Buat jauh di bagian 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. Alat ini mendukung MySQL, PostgreSQL, dan SQL Server. Untuk codelab ini, kita akan membuat database Postgres, tetapi petunjuk untuk ketiganya sama.
Di Konsol
Buka halaman Cloud SQL, lalu klik tombol .
Seperti yang saya sebutkan, sebagian besar codelab ini bersifat umum untuk semua ragam SQL, tetapi untuk codelab ini, pilih PostgreSQL.
- Berikan ID kepada instance Anda
- Masukkan sandi untuk pengguna default (nama pengguna akan menjadi default untuk DB yang dipilih, misalnya
root
untuk MySQL ataupostgres
untuk PostgreSQL) - Jika Anda mengubah region instance komputasi, Anda juga harus mengubah region di sini agar sesuai.
- Scroll ke bawah dan klik
show configuration options
- Luaskan bagian
Connectivity
- Hapus centang opsi untuk
Public IP
dan centang kotakPrivate IP
- Pastikan
default
dipilih di menu dropdown yang muncul saat IP Pribadi dicentang - Scroll ke bawah dan klik Buat
Biasanya perlu waktu beberapa menit untuk memulai instance.
Menggunakan gcloud
Karena tidak ada 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 pada jaringan VPC default kita. Langkah pertama untuk melakukannya adalah mengalokasikan rentang alamat IP yang telah diberi nama untuk digunakan pada instance kita.
gcloud compute addresses create sql-codelab-allocation --global --purpose=VPC_PEERING --prefix-length=24 --network=default
Selanjutnya adalah menetapkan rentang IP tersebut ke layanan internal kami (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 dalam versi beta. Kombinasi --no-assign-ip
dan --network=default
adalah yang mengaktifkan 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.
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 menghubungkan ke VM itu sendiri melalui SSH. Petunjuk untuk bagian-bagian ini akan ada di bagiannya masing-masing untuk Console vs. gcloud, dan sisanya adalah 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
di suatu tempat untuk digunakan nanti.
Buka halaman daftar instance Google Compute Engine, lalu temukan baris yang berisi VM Anda.
Di kolom Connect
, klik tombol SSH
dan jendela terpisah yang terhubung dengan aman ke virtual machine akan terbuka.
Lewati bagian Using gcloud
untuk petunjuk lainnya karena bagian tersebut 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 kembali saat membuat instance. Jika Anda tidak mengubahnya, maka sandi disetel ke us-central1-b
. Dan juga mengganti <INSTANCE_NAME> dengan apa pun yang
telah Anda tentukan sebelumnya.
gcloud compute ssh --zone <ZONE> <INSTANCE_NAME>
Setelah terhubung ke VM
Pertama, kita perlu mengunduh {i>proxy<i}. Bergantung pada sistem operasi Anda. Jika Anda tidak mengubah OS dalam pembuatan VM, maka akan digunakan di 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 mengganti sistem operasi, Anda dapat membuka di sini untuk 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 mengganti <INSTANCE_CONNECTION_NAME>
. Perhatikan juga, nomor port tcp dapat berubah jika Anda tidak menggunakan db Postgres, atau jika Anda telah mengubah porta {i>default<i} yang didengarkan oleh db.
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &
6. Menguji koneksi dan menyelesaikan
Seperti yang disebutkan sebelumnya, jika Anda memiliki aplikasi yang ingin Anda uji di instance GCE, 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 memiliki prompt Postgres dan dapat menjalankan perintah terhadap database Anda.
Apa selanjutnya?
Lihat beberapa codelab ini...