Аутентификация автономного gsutil в контейнерах в Cloud ML Engine на Kubernetes с идентификатором рабочей нагрузки - PullRequest
1 голос
/ 23 апреля 2020

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

0 голосов
/ 24 апреля 2020

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

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

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

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

0 голосов
/ 23 апреля 2020

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

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

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

...