使用工作负载标识在Kubernetes上的Cloud ML Engine中对容器中的独立gsutil进行身份验证

问题描述 投票:1回答:2

我正在Google Cloud AI培训(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匿名调用者没有storage.objects.get访问权限...

如何使独立的gsutil获得所需的凭据?

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

kubernetes google-cloud-ml gsutil google-cloud-ai
2个回答
0
投票

工作负载标识是更好的方法。

您在Kubernetes服务帐户和Google Cloud Service帐户之间创建关系。

https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity


0
投票

这是因为单独的pip install gsutil不会配置凭据,这就是为什么它是匿名用户,如错误所示。您将需要配置凭据以访问受保护的数据。

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

RUN echo'[GoogleCompute] \ nservice_account =默认值>> /etc/boto.cfg

将gsutil配置为使用默认服务帐户。

© www.soinside.com 2019 - 2024. All rights reserved.