Google Cloud Run Hizmetini Google Cloud SQL veritabanına bağlama
2 google bulut hizmetim var:
- Google Cloud Run Hizmeti (Node Js / Strapi)
- Google Cloud SQL Hizmeti (Mysql)
Kullanıcı arayüzünden Google Cloud Run Hizmetine Cloud SQL bağlantısını ekledim ve Google Cloud SQL Hizmeti için herkese açık bir IP'ye sahibim. Bunun üzerine SQL Service Yetkili ağlarına Run Service IP'yi ekledim.
Başka bir sunucudan (Google bulutundan harici) bağlanmayı denersem ve bağlanırsam, Google Cloud SQL Hizmetine kolayca bağlanabilir ve sorgu yürütebilirim. Ancak GCloud Run Hizmetinin içinden tamamen aynı ayarlarla (Ip, veritabanı_adı vb.) Bağlanmayı denersem ve bağlanırsam bağlantım takılıyor ve günlüklerde zaman aşımı hatası alıyorum ...
Gcloud SQL'in GCloud RUN'dan bağlantıları kabul etmesine nasıl düzgün bir şekilde izin verilir?
Burada başka cevaplar aradım ama hepsi çok eski görünüyor (2015 civarında)
Yanıtlar
Veritabanınıza erişmek için 3 mod kullanabilirsiniz
- Yerleşik özelliği kullanın. Bu durumda, IP adresini belirtmenize gerek yoktur, bu , dokümantasyonda açıklandığı gibi veritabanı ile iletişim kurmaya açık olan bir linux soketidir.
- Cloud SQL özel IP'sini kullanın. Bu sefer Cloud Run hizmetinde bir bağlantı yapılandırmanıza gerek yok, linux soketini değil IP'yi kullanacağınız için kullanmayacaksınız. Bu çözüm 2 şey gerektirdi
- Öncelikle veritabanınızı VPC'nize ekleyin ve ona özel bir IP verin
- Ardından, Cloud Run'ın özel IP trafiğini VPC'niz üzerinden yönlendirmeniz gerekir. Bunun için sunucusuz bir VPC Bağlayıcısı olan Cloud RUn hizmetini oluşturmanız ve ardından ona eklemeniz gerekir.
- CLoud SQL genel IP'sini kullanın. Bu sefer yine Cloud Run hizmetinde bir bağlantı yapılandırmanıza gerek yok, linux soketini değil IP'yi kullanacağınız için kullanmayacaksınız. Bunu başarmak için daha fazla adıma ihtiyacınız var (ve daha az güvenli)
- Cloud Run'ın tüm çıkış trafiğini VPC'niz üzerinden yönlendirmeniz gerekir. Bunun için sunucusuz bir VPC Bağlayıcısı olan Cloud RUn hizmetini oluşturmanız ve ardından ona eklemeniz gerekir.
- Cloud Run hizmetinizi Sunucusuz VPC Bağlayıcısı ve çıkış bağlantı parametresi ile "tümü" olarak dağıtın
- Ardından, tüm VPC Bağlayıcısı ip aralığı trafiğini tek bir IP'ye (veya IP kümesine) yönlendirmek için bir Cloud NAT oluşturun (Bağlantı, Cloud Functions belgeleridir, ancak tam olarak aynı şekilde çalışır)
- Son olarak, Cloud SQL yetkili ağlarında Cloud NAT IP'lerini yetkilendirin.
Sizin durumunuzda, Cloud Run IP'yi beyaz listeye eklediniz, ancak bu paylaşılan bir IP (diğer hizmet aynı şeyi kullanabilir !! Dikkatli olun) ve her zaman aynı değil, Google bulut tarafından kullanılan bir IP adresi havuzu var.