GKE Spring 容器 - CloudSQL 失败 - 403 禁止访问
GKE Spring container - CloudSQL failing - 403 Forbidden
我有一个 spring 引导应用程序无法在 GKE 引擎中启动
在 运行 代理
之后,我可以从本地 SQL 开发人员连接到云端 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
所以我认为以下不是我的情况 (?)
如何测试本地邮递员或其他人的访问?
当您使用默认选项创建 VM 时(如果您不做任何特殊操作,默认情况下使用节点池的集群也是如此),您的计算引擎将使用默认范围的默认服务帐户。
当然,默认情况下未设置云 SQL 范围
因此,我建议您创建一个新的节点池:
- 默认服务帐户和授予的正确范围
- 或自定义服务帐户(更好的解决方案)
但是,最好的解决方案是使用 Workload identity。您可以在您的集群上激活附加组件,重新创建一个池,您可以为每个 pod 设置一个服务帐户,从而超越当前的范围限制。
我有一个 spring 引导应用程序无法在 GKE 引擎中启动
在 运行 代理
之后,我可以从本地 SQL 开发人员连接到云端 SQLcloud_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
所以我认为以下不是我的情况 (?)
如何测试本地邮递员或其他人的访问?
当您使用默认选项创建 VM 时(如果您不做任何特殊操作,默认情况下使用节点池的集群也是如此),您的计算引擎将使用默认范围的默认服务帐户。
当然,默认情况下未设置云 SQL 范围
因此,我建议您创建一个新的节点池:
- 默认服务帐户和授予的正确范围
- 或自定义服务帐户(更好的解决方案)
但是,最好的解决方案是使用 Workload identity。您可以在您的集群上激活附加组件,重新创建一个池,您可以为每个 pod 设置一个服务帐户,从而超越当前的范围限制。