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

通过Workload Identity绑定K8s与GCP服务账户失败排查

问题现象
  • 按官方文档配置Config Connector,执行kubectl apply无报错,但出现如下警告:

Warning: resource configconnectors/configconnector.core.cnrm.cloud.google.com is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.

  • 执行gcloud iam service-accounts get-iam-policy [service account]无法看到预期的绑定关系,应用也没有获得所需权限
  • 重复执行配置步骤时系统提示“unchanged”,看似配置已创建但未生效;手动通过gcloud命令添加绑定后一切恢复正常

相关配置文件

iam-policy.yml

apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicy
metadata:
  name: iampolicy-workload-identity
spec:
  resourceRef:
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMServiceAccount
    name: review-instance-account@*********.gserviceaccount.com
  bindings:
    - role: roles/iam.workloadIdentityUser
      members:
        - serviceAccount:*********.svc.id.goog[review-9/sand-access]

service-account.yml

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    iam.gke.io/gcp-service-account: review-instance-account@********.iam.gserviceaccount.com
  name: sand-access
  namespace: review-apps

configconnector.yml

apiVersion: core.cnrm.cloud.google.com/v1beta1
kind: ConfigConnector
metadata:
  # the name is restricted to ensure that there is only one
  # ConfigConnector resource installed in your cluster
  name: configconnector.core.cnrm.cloud.google.com
spec:
  mode: cluster
  googleServiceAccount: 'review-instance-account********.iam.gserviceaccount.com'
排查与解决
  1. 修正IAMPolicy的资源引用格式
    IAMPolicy的resourceRef.name需要填写GCP服务账号的短名称(即@符号之前的部分),而非完整邮箱地址。比如目标账号是review-instance-account@*********.gserviceaccount.com,resourceRef.name应改为review-instance-account。修改后的配置片段:

    spec:
      resourceRef:
        apiVersion: iam.cnrm.cloud.google.com/v1beta1
        kind: IAMServiceAccount
        name: review-instance-account  # 替换为短名称
    
  2. 确认Config Connector服务账号权限
    Config Connector使用的GCP服务账号(review-instance-account********.iam.gserviceaccount.com)必须拥有roles/iam.serviceAccountAdmin权限,才能修改目标服务账号的IAM策略。手动绑定生效说明账号本身具备权限,但需确认该权限已正确授予Config Connector的服务账号。

  3. 验证Config Connector运行状态
    执行以下命令查看Config Connector资源状态,确保STATUS为Ready:

    kubectl get configconnector.core.cnrm.cloud.google.com
    

    若状态异常,查看控制器日志排查问题:

    kubectl logs -n cnrm-system -l cnrm.cloud.google.com/component=manager
    
  4. 重新应用配置并检查IAMPolicy状态
    修改配置后执行kubectl apply -f iam-policy.yml,然后查看IAMPolicy资源的状态和事件:

    # 查看资源状态详情
    kubectl get iampolicy iampolicy-workload-identity -o yaml
    # 查看资源事件
    kubectl describe iampolicy iampolicy-workload-identity
    

    确认status.conditions中存在Ready: True的状态,说明配置已生效。

  5. 关于kubectl apply警告的说明
    该警告是因为Config Connector资源并非通过kubectl create --save-config或kubectl apply创建,后续执行kubectl apply会自动补全缺失的注解,无需额外处理,不影响功能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:13:26