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

使用kf push推送Spring Boot应用到GKE集群时token下载失败报错

问题根因

该403报错是GKE Workload Identity配置缺失导致的,Kf构建任务使用的Kubernetes服务账号(KSA)没有权限绑定到目标Google服务账号(GSA)kf-poc-cluster-sa@kf-poc-.iam.gserviceaccount.com,无法获取访问云资源的访问令牌。


排查步骤

  • 确认GKE集群是否开启了Workload Identity功能,执行命令:
    gcloud container clusters describe <你的集群名> --zone <集群可用区> --format="value(workloadIdentityConfig.workloadPool)"
    
    如果返回空值说明集群未开启Workload Identity,需要先开启该功能。
  • 检查Kf默认构建服务账号kf-builder(位于kf命名空间)是否和报错中的GSA完成了IAM绑定,执行命令:
    gcloud iam service-accounts get-iam-policy kf-poc-cluster-sa@kf-poc-.iam.gserviceaccount.com --format="value(bindings)"
    
    查看返回结果中是否存在roles/iam.workloadIdentityUser角色的绑定,绑定主体格式为serviceAccount:<你的项目ID>.svc.id.goog[kf/kf-builder],不存在则说明绑定缺失。
  • 检查kf-builder服务账号的注解配置是否正确,执行命令:
    kubectl describe sa kf-builder -n kf
    
    确认注解iam.gke.io/gcp-service-account的值为报错中提到的GSA完整地址,配置错误也会导致令牌获取失败。

解决步骤

注意:所有命令中<>包裹的占位符需要替换为你实际的集群、项目、可用区信息

  • 如果集群未开启Workload Identity,执行如下命令开启:
    gcloud container clusters update <你的集群名> --zone <集群可用区> --workload-pool=<你的项目ID>.svc.id.goog
    
    开启后需要重启对应节点池的节点使配置生效。
  • 为Kf构建服务账号绑定Workload Identity用户角色:
    gcloud iam service-accounts add-iam-policy-binding kf-poc-cluster-sa@kf-poc-.iam.gserviceaccount.com --role roles/iam.workloadIdentityUser --member "serviceAccount:<你的项目ID>.svc.id.goog[kf/kf-builder]"
    
  • 为kf-builder服务账号添加正确的GSA关联注解:
    kubectl annotate serviceaccount kf-builder -n kf iam.gke.io/gcp-service-account=kf-poc-cluster-sa@kf-poc-.iam.gserviceaccount.com --overwrite
    
  • 配置完成后等待1-2分钟让IAM权限同步,重新执行kf push命令验证应用推送是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:27:04