使用 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 报告词汇表