Загрузка файла из контейнера Docker в Google Cloud Storage - PullRequest
0 голосов
/ 22 февраля 2020

Я собираю конвейер CI / CD на GKE на основе этого руководства от Google.

Все работает хорошо, за исключением того, что, поскольку это проект Django, я также нужно запустить команду collectstati c и загрузить файлы в Google Storage.

В Dockerfile у меня есть следующие команды:

RUN python manage.py collectstatic --noinput
RUN gsutil rsync -R /home/vmagent/app/myapp/static gs://mystorage/static

Collectstati c работает как положено, но загрузка gsutil завершается неудачно со следующим сообщением об ошибке:

ServiceException: 401 Anonymous caller does not have storage.objects.create access to mystorage/static/...

Какой лучший способ проверки подлинности gsutil?

1 Ответ

2 голосов
/ 22 февраля 2020

Если вы запускаете контейнер docker в GCP (GKE), вы используете учетные данные приложения для аутентификации модуля, который затем имеет те же разрешения, что и эта учетная запись службы. Более подробную информацию об этом можно найти здесь . И GKE, и другие кластеры kubernetes позволяют импортировать файлы ключей как секреты. На всех платформах Kubernetes это делается с помощью следующих команд. Полное руководство можно найти здесь .

kubectl create secret generic pubsub-key --from-file=key.json=PATH-TO-KEY-FILE.json

Затем установите переменную окружения в вашем манифесте так:

 env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /var/secrets/google/key.json

Слишком плохо работающие модули под определенным Роль еще не возможна. GCP работает с учетными записями служб, а не с такими ролями, как AWS. В AWS вы можете назначить роль задаче, которая предоставляет контейнеру разрешения для этой роли.

...