如何解决将Google Cloud Run Service连接到Google Cloud SQL数据库
我有2个Google云服务:
- Google Cloud Run Service(Node Js / Strapi)
- Google Cloud SQL服务(Mysql)
我已将UI的Cloud SQL连接添加到Google Cloud Run Service,并具有Google Cloud SQL Service的公共IP。最重要的是,我已将运行服务IP添加到SQL Service的授权网络中。
如果我尝试从其他服务器(从Google Cloud外部)连接,则可以轻松连接到Google Cloud SQL服务并执行查询。 但是,如果我尝试使用完全相同的设置(Ip,database_name等)从GCloud Run Service内部进行连接,则我的连接会挂起,并且日志中会出现超时错误...
如何正确允许Gcloud SQL接受来自GCloud RUN的连接?
我在这里寻找其他答案,但它们看起来都非常旧(大约在2015年)
解决方法
您可以使用3种模式来访问数据库
- 使用内置功能。在这种情况下,您无需指定IP地址,它是一个Linux套接字,可以按照the documentation 中的说明与数据库进行通信
- 使用Cloud SQL专用IP。这次,无需在Cloud Run服务中配置连接,您将不会使用它,因为您将使用IP,而不是Linux套接字。该解决方案需要2件事
- 首先将数据库附加到VPC和give it a private IP
- 然后,您需要通过VPC路由Cloud Run的专用IP流量。为此,您必须创建一个serverless VPC Connector ,然后将其附加到Cloud RUn服务。
- 使用CLoud SQL公共IP。再次这一次,无需在Cloud Run服务中配置连接,您将不会使用它,因为您将使用IP,而不是Linux套接字。为此,您需要采取更多步骤(而且安全性较低)
- 您需要通过VPC路由Cloud Run的所有出口流量。为此,您必须创建一个serverless VPC Connector ,然后将其附加到Cloud RUn服务。
- 使用the Serverless VPC Connector and the egress connectivity param to "all" 部署您的Cloud Run服务
- 然后创建一个Cloud NAT to route all the VPC Connector ip range traffic to a single IP (or set of IPs)(链接是Cloud Functions文档,但其工作方式完全相同)
- 最终在Cloud SQL授权的网络上授权Cloud NAT IP。
在您的情况下,您已将Cloud Run IP列入了白名单,但这是一个共享IP(其他服务可以使用相同的IP地址!请注意!)并且它并不总是相同的,Google Cloud使用的IP地址池
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。