目前我正在尝试将文件写入Google云存储桶。为此,我使用了django-storages包。在
我已经部署了我的代码,并通过kuberneteskubectl
实用程序进入正在运行的容器,以检查GCS bucket的工作情况。在
$ kubectl exec -it foo-pod -c foo-container --namespace=testing python manage.py shell
我可以读取存储桶,但如果我尝试写入存储桶,则会显示以下回溯。在
^{pr2}$似乎完全和bucket权限有关。因此,我已经将Storage admin、Storage object creator角色分配给google cloud build service account(通过bucket->manage权限),但仍然显示相同的错误。在
一个可能的解释是,如果您没有为集群分配正确的作用域。如果是这样的话,集群中的节点将没有写入Google云存储所需的授权/权限,这可以解释您看到的403错误。在
如果在创建集群时没有设置作用域,则会分配默认作用域,这只为云存储提供读取权限。在
为了使用Cloud SDK检查集群的当前作用域,可以尝试从云Shell运行“describe”命令,例如:
输出的oauthScopes部分包含分配给集群/节点的当前作用域。在
默认的只读云存储范围将显示:
^{pr2}$如果设置了云存储读/写范围,则输出将显示:
在集群创建期间,可以使用scope开关和所需的作用域标识符来设置作用域。在您的例子中,这将是“存储rw”。例如,您可以运行类似于:
gcloud容器集群创建CLUSTER-NAME区域范围存储rw
storage-rw
作用域与您的服务帐户相结合,应该允许集群中的节点写入云存储。在或者,如果不想重新创建集群,可以使用新的所需作用域创建一个新的节点池,然后删除旧的节点池。有关如何实现这一点的信息,请参阅Is it necessary to recreate a Google Container Engine cluster to modify API permissions?的公认答案。在
相关问题 更多 >
编程相关推荐