1

我一直在探索安全连接到 Google Cloud SQL 数据库的方法。我们使用 Google Kubernetes Engine 来部署我们的 Java Spring 应用程序。

因此,https: //cloud.google.com/sql/docs/mysql/connect-kubernetes-engine 提到了从 kubernetes 连接到云 sql 的两种方法。我们不能使用私有 IP 方法,因为我们没有 VPC 原生集群。所以我们选择 Cloud SQL Proxy docker image 作为连接媒介。

然后,考虑到https://cloud.google.com/sql/docs/postgres/external-connection-methods,提到了以下选项:

在此处输入图像描述

我们不能采用公共 IP 方法,因为我们的 kubernetes pod IP 地址将不断变化。我们已经入围了 Cloud SQL 代理 docker 镜像。所以我们只剩下 JDBC 套接字库了。

因此,比较 Cloud SQL 代理和 JDBC 套接字库:

  • Cloud SQL 代理将是我们的 kubernetes pod 中的一个 sidecar 容器以及我们的应用程序容器。应用程序容器将使用云 sql 凭据连接到“localhost:5432”(代理)。代理将获得访问云 sql 数据库的服务帐户。代理提供与云 sql 的安全连接。
  • JDBC 套接字库还提供与云 sql 的安全连接。需要在应用程序中添加 Maven 依赖项,应用程序只需提供正确的数据库连接字符串。

从上面的比较来看,JDBC Socket Library 似乎是更好的方法,因为我们不需要 sidecar 容器 - 云 sql 代理。

在应用程序部署在 Google Kubernetes Engine 中的情况下,与 JDBC 套接字库相比,Cloud SQL 代理是否有任何优势?

4

1 回答 1

2

Cloud SQL 代理与套接字工厂相比没有任何优势,除了代理可以为更广泛的应用程序、语言和框架提供身份验证。

如果您的项目已经与 Cloud SQL JDBC Socket Factory 兼容,则应该改用它。它更有效,因为它可以为您的应用程序创建直接连接。

于 2019-07-30T15:19:08.860 回答