Menghubungkan Layanan Google Cloud Run ke database Google Cloud SQL
Saya memiliki 2 layanan cloud google:
- Layanan Google Cloud Run (Node Js / Strapi)
- Layanan Google Cloud SQL (Mysql)
Saya telah menambahkan koneksi Cloud SQL ke Layanan Google Cloud Run dari UI, dan memiliki IP publik untuk Layanan Google Cloud SQL. Selain itu saya telah menambahkan Jalankan Layanan IP ke jaringan Resmi Layanan SQL.
Jika saya mencoba dan menghubungkan dari server lain (eksternal dari Google cloud), saya dapat dengan mudah terhubung ke Layanan Google Cloud SQL dan menjalankan kueri. Tetapi jika saya mencoba dan terhubung dari dalam Layanan GCloud Run dengan pengaturan yang persis sama (Ip, nama_database, dll.), Koneksi saya macet dan saya mendapatkan kesalahan batas waktu di log ...
Bagaimana cara mengizinkan Gcloud SQL menerima koneksi dari GCloud RUN dengan benar?
Saya mencari jawaban lain di sini, tetapi semuanya terlihat sangat tua (sekitar 2015)
Jawaban
Anda dapat menggunakan 3 mode untuk mengakses database Anda
- Gunakan fitur built-in. Dalam hal ini, Anda tidak perlu menentukan alamat IP, ini adalah soket linux yang terbuka untuk berkomunikasi dengan database seperti yang dijelaskan dalam dokumentasi
- Gunakan IP pribadi Cloud SQL. Kali ini, tidak perlu mengonfigurasi koneksi di layanan Cloud Run, Anda tidak akan menggunakannya karena Anda akan menggunakan IP, bukan soket linux. Solusi ini membutuhkan 2 hal
- Pertama lampirkan database Anda ke VPC dan berikan IP pribadi
- Kemudian, Anda perlu merutekan traffic IP pribadi Cloud Run melalui VPC Anda. Untuk ini, Anda harus membuat, lalu melampirkan ke layanan Cloud RUn, Konektor VPC tanpa server
- Gunakan IP publik CLoud SQL. Kali ini lagi, tidak perlu mengonfigurasi koneksi di layanan Cloud Run, Anda tidak akan menggunakannya karena Anda akan menggunakan IP, bukan soket linux. Untuk mencapai ini, Anda memerlukan lebih banyak langkah (dan kurang aman)
- Anda perlu merutekan semua traffic keluar Cloud Run melalui VPC Anda. Untuk ini, Anda harus membuat, lalu melampirkan ke layanan Cloud RUn, Konektor VPC tanpa server
- Terapkan layanan Cloud Run Anda dengan Konektor VPC Tanpa Server dan parameter konektivitas keluar ke "semua"
- Kemudian buat Cloud NAT untuk merutekan semua lalu lintas rentang ip Konektor VPC ke satu IP (atau sekumpulan IP) (Tautannya adalah dokumentasi Cloud Functions, tetapi berfungsi persis dengan cara yang sama)
- Terakhir, izinkan IP Cloud NAT di jaringan resmi Cloud SQL.
Dalam kasus Anda, Anda telah memasukkan IP Cloud Run ke daftar putih, tetapi itu adalah IP bersama (layanan lain dapat menggunakan hal yang sama !! Hati-hati) dan tidak selalu sama, ada kumpulan alamat IP yang digunakan oleh Google cloud.