问题标签 [cloud-sql-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1336 浏览

spring-boot - 在 Cloud Run 中将 SpringBoot 连接到 Cloud SQL 错误,连接被拒绝

我正在将我的Maven Springboot项目部署到Google Cloud Run并尝试从 Cloud Run 连接到Cloud SQL。我正在使用https://github.com/spring-cloud/spring-cloud-gcp/tree/master/spring-cloud-gcp-samples/spring-cloud-gcp-data-jpa-sample作为连接助手到云 SQL。在本地工作,我可以使用此库连接到实例并gcloud auth application-default login创建代理。但是,当部署到 Cloud Run 时,我得到了这个异常:

MySQL 异常

我还在 Cloud Run(配置文件:)qa和本地(默认配置文件)上运行不同的配置文件

澄清:我的本地环境使用 Docker 映像中的 MySql,这意味着我连接到本地数据库,这就是为什么我在datasource.url里面application.yml有默认配置文件。

此外,我已经尝试datasource.urlapplcation.yml(默认配置文件)中删除以测试这是否使 spring 对连接目标感到困惑,但结果错误仍然存​​在。

编辑 1

如果需要,我已经将 cloud-sql-instance 设置为附加到我的 Cloud Run 服务。My SQL Instance允许公共和私有 IP,并允许非安全(无 SSL)连接。账户的 IAM 政策:

  • ${PROJECT_ID}-compute@developer.gserviceaccount.com(默认 SA):Project Editor / Cloud SQL Admin
  • <Cloud Run Service Agent>Cloud Run Service Agent

因为官方文档说 Cloud Run 将使用特定服务帐户对 Cloud SQL 进行身份验证,在这种情况下,这是默认服务帐户,所以我没有Cloud SQL Admin/Client授予<Cloud Run Service Agent>

编辑 2

这是我的pom.xml

编辑 3

我现在可以通过本地部署连接到 Cloud SQL。通过 Cloud Build 触发器部署时,似乎我无法连接到 SQL 实例。我使用的连接字符串如下:<project_id>:asia-southeast1:farose-test-db Cloud Run 使用默认服务帐户,即 -compute@developer.gserviceaccount.com`,分配的角色如下:

  • 云 SQL 客户端
  • Cloud Run 调用程序
  • 编辑

编辑 4

似乎问题来自在构建步骤中缺少图像中的几个文件,这解释了为什么在本地构建和部署工作得很好。我现在禁用了 kaniko 执行程序的缓存。

0 投票
1 回答
879 浏览

kubernetes - Google Cloud、Kubernetes 和 Cloud SQL 代理:默认 Compute Engine 服务帐户问题

我有 Google Cloud 项目 A、B、C、D。它们都对 Kubernetes 集群和部署使用类似的设置。项目 A、B 和 C 已于数月前建成。他们都使用 Google Cloud SQL 代理连接到 Google Cloud SQL 服务。现在,当我最近开始为项目 D 设置 Kubernetes 时,我在 Stackdriver 日志记录中看到以下错误:

我比较了 A、B、C 和 D 之间的 Kubernetes 集群之间的差异,但它们似乎是相同的。

这是我正在使用的部署

所以看起来默认服务帐户没有足够的权限?通过 Google Cloud 控制台创建集群时,Google Cloud 不允许启用 Cloud SQL API。

从我用谷歌搜索这个问题的内容来看,有人说问题出在 gcr.io/cloudsql-docker/gce-proxy 图像上,但我尝试了较新的版本,但仍然出现相同的错误。

0 投票
1 回答
826 浏览

google-cloud-platform - 使用 Google Cloud SQL 数据库时,私有 IP + SSL 或云代理 sidecar 之间有区别吗?

在尝试评估如何从 Google Kubernetes Engine pod 连接到 Cloud SQL 数据库时,有几种方法可以做到这一点。一种是使用边车云代理。另一个是使用私有 IP 并在两者之间使用 SSL 连接。两者都有明确的案例吗?还是它们都提供相同的功能?有没有被认为是“最佳实践”?

Cloud SQL 代理边车

云 sql 代理sidecar与托管在 Google 基础架构上的代理服务建立 TCP 连接。然后,这会将您连接到 Google 网络上的云 SQL 实例。

优点

  • 无需管理应用程序中的加密材料即可建立安全连接
  • 连接到实例,您无需管理 DNS 记录或 IP 地址

缺点

  • 您必须创建一个存储服务帐户密钥的密钥。
  • 您必须在 pod 旁边管理一个 sidecar 实例,如果失败,您将无法再连接到数据库
  • 由于代理层的层数增加了延迟

私有 IP + SSL

使用私有 IP并将实例连接到您的 VPC 允许您使用未公开路由的内部 IP 地址,并将流量保留在您的 VPC 实例中。最重要的是,只设置 SSL到您的数据库的连接,以确保点对点的流量是安全的。

优点

  • 与数据库的低延迟连接,因为它是点对点连接
  • 您管理服务之间的密钥
  • 两者之间无需连接外部依赖项或系统

缺点

  • 您必须在连接内管理 SSL 证书
  • 您必须验证集群中的 IP 和 DNS 记录设置是否正确

我错过了什么吗?这两个确实提供相同的东西吗?两者之间是否没有绝对明确的赢家,您可以选择最适合您风格的任何一个?

0 投票
1 回答
129 浏览

google-app-engine - 如何使用内部 ip 配置标准 env app-engine 和 cloudsql 实例之间的通信

我配置了一个无服务器 vpc,并使用以下 app.yaml 启动该应用程序。但无法与私有 sql 实例通信。

0 投票
1 回答
286 浏览

mysql - 为什么 mysql-client 不能通过 docker-forwarded tcp 端口连接到 GCP cloud_sql_proxy?

要点

我有一个想要通过 tcp 端口连接到 mysql 数据库的应用程序。我正在构建一个 docker 容器,它为云 sql 实例提供连接(数据库包含从其他地方导入的测试用例)。我希望能够从 docker 容器内部转发 mysql 端口并从容器外部连接,但我收到错误消息。

我试过的

容器中的数据库,这有效

当我在本地容器中有一个数据库时,我可以这样连接:

容器中的代理(从外部连接),这不起作用

但是当我在本地容器中有 cloud_sql_proxy 时,我得到了这个错误:

如果我停止容器,我会收到不同的消息:

...所以我知道正在发生一些沟通。

容器中的代理(从内部连接),这有效

我知道问题出在我身上,因为当我使用交互式会话并从容器内连接时,一切都按预期工作。

为什么我不能从容器外部连接?我需要做些什么来告诉容器可以通过 docker 转发端口吗?

我省略了我认为与我的问题无关的细节,但这里有一个包含一些额外细节的仓库(比如我正在使用的 Dockerfile):https ://github.com/MatrixManAtYrService/cloudsqlproxyproblem

0 投票
1 回答
605 浏览

java - 连接spring boot应用程序和google Cloud SQL的推荐方式是什么?

当我阅读谷歌文档时,我看到推荐的方法是使用云 sql 代理:

要使用公共 IP 地址从 Google Kubernetes Engine 安全地连接到 Cloud SQL,您必须使用 Cloud SQL 代理。

从另一面看,当我阅读spring 文档时,我看到了以下实现方式:

添加依赖:

并指定属性:

我尝试了弹簧方式并且它有效,但我不确定它是否是推荐的方式,因为谷歌文档。你能澄清一下吗?

附言

当我在cloudSQL端从公共IP切换到私有IP时,Spring Boot方法停止工作,我不知道如何恢复它?

0 投票
0 回答
281 浏览

google-cloud-platform - Cloud-sql-proxy go binary 返回 404

我正在尝试以cloud_sql_proxy二进制文件的形式运行安装go get,但我总是收到 404 错误。

我已按照https://github.com/GoogleCloudPlatform/cloudsql-proxy上的说明进行操作,但没有运气。

$GOPATH/go/bin/cloud_sql_proxy -instances=project_name:region:instance_name=tcp:3306 -credential_file=/path/to/cloud-sql-proxy.json

我得到的错误:

但是,如果我从https://cloud.google.com/sql/docs/mysql/sql-proxy获取二进制文件,则连接正常,证明实例地址和凭据文件工作正常。服务帐户还具有 Cloud SQL Admin 角色,因此也应该没问题。

我已经克隆了 repo,并尝试调试代码以查看失败的确切位置,当然,它在以下位置失败:

我坚持使用 go-binary 的原因是我想在 Raspberry PI 3b+ 上重新使用 cloud_sql_proxy,这似乎是让 cloud_sql_proxy 在 ARM 架构上工作的唯一选择。

0 投票
1 回答
955 浏览

google-cloud-platform - GKE / Cloud IAM 工作负载身份设置错误 403

我们已经为我们的一个基于 Java / Tomcat 的应用程序设置了一个 CloudSQL 代理作为 sidecar 容器。

以下是我们如何设置工作负载身份以使我们的应用程序能够通过 cloudsql 代理连接到 CloudSQL:

  1. 创建 Cloud IAM 服务帐户并为其授予 SQL 客户端权限:

  2. 设置策略绑定如下:

  3. 为 GKE 服务帐号添加注释:

  4. 但是当我们使用以下方法进行测试时:

尽管按照本页的说明正确执行了所有操作,但仍会导致:

0 投票
1 回答
638 浏览

node.js - 在 node.js 中使用云 sql 代理续集连接超时

运行本地配置,连接工作正常。我已经安装并运行了 cloud_sql_proxy 并准备好进行新连接。

这是我的续集连接代码:

在某些时候,我将我的最大连接、获取和连接超时变量设置为高得离谱的数字,但仍然没有运气,但我开始在端口 3306 上获得位于伦敦的特定 IP 地址。

0 投票
1 回答
92 浏览

django - 通过代理从本地主机访问在 GCE 上设置的 postgresql 实例

我可以通过 Cloud SQL 代理或其他方式从本地主机访问在 Google Cloud Engine 上设置的 PostgreSQL 实例吗?

我正在尝试将 PostgreSQL 数据库从 Cloud SQL 移动到 Compute Engine 以进行测试。到目前为止,我一直在使用 Cloud SQL Proxy 从我的本地主机上运行 Cloud SQL 上的 Django 迁移,并且我想对 GCE 上设置的数据库执行相同的操作。