从 GKE pod 内部进行 GCS 写访问

mji*_*son 5 google-cloud-storage google-kubernetes-engine

我无法从 GKE pod 中获得对 GCS 存储桶的写访问权限。

我有一个 GKE pod 正在运行。我没有更改任何有关服务帐户的 k8s 配置。我已将 docker exec 放入 pod 并安装了 gcloud/gsutil。gcloud auth list显示 1234-compute@developer.gserviceaccount.com 条目。在 GCS 中,我添加了与存储管理员、存储旧存储桶所有者、存储对象创建者相同的帐户(即,我刚刚尝试了很多东西)。我能跑gsutil ls gs://bucket。但是,在运行时gsutil cp file gs://bucket,它会打印:

AccessDeniedException: 403 Insufficient OAuth2 scope to perform this operation. 
Acceptable scopes: https://www.googleapis.com/auth/cloud-platform
Run Code Online (Sandbox Code Playgroud)

gsutil acl get gs://bucket 印刷:

AccessDeniedException: Access denied. Please ensure you have OWNER permission on gs://bucket
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他事情是将 allUsers 和 allAuthenticatedUsers 添加为存储桶的创建者和所有者,没有任何更改。我可以很好地从我的开发机器写入存储桶。

当我gsutil acl get gs://bucket从另一台机器上运行时,它会打印与 OWNER 相同的地址作为gcloud auth list来自 pod 内的输出。

我需要什么特殊的酱汁才能让 pod 写入存储桶?

mji*_*son 2

GKE 集群是使用默认权限创建的,仅具有 GCS 的读取范围。解决方案:

  1. 应用更改 Google 容器引擎集群权限的建议
  2. 按照https://developers.google.com/identity/protocols/application-default-credentialsGOOGLE_APPLICATION_CREDENTIALS中所述进行设置