Аутентификация автономного gsutil в контейнерах в Cloud ML Engine на Kubernetes с идентификацией рабочей нагрузки

Я запускаю образы контейнеров в 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

ServiceException: 401 Анонимный вызывающий абонент не имеет доступа к storage.objects.get к...

Как я могу сделать так, чтобы автономный gsutil получал необходимые учетные данные?

Большинство руководств фокусируются на ручном вызове gcloud auth, копируя URL-адрес и копируя токен обратно. Я ищу не это решение (которое следует автоматизировать). Я знаю, что автоматизированное решение возможно, поскольку на некоторых изображенияхgsutil работает из коробки.

2 ответа

Это связано с тем, что этот pip install gsutil сам по себе не настраивает учетные данные, поэтому, как говорится в ошибке, это анонимный пользователь. Вы захотите настроить учетные данные для доступа к защищенным данным.

Поместите следующую строку в свой файл докера, и она должна работать:

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

Это настройка gsutil для использования учетной записи службы по умолчанию.

Идентификация рабочей нагрузки - лучший способ сделать то же самое.

Вы создаете связь между учетной записью службы Kubernetes и учетной записью облачной службы Google.

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

Другие вопросы по тегам