2017-01-12 13 views
5

Я обнаружил различное поведение внутри и снаружи изображения докеров для аутентификации учетной записи службы google.Аутентификация учетной записи Google Cloud-сервиса на изображении докеры

Снаружи. Преуспевает.

C:\Users\Ben\AppData\Local\Google\Cloud SDK>gcloud auth activate-service-account [email protected] --key-file C:/Users/Ben/Dropbox/Google/MeerkatReader-d77c0d6aa04f.json --project api-project-773889352370 
Activated service account credentials for: [[email protected]] 

Запустить контейнер докеров, передать ключ .json в каталог tmp.

C:\Users\Ben\AppData\Local\Google\Cloud SDK>docker run -it -v C:/Users/Ben/Dropbox/Google/MeerkatReader-d77c0d6aa04f.json:/tmp/MeerkatReader-d77c0d6aa04f.json --rm -p "127.0.0.1:8080:8080" --entrypoint=/bin/bash gcr.io/cloud-datalab/datalab:local-20161227 

Изнутри грузчиком, подтверждают, что файл существует

[email protected]:/tmp# ls 
MeerkatReader-d77c0d6aa04f.json npm-24-b7aa1bcf npm-45-fd13ef7c npm-7-22ec336e 

Выполните ту же команду, как и раньше. Не удается.

[email protected]:/tmp# gcloud auth activate-service-account [email protected] 
t.com --key-file MeerkatReader-d77c0d6aa04f.json --project api-project-773889352370 
ERROR: (gcloud.auth.activate-service-account) Failed to activate the given service account. Please ensure provided key file is valid. 

Что может послужить причиной этой ошибки? В более широком смысле, что такое suggested strategy для передачи учетных данных. Я пробовал это, и он терпит неудачу. Я использую облачный API и облачное зрение, и я бы хотел избежать ручного gcloud init в начале каждого запуска.

EDIT: Для того, чтобы показать gcloud информации

[email protected]:/# gcloud info --run-diagnostics 
Network diagnostic detects and fixes local network connection issues. 
Checking network connection...done. 
Reachability Check passed. 
Network diagnostic (1/1 checks) passed. 

подтвердил такое же поведение

[email protected]:/tmp# gcloud auth activate-service-account [email protected] --key-file MeerkatReader-d77c0d6aa04f.json --project api-project-773889352370 
ERROR: (gcloud.auth.activate-service-account) Failed to activate the given service account. Please ensure provided key file is valid. 
+0

Эта ошибка возникает, когда gcloud пытается получить токен доступа. У вас есть сетевое подключение и/или настройка прокси-сервера из контейнера. Можете ли вы запустить 'gcloud info --run-diagnostics'? – cherba

+0

Отредактировано для добавления информации gcloud. Есть ли что-то, что мне нужно добавить для запуска docker, чтобы разрешить доступ (к определенному порту?). – bw4sz

+0

Также, работая над этой проблемой, похоже, что веб-логин должен запускаться хотя бы один раз: _ «[Вам нужно только запустить команду один раз для локальной пользовательской среды.] (Https://cloud.google.com/docs/ аутентификация # get_credentials_for_server-centric_flow # local_development) "_ –

ответ

0

попытался вам поставить верительный в изображении с самого начала? Это аналогичный результат?

С другой стороны, вы пробовали использовать --key-file /tmp/MeerkatReader-d77c0d6aa04f.json? Так как вы помещаете json-файл в /tmp.

Возможно, вам также потребуется проверить конфигурацию сети внутри контейнера и докеры снаружи.

4

Возможно, это связано с перекосом часов докеры VM. Я отлажена функция Activate-сервис-аккаунт в Google SDK и получила следующее сообщение об ошибке:

There was a problem refreshing your current auth tokens: invalid_grant: 
Invalid JWT: Token must be a short-lived token and in a reasonable timeframe 
Please run: 
$ gcloud auth login 

to obtain new credentials, or if you have already logged in with a different account: 

$ gcloud config set account ACCOUNT 

to select an already authenticated account to use. 

После перезагрузки виртуальной машины, он работал как шарм.

+1

такой же вопрос здесь - часы были на несколько минут впереди! – lifeofguenter

+0

Проверена «дата» в докере, была неправильная перезагрузка докеров VM и исправлена. благодаря –