簡體   English   中英

啟用私有 IP 並關閉公共 IP 后無法從 Cloud Run 連接到 Cloud SQL

[英]Cannot connect to Cloud SQL from Cloud Run after enabling private IP and turning off public iP

我有一個 postgreSQL CLoud SQL 實例,我通過 UNIX 套接字連接到它,並且根據文檔從 Cloud Run 容器中獲取實例名稱。 使用公共 IP,此連接工作正常。 我想關閉公共 IP 並且只有一個私有 IP,所以我不會為以后的公共 IP 付費。

當我第一次創建 Cloud SQL 實例時,我只啟用了公共 IP。 幾天后,我啟用了私有 IP。 對於私有 IP 的關聯網絡,我接受了默認值,因為 Cloud Run 實例在同一個項目中。

當我關閉公共 IP 時,我的應用程序無法再連接到 Cloud SQL 實例。 我收到連接拒絕錯誤:

sqlalchemy.exc.InterfaceError: (pg8000.core.InterfaceError) ('communication error', ConnectionRefusedError(111, 'Connection refused'))

如上所述,我確實遵循了從 Cloud Run 連接到 Cloud SQL 頁面上的說明:

https://cloud.google.com/sql/docs/postgres/connect-run

在關閉公共 IP 並且只有私有 IP 可用后,我什至運行 gcloud 命令來更新現有部署的修訂版,但沒有任何區別。

從 Cloud Run 連接到 Cloud SQL 是否需要公共 IP? 我在連接文檔頁面中沒有看到。 或者在嘗試切換到僅擁有私有 IP 時我還錯過了什么? 或者我是否需要創建一個沒有公共 IP 的新 Cloud 實例,然后再次按照通過實例名稱連接 Cloud Run 的說明進行操作?

從 Cloud Run 連接到 Cloud SQL 是否需要公共 IP? 我在連接文檔頁面中沒有看到。

從 Cloud Run 連接到 Cloud SQL 頁面上,它顯示“注意:這些說明要求您的 Cloud SQL 實例配置公共 IP 地址。”

私有 IP 訪問是從虛擬私有雲 (VPC) 訪問 為了通過 VPC 訪問您的實例,您要連接的資源需要是 VPC 的一部分。 Cloud Run 目前不支持 VPC 訪問,因此您現在需要使用公共 IP。

TL;DR : 向 Google 支持開立案例

您的案例很有趣,因為根據設計,我認為它還不受支持。

事實上,當您使用私有 IP 創建 Cloud SQL 數據庫時,您的 VPC 和 Cloud SQL VPC(或類似的東西)之間會建立網絡對等互連

此外,今天無法將您的 Cloud Run 實例插入到您的 VPC。 有了函數和 App Engine,您就有了無服務器 VPC 連接器,而 Cloud Run 還沒有(即將推出!)。

無服務器 VPC 連接器執行與 Cloud SQL 私有 IP 相同的功能,我的意思是您的 VPC 和 Cloud Functions(或 App Engine)VPC(或等效的東西)之間的對等互連。

即使 Cloud Run 上提供無服務器 VPC 連接器,由於網絡對等傳輸性,也不確定它是否有效。 簡而言之,如果您在 VPC A -> VPC B 和 VPC B -> VPC C 之間有對等互連,則無法通過在 VPC B 中執行跳躍從 VPC A 到達 VPC C。將 A 替換為 VPC Cloud Run, B由您項目的 VPC 和 C 由 VPC Cloud SQL。

只有直接對等互連的網絡才能進行通信。 不支持傳遞對等互連。 換句話說,如果VPC網絡N1與N2和N3對等,但N2和N3沒有直接連接,則VPC網絡N2無法通過VPC網絡對等連接與VPC網絡N3通信。

我沒有檢查 AppEngine 或 Cloud Function,但這種設計應該不起作用。

但我不確定,這就是為什么給 Google 支持的案例可以讓您有明確的答案,並且可能會在路線圖上提供輸入。 歡迎在此處提供來自 Google 支持的任何有價值的信息!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM