用途:为 GKE Pod 提供到 Google Cloud 服务的免密钥认证。Pod 通过 Kubernetes 服务账号(KSA)与 Google Cloud 服务账号(GSA)之间的 IAM 绑定,使用短期、自动轮换的凭证访问 Pub/Sub、Cloud SQL、Secret Manager 等服务,避免管理静态服务账号密钥。
主要能力:消除服务账号密钥管理与轮换;按最小权限授予 IAM 角色;让 Spring Boot 应用自动认证 Google Cloud API;支持 Cloud SQL Proxy 与 Pub/Sub 客户端库自动认证。
使用方式:一、创建 Google Cloud 服务账号(gcloud iam service-accounts create app-runtime --project=... --display-name=...);二、创建带注解 iam.gke.io/gcp-service-account: <GSA邮箱> 的 Kubernetes 服务账号;三、绑定 KSA 与 GSA:gcloud iam service-accounts add-iam-policy-binding <GSA邮箱> --role=roles/iam.workloadIdentityUser --member="serviceAccount:<项目ID>.svc.id.goog[<命名空间>/<KSA名>]";四、授予所需 IAM 角色(如 roles/pubsub.publisher、roles/pubsub.subscriber、roles/cloudsql.client、roles/secretmanager.secretAccessor);五、在 Deployment 中设置 serviceAccountName;六、验证:查看 Pod 注解,并通过 kubectl exec 测试服务访问。
适用场景:GKE Pod 需要访问 Google Cloud 服务、希望消除密钥轮换、要求最小权限访问、需要 Spring Boot 应用调用 Google Cloud API、或需启用 Cloud SQL Proxy 与 Pub/Sub 自动认证。
限制:需 GKE 集群已启用 Workload Identity(Autopilot 默认启用);需具备 gcloud CLI、相应 IAM 权限(如 roles/iam.securityAdmin)及集群的 kubectl 访问权限;KSA 与 GSA 需在各自系统中创建。其他细节暂未提供。