使用 Workload Identity 对 Kubernetes 上的 Cloud ML Engine 容器中的独立 gsutil 进行身份验证

Ark*_*kun 4 gsutil kubernetes google-cloud-ml google-cloud-ai

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

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

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

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

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

python -m pip install gsutil --quiet
gsutil cp a gs://b/c
Run Code Online (Sandbox Code Playgroud)

ServiceException: 401 匿名调用者没有 storage.objects.get 访问...

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

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

小智 7

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

将以下行放入您的 docker 文件中,它应该可以工作:

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

它是配置 gsutil 以使用默认服务帐户。