gcloud auth activate-service-account и ошибка клонирования исходных репозиториев gcloud

Я хотел бы использовать вместе следующие инструменты:

  • Docker
  • gcloud SDK
  • Учетная запись службы gcloud
  • gcloud Source Repo (как часть зависимостей проекта)

Шаги, которые я предпринимаю:

1) Войдите в облачную консоль Google со страницы: https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=project-name

2) Создайте учетную запись службы, а пока дайте разрешения «Владелец» и загрузите ключ json как account-name.json.

введите здесь описание изображения

3) Добавьте Dockerfile:

FROM google/cloud-sdk
COPY account-name.json /tmp/account-name.json
RUN gcloud auth activate-service-account --key-file /tmp/account-name.json
RUN rm /tmp/account-name.json
RUN gcloud config set project project-name
RUN gcloud config set account [email protected]
RUN gcloud source repos clone default --project=project-name

4) Собираем и запускаем докер:

docker build  -t service-account-repo .
docker run -ti service-account-repo

Я получаю следующую ошибку:

ОШИБКА: (gcloud.source.repos.clone) В настоящее время у вас не выбрана активная учетная запись. Пожалуйста, запустите:

$ gcloud авторизация входа

для получения новых учетных данных или, если вы уже вошли в систему с другой учетной записью:

$ gcloud config установить аккаунт ACCOUNT

чтобы выбрать для использования уже прошедшую аутентификацию учетную запись.

И независимо от того, какие команды я пробую, включая настройку учетной записи и авторизации, через docker exec это не работает.

Если я запускаю те же команды локально, это работает, потому что я уже вошел в свою основную учетную запись gcloud.

Учетные записи служб gcloud работают с репозиториями исходного кода gcloud? у кого-нибудь есть рабочий пример без входа в нормальные учетные записи? Нужно ли мне включать другие облачные API, чтобы заставить его работать?


person Kim T    schedule 23.01.2018    source источник


Ответы (1)


Единственная gcloud команда, которую вам нужно запустить, это

gcloud auth activate-service-account --key-file /tmp/account-name.json

Устанавливает свойство core/account. После этого

gcloud source repos clone default --project=project-name

должен работать (нет необходимости устанавливать проект, поскольку вы указываете часть команды).

Убедитесь, что у вас установлен git, и он должен быть указан в пути.

Следует отметить, что gcloud хранит активированные учетные данные в ~/.config/gcloud каталоге. Возможно, это не то, что вам нужно. Вы можете изменить его, установив переменную среды CLOUDSDK_CONFIG так, чтобы она указывала на другое место, желательно не на часть самого образа докера.

person cherba    schedule 23.01.2018
comment
Я почти уверен, что выполнил эти шаги, и это не дает доступа к проекту. Вы пробовали мой пример? Работает ли это для вас? - person Kim T; 25.01.2018
comment
Можете ли вы указать, какой файл докеров вы используете, или вы использовали свой собственный файл докеров? - person JL-HaiNan; 13.02.2018