kubernetes 动态创建的GKE部署无法使用SA进行身份验证

bq3bfh9z  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(158)

我尝试在GKE中启用Workload Identity,并按照链接的整个how-to进行操作。然后,我浏览了故障排除指南,并验证了所有设置都是正确的。但是,当我使用kubeclient在Ruby代码中动态创建部署时,我总是得到PermissionDeniedError,如下所示:
/usr/lib/ruby/gems/3.1.0/gems/google-cloud-storage-1.43.0/lib/google/cloud/storage/service.rb:913:in 'rescue in execute': forbidden: openc3-sa@<PROJECTID>.iam.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket. (Google::Cloud::PermissionDeniedError)
我已经在GCP IAM页面中验证了openc3-sa@<PROJECTID>.iam.gserviceaccount.com确实具有存储管理员角色,该角色肯定具有storage.buckets.get权限。我的原始部署使用相同的默认kubernetes服务帐户,并且 * 确实 * 具有访问存储桶的权限,因此这与我正在动态创建新部署有关。

6uxekuva

6uxekuva1#

原来这是用户错误,我试图访问的bucket只是简单地称为“config”。由于bucket有一个全局名称空间,我显然没有访问这个bucket的权限,所以错误是正确的。但是,如果将bucket名称添加到错误消息中以帮助调试,那就太好了。类似于:

forbidden: openc3-sa@<PROJECT ID>.iam.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket named 'config'. (Google::Cloud::PermissionDeniedError)

有了bucket名称,我会立即发现问题。所以,如果你看到权限被拒绝的错误,请确保你有正确的bucket名称!

相关问题