Возможность запуска команд gcloud из контейнера в GKE или CloudRun - PullRequest
0 голосов
/ 24 сентября 2019

Я только что установил gcloud в контейнер докера.

Когда я пытаюсь выполнить команду локально, я получаю следующую ошибку (что имеет смысл)

root@3c4b9a147de7:/# gcloud projects list
ERROR: (gcloud.projects.list) You do not currently have an active account selected.
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.

ЕслиЯ правильно установил учетную запись службы (для службы, из которой будет запускаться контейнер), будет ли работать приведенная выше команда?

Ответы [ 4 ]

0 голосов
/ 25 сентября 2019

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

Когда что-то запускается через Cloud Run,затем он по умолчанию использует учетную запись службы Compute Engine.Если эта учетная запись имеет необходимые разрешения, то команда будет выполнена успешно.Посмотрите на аутентификацию в Cloud Build здесь Нечто подобное применимо к GKE в отношении учетной записи службы, как вы можете найти здесь .

0 голосов
/ 24 сентября 2019

Если я правильно настрою учетную запись службы (для службы, из которой будет запускаться контейнер), сработает ли вышеуказанная команда?

Я не уверен, что вы подразумеваете под "сервис, из которого будет работать контейнер ".Сервису могут быть назначены учетные данные, но все, что находится внутри контейнера, не узнает об этом.

Чтобы использовать учетную запись службы с CLI Google Cloud SDK, необходимо настроить CLI для использования учетной записи службы.Следующая команда делает это.Замените SA_EMAIL на адрес электронной почты вашей учетной записи.Адрес электронной почты можно найти в файле ключа JSON учетной записи службы.

gcloud auth activate-service-account SA_EMAIL --key-file=service_account.json

После выполнения этой команды сохраните контейнер, чтобы учетные данные оставались там при следующем запуске этого контейнера.

0 голосов
/ 24 сентября 2019

gcloud auth login не рекомендуется в контейнере, поскольку он ссылается на вашу личность.Предпочитаю учетную запись службы.Сохраните его в своем контейнере и определите переменную среды GOOGLE_APPLICATION_CREDENTIAL, чтобы указать на этот файл.

Вы также можете запустить gcloud auth activate-service-account с файлом учетной записи службы в параметре во время сборки контейнера.

ОДНАКО , не рекомендуется использовать этот инструмент в контейнере.С Cloud Run даже возможно, что этот вызов будет заблокирован (я никогда не пробую, но позабочусь о выполнении среды песочницы).Предпочитаю libs или прямой вызов API.

0 голосов
/ 24 сентября 2019

Если в док-контейнере установлен gcloud sdk ( Google Cloud SDK Shell ), запустите Google Cloud SDK для аутентификации, используя $ gcloud auth login, после этого вы можете запустить командную строку gcloud.проверьте также путь в переменной Enviroments для каталога gcloud

...