GKE集群中SpringBoot应用连接跨项目Datastore报Unauthenticated错误求助
验证跨项目权限绑定
确认目标Datastore所属项目已将Datastore User角色正确绑定到应用服务账号,权限配置必须在资源所在项目(即Datastore项目)完成,而非服务账号所属的GKE项目。同时检查绑定的服务账号邮箱是否完全匹配,避免拼写错误。检查GKE工作负载身份配置
查看应用的Deployment/StatefulSet配置,确认spec.serviceAccountName字段指定了正确的服务账号。若使用工作负载身份,验证iam.gke.io/gcp-service-account注解是否指向目标服务账号邮箱,且已在IAM中为GKE服务账号(格式:[命名空间].sa[账号名]@[GKE项目].iam.gserviceaccount.com)绑定roles/iam.workloadIdentityUser角色。排查Datastore客户端配置
检查SpringBoot配置文件(application.properties/application.yml)中的spring.cloud.gcp.datastore.project-id,确认其值为目标Datastore所在的项目ID,而非GKE集群的项目ID。未显式指定时,客户端会默认使用集群项目ID,导致跨项目访问失败。验证服务账号密钥(非工作负载身份场景)
若应用通过密钥文件认证,检查密钥文件是否对应正确的服务账号,且未过期、未被吊销。同时确认环境变量GOOGLE_APPLICATION_CREDENTIALS是否正确指向容器内的密钥文件路径,文件存在且权限配置合理。检查网络连通性(可选)
若两个项目使用VPC peering或共享VPC,确认网络规则允许GKE集群IP段访问Datastore的443端口。排查是否有防火墙或安全组规则阻止了集群到Datastore的出站请求。
内容的提问来源于stack exchange,提问作者Amiya Lenka

