Nat*_*cke 2 permissions google-cloud-storage google-cloud-platform kubernetes
我使用多种 Google 云服务。我工作的一些 Cloud Storage 存储桶位于项目 A 中,可以通过我自己的帐户访问,而另一些存储桶位于项目 B 中,我只能使用服务帐户访问。我激活了适当的服务帐户
gcloud auth activate-service-account --key-file mykey.json
在随后的登录过程中我只是使用
gcloud config set account service_account
我还需要切换我的活动项目,为此我使用了命令
gcloud config set project project-B
服务帐户工作得很好,允许我访问存储在 Google Cloud Storage 上的特定 bitbucket,但后来我需要使用 Argo 提交 kubernetes 工作流程,所以我使用以下命令切换回我的帐户和项目
gcloud config set account my_account
gcloud config set project project-A
Run Code Online (Sandbox Code Playgroud)
使用“gcloud auth list”我可以看到 my_account 处于活动状态
ACTIVE ACCOUNT
service_account.iam.gserviceaccount.com
* my_account
Run Code Online (Sandbox Code Playgroud)
但是当我尝试提交运行“kubectl -n default get services”时出现以下错误:
Error from server (Forbidden): services is forbidden: User "service_account.iam.gserviceaccount.com" cannot list resource "services" in API group "" in the namespace "default": Required "container.services.list" permission.
Run Code Online (Sandbox Code Playgroud)
当我使用 my_namespace 而不是默认值时,我得到同样的错误。我对此感到相当困惑,因为像“gsutil ls”这样的 gcloud 命令的功能就好像我在正确的帐户和项目中一样。为什么 kubernetes 仍然认为我正在使用服务帐户,如何让它停止使用它,以便我可以再次使用 kubernetes 执行我需要的操作?在激活服务帐户之前,我尝试运行的命令和管道工作得非常好。
事实证明我只需要跑步
gcloud container clusters get-credentials mycluster
最初,我认为我还需要通过删除 kubeconfig 文件然后
~/.kube/config
运行 get-credentials 命令来解决此问题,但正如评论中指出的那样,事实证明 get-credentials 命令就是必需的。
该问题似乎是在 gcloud 服务帐户处于活动状态时运行 argo 命令时特别出现的:该命令首先会失败,然后所有后续 kubectl 命令都会返回此权限错误。如果我切换到服务帐户,运行 gcloud 命令,然后切换回我的帐户,则不会影响 kubectl 的行为。
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |