【问题标题】:Authenticating standalone gsutil in containers in Cloud ML Engine on Kubernetes with Workload Identity使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中对独立 gsutil 进行身份验证
【发布时间】:2020-08-06 15:39:27
【问题描述】:

我正在 Google Cloud AI Training(Cloud ML Engine)上启动容器图像

在这些容器中,我需要使用 gsutil。 一些容器有 gsutil。在这种情况下,我可以立即使用它而无需任何身份验证步骤。

有些容器没有gsutil,所以我必须安装它。 问题是安装的gsutil不起作用。

当我使用官方cloud-sdk 图像时,gsutil 无需任何身份验证步骤即可工作。

当我使用 python:3.7 映像并从 PyPI 安装 gsutil 时,它不起作用:

python -m pip install gsutil --quiet
gsutil cp a gs://b/c

ServiceException: 401 Anonymous caller does not have storage.objects.get access to ...

我怎样才能让独立 gsutil 获得所需的凭据?

大多数指南侧重于手动调用gcloud auth、复制 URL 和复制回令牌。这不是我寻求的解决方案(应该是自动化的)。我知道自动化解决方案是可能的,因为在某些图像中gsutil 开箱即用。

【问题讨论】:

标签: kubernetes google-cloud-ml gsutil google-cloud-ai


【解决方案1】:

这是因为 pip install gsutil 单独没有配置凭据,这就是错误所说的匿名用户的原因。您需要配置凭据以访问受保护的数据。

在你的 docker 文件中加入下面一行,它应该可以工作了:

运行 echo '[GoogleCompute]\nservice_account = default' > /etc/boto.cfg

就是配置gsutil使用默认服务帐号。

【讨论】:

  • 绝妙的答案!这实际上允许gsutil 在其他 GCP 实例中使用服务帐号,例如 Compute Engine 的容器优化操作系统。使用您的答案,我为 gsutil 创建了一个轻量级包装图像,用于 GCP 实例 check it out on GitHub。我想知道,你从哪里读到这个解决方案?在文档中找不到任何内容。无论哪种方式都非常感谢!
  • 这部分对我有用,让我解释一下我有两个项目,第一个使用提供的解决方案,但第二个没有,对于每个我都有一个服务帐户,这也可以工作:RUN echo '[GoogleCompute]\nservice_account = serv-acc-name@xxx-xx-xx.iam.gserviceaccount.com' > /etc/boto.cfg 您可以将服务帐户名称的名称更改为“默认”。
猜你喜欢
  • 2022-01-28
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 2023-03-03
  • 2013-03-11
  • 2019-01-21
  • 2020-10-25
  • 2017-02-07
相关资源
最近更新 更多