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

Posted

技术标签:

【中文标题】使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中对独立 gsutil 进行身份验证【英文标题】:Authenticating standalone gsutil in containers in Cloud ML Engine on Kubernetes with Workload Identity 【发布时间】: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 开箱即用。

【问题讨论】:

你能试试这个吗:github.com/GoogleCloudPlatform/ai-platform-samples/blob/master/… 【参考方案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 您可以将服务帐户名称的名称更改为“默认”。

以上是关于使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中对独立 gsutil 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

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

error execution phase preflight: couldn't validate the identity of the API Server: Get https://1

使用 istio 运算符覆盖 source_workload 指标

Citrix XenServer Workload Balancing 报告词汇表

功能更新|DAS推出全局Workload优化功能,实现SQL自动诊断

Oracle AWR 介绍(AWR -- Automatic Workload Repository)