使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中验证独立 gsutil

Authenticating standalone gsutil in containers in Cloud ML Engine on Kubernetes with Workload Identity

我正在 Google Cloud AI Training(Cloud ML 引擎)

上启动容器镜像

在这些容器中,我需要使用 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 开箱即用。

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

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

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

配置gsutil使用默认服务账号