我正在尝试在GKE中启用Workload Identity,并遵循了整个链接的操作步骤。然后我浏览了故障排除指南,并验证了我的所有设置都是正确的。然而,当我使用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服务帐户,确实有权访问bucket,所以我正在动态创建新的部署。
原来这是用户错误,我试图访问的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名称!