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

如何使用Workload Identity将Cloud SQL服务账号绑定至GKE Kubernetes服务账号

问题根因

你遇到的报错是两个错误逻辑叠加导致的:

  1. p848827672298-eef1pd@gcp-sa-cloud-sql.iam.gserviceaccount.com是Google托管的Cloud SQL服务账号,归属Google官方的Cloud SQL服务项目,并不在你自己的GCP项目下,你在自己项目下操作该SA的IAM策略自然会提示资源不存在。
  2. 你混淆了Workload Identity的绑定对象:你需要绑定的是你自己项目下有权限触发Cloud SQL导出的GCP服务账号,不是Cloud SQL的托管服务账号。你之前给Cloud SQL托管SA授予的存储桶权限保留即可,那是Cloud SQL服务执行导出时写入存储桶用的,和你的CronJob调用身份无关。
正确操作步骤
  • 步骤1:在你自己的GCP项目中新建专用服务账号,例如命名为cloud-sql-exporter@<你的项目ID>.iam.gserviceaccount.com
  • 步骤2:给该自建服务账号授予必要权限:
    • Cloud SQL导出权限:可以授予预置角色roles/cloudsql.editor,如果要最小权限可以自定义包含cloudsql.instances.export权限的角色
    • 不需要给该SA授予存储桶权限,存储桶写入由Cloud SQL托管SA完成
  • 步骤3:执行Workload Identity绑定命令,注意替换尖括号内的实际值:
    gcloud iam service-accounts add-iam-policy-binding \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:<你的GCP项目ID>.svc.id.goog[<K8S命名空间>/<K8S服务账号>]" \
      cloud-sql-exporter@<你的GCP项目ID>.iam.gserviceaccount.com
    
  • 步骤4:给你的CronJob使用的K8S服务账号添加注解:
    annotations:
      iam.gke.io/gcp-service-account: cloud-sql-exporter@<你的GCP项目ID>.iam.gserviceaccount.com
    
  • 步骤5:确认CronJob的Pod模板中指定了使用上述配置完成的K8S服务账号,重新部署CronJob后即可正常执行导出操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:06:02