You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GKE Workload Identity下Spring Boot连接Cloud SQL失败疑问排查

GKE上Spring Boot通过Workload Identity连接Cloud SQL问题

背景

  • 正在尝试让GKE上的Spring Boot应用连接GCP Cloud SQL,采用Google推荐的Workload Identity方案
  • 已完成Workload Identity配置,为服务账号授予了Cloud Admin角色,且通过测试Pod确认Pod使用了正确的服务账号
  • 部署配置如下:
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
  name: "hello-world"
  namespace: my-dev
  labels:
    app: "hello-world"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: "hello-world"
  template:
    metadata:
      labels:
        app: "hello-world"
    spec:
      containers:
        - name: "hello-container"
          image: "my-region-docker.pkg.dev/my-project/my-repo/my-tag"
          ports:
            - containerPort: 8080
      serviceAccountName: new-service-account
      nodeSelector:
        iam.gke.io/gke-metadata-server-enabled: "true"

问题

我的理解是完成上述配置后,无需用户名/密码即可连接数据库,因为服务账号已获授权,但Spring Boot始终无法成功连接。

尝试过多种配置组合:

  • 直接使用带SocketFactory的JDBC URL:
spring.datasource.url=jdbc:postgresql:///DATABASE_NAME?cloudSqlInstance=INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory
  • 使用spring.cloud.gcp.sql.*相关属性

当前使用的配置:

spring.datasource.username=i-am-copy-pasted@gcp-sa-cloud-sql.iam
spring.datasource.password=mockpassword # 实际配置就是这个值,因为要求不能留空
spring.datasource.url=jdbc:postgresql:///springdb?cloudSqlInstance=project-id:region:mydb&socketFactory=com.google.cloud.sql.postgres.SocketFactory&enableIamAuth=true

请问我的「无需用户名密码」的假设是否错误,还是配置存在问题?

内容的提问来源于stack exchange,提问作者Dimitris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:21:18