如何解决cloudsql-docker / gce-proxy与已部署的Python容器之间的连接失败

时间:2019-01-05 19:24:37

标签: django google-cloud-platform google-cloud-sql

我一直在努力将一个简单的Django项目部署到Google Cloud Platform。

但是,部署的应用总是会失败,基本上是这样:

Django Version: 2.1.3
Exception Type: OperationalError
Exception Value:
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Exception Location: /env/lib/python3.6/site-packages/psycopg2/__init__.py in connect, line 130
Python Executable:  /env/bin/python3
Python Version: 3.6.7

我可以在本地使用完全相同的django项目部署-连接到已部署应用程序尝试连接到的相同云sql实例,并且可以正常工作。 我可以通过简单地终止本地cloud_sql_proxy来在本地复制错误。

这告诉我python / django应用程序在本地和部署上均相同。 Cloud SQL数据库也可以正常工作,但是由于某种原因,我使用的已部署映像gcr.io/cloudsql-docker/gce-proxy:1.05无法正常工作,或者以某种方式我的已部署应用无法连接到此代理。

我已经多次部署Django Polls应用程序[https://cloud.google.com/python/django/kubernetes-engine] 这是社区众所周知的,并且成功完成了几次以增加一些熟悉度,然后应用 解决此问题的方法与我自己的项目相同。

我的pod日志未显示任何错误。我已经将我的.yaml和Dockerfiles与许多可以正常工作且找不到任何问题的示例进行了比较,SO上的其他相关问题似乎也无法解决这个问题。

我已经尝试了一天左右的时间进行故障排除,作为学习过程,但没有取得进一步的进展。

一些帮助解决此问题的方法将不胜感激。

1 个答案:

答案 0 :(得分:0)

我的疑难解答中的空白是我不知道检查pod日志并没有提供sql-proxy组件(仅是应用程序组件)的日志。 当我从sql代理检查日志时,很明显没有为该项目启用Cloud SQL Admin API。启用它可以解决问题。

希望此答案对其他Google员工有所帮助。