我正在使用GCloud,我有一个kubernate集群和一个云sql实例。
我有一个简单的node.js应用程序,它使用数据库。当我使用gcloud app deploy
进行部署时,它可以访问数据库。但是,当我构建一个dockerimage并公开它时,它无法到达数据库。
base_settings:cloud_sql_instances
。我在socketPath
配置中使用相同的值进行mysql连接。泊坞窗日志中的错误是:
(节点:1)UnhandledPromiseRejection警告:错误:连接ENOENT / cloudsql / x-alcove-224309:europe-west1:learning 在PipeConnectWrap.afterConnect上[完成时](net.js:1097:14)
能否请您解释一下如何从dockerized节点应用程序连接到Cloud sql。
答案 0 :(得分:1)
当您使用gcloud app deploy
在App Engine上部署应用程序时,平台会在一个容器中运行该应用程序,并在侧面容器中运行该容器,以负责运行cloud_sql_proxy(您可以通过指定{{1} }放在您的app.yaml文件中。
Kubernetes Engine不使用app.yaml文件,并且不向您提供此侧面车载容器,因此您必须进行设置。 public doc显示了如何通过为数据库凭据创建密钥并使用side-car容器配置更新部署文件来实现此目的。文档中显示的示例如下所示:
base_settings:cloud_sql_instances
答案 1 :(得分:1)
通常,最好的方法是在与您的应用程序相同的容器中使用Sidecar容器进行连接。您可以在“从Google Kubernetes Engine连接”页面here中找到示例。还有一个代码实验室here可能会更深入,可能会有所帮助。
答案 2 :(得分:0)
可以使用内部IP地址进行连接的文档mentions。 有人尝试过吗?