GKE配置Workload Identity应用IAMPolicy YAML报版本匹配错误如何解决
问题排查与解决步骤
1. 检查集群是否安装Config Connector(CNRM)
IAMPolicy是Google Cloud Config Connector(CNRM)提供的自定义资源,报错说明集群中不存在对应CRD定义。首先执行命令验证:
kubectl get crd | grep iam.cnrm.cloud.google.com
如果返回空结果,说明未安装Config Connector,你需要先在GKE集群中启用并部署Config Connector组件,同时配置好对应的IAM权限。
2. 已安装Config Connector时的版本适配
如果确认已部署Config Connector,执行以下命令查看当前支持的IAM相关资源版本:
kubectl api-resources | grep iam.cnrm.cloud.google.com
- 部分高版本Config Connector中,推荐使用
IAMPolicyMember替代IAMPolicy做单一角色绑定,更适合你的使用场景,对应配置修改如下:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-workload-identity-sample spec: resourceRef: apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMServiceAccount name: serviceaccount_key # 注意此处仅填写GCP服务账号名称前缀,无需带@及后缀域名 role: roles/iam.workloadIdentityUser member: serviceAccount:PROJECT_ID.svc.id.goog[test/rao-sa]
3. 无Config Connector的替代方案
如果你不需要使用Config Connector管理云资源,可以直接通过gcloud命令完成权限绑定,效果完全一致:
gcloud iam service-accounts add-iam-policy-binding serviceaccount_key@PROJECT_ID.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[test/rao-sa]"
内容的提问来源于stack exchange,提问作者Gaurav Yadav
相关产品推荐
相关产品推荐

