【问题标题】:GKE Spring container - CloudSQL failing - 403 ForbiddenGKE Spring 容器 - CloudSQL 失败 - 403 Forbidden
【发布时间】:2021-09-23 04:12:55
【问题描述】:

我有一个无法在 GKE 引擎中启动的 Spring Boot 应用

运行代理后,我可以从本地 SQL 开发人员连接到 Cloud SQL

cloud_sql_proxy -instances=psomemy:europe-west2:pmydb=tcp:3306

我没有从 Kubectl 创建一个秘密,因为我的连接字符串是

spring.datasource.url=jdbc:mysql:///schema?cloudSqlInstance=myapp:europe-west2:mydbonly&socketFactory=com.google.cloud.sql.mysql.SocketFactory

所以我认为以下不是我的情况(?)

如何测试本地邮递员等的访问权限?

【问题讨论】:

  • 您是否为部署配置了服务帐户?
  • 有几个选项,具体取决于连接字符串。我在那个容器中使用套接字工厂。现在我创建了服务帐户,将 json 放在 environemnt 属性中,并在笔记本电脑上进行了测试,但文档似乎表明,如果应用程序在云中,则不需要它。另一方面,我有 flyway,我不使用 flyway.user ,密码等。我会让它使用现有的数据库凭据,这是一个问题吗?

标签: google-cloud-platform google-kubernetes-engine google-cloud-sql


【解决方案1】:

当您使用默认选项创建 VM 时(如果您不做任何特殊操作,默认情况下与具有节点池的集群相同),您的 Compute Engine 使用具有默认范围的默认服务帐户。

当然,默认情况下未设置 Cloud SQL 范围

所以,我建议你创建一个新的节点池:

  • 默认服务帐户和授予的正确范围
  • 或自定义服务帐户(更好的解决方案)

但是,最好的解决方案是使用Workload identity。您可以通过重新创建一个池来激活集群上的插件,并且可以为每个 pod 设置一个服务帐户,从而超越当前的范围限制。

【讨论】:

  • 谢谢。我启用了 Cloud SQL。 .我还更改了从 socker factory 到 spring.cloud.gcp.sql.instance-connection-name 模型的 db 连接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 2013-02-05
  • 2019-08-30
  • 1970-01-01
  • 2015-09-19
相关资源
最近更新 更多