java - 从 GKE 连接到 Google Cloud SQL 数据库的方式比较
问题描述
我一直在探索安全连接到 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 代理是否有任何优势?
解决方案
Cloud SQL 代理与套接字工厂相比没有任何优势,除了代理可以为更广泛的应用程序、语言和框架提供身份验证。
如果您的项目已经与 Cloud SQL JDBC Socket Factory 兼容,则应该改用它。它更有效,因为它可以为您的应用程序创建直接连接。
推荐阅读
- google-apps-script - Google 表格脚本语言中的“当前区域”概念
- angular - Angular 9 - 自定义验证器组
- android - 用 Firebase 上的新图片替换现有图片
- sql-server - 无法登录到在 Azure 上的 Ubuntu VM 上通过 Docker-compose 启动的容器中运行的 SqlServer
- python - 蟒蛇 | 计算数据框中与预先指定的单词列表匹配的单词
- javascript - bootstrap-fileinput 逐个上传时只识别单个文件
- javascript - 打印空对象时的奇怪输出
- python - 使用 MLFlow 执行 GridSearchCV
- react-native - React Native,Redux - 成功执行另一个异步操作后如何执行异步操作
- python - Seaborn Python中带有除数的箱线图