Как разрешить учетной записи службы IAM запускать контейнер докеров в виртуальной машине GCP?

Я пытаюсь запустить образ докера при запуске виртуальной машины Google Cloud. Я выбрал новую учетную запись службы, которую создал в качестве учетной записи службы в разделе «Сведения об экземпляре виртуальной машины» через консоль. По какой-то причине команда docker run в сценарии запуска не работает. Я подозреваю, что это связано с тем, что учетная запись службы не авторизована для запуска команды «docker» на виртуальной машине, которая была установлена ​​с помощью установки yum. Может ли кто-нибудь сказать мне, как это можно сделать, т.е. дать этой служебной учетной записи разрешение на запуск команды docker?

Редактировать. Внутри сценария запуска я запускаю команду docker login для входа в реестр контейнеров Google, за которой следует docker run для запуска изображения.


person Cyac    schedule 22.02.2019    source источник
comment
Какую команду докеров вы используете? Вы пытаетесь вытащить изображение? В зависимости от команды docker это может быть связано с отсутствием ролей Cloud IAM или может быть связано с чем-то другим.   -  person Jason    schedule 23.02.2019
comment
В дополнение к тому, что сказал Джейсон, просмотрите файлы журнала для фактического сообщения об ошибке при запуске докера.   -  person John Hanley    schedule 23.02.2019
comment
Я обновил вопрос, указав сведения о команде. Также проверим файлы журнала.   -  person Cyac    schedule 23.02.2019


Ответы (2)


Я нашел решение и хочу поделиться им здесь, чтобы помочь кому-то другому, желающему сделать то же самое. Пользователь, выполняющий команду docker (без sudo), должен иметь группу docker. Поэтому я попытался добавить учетную запись службы в качестве пользователя и дал ей группу докеров, и все. docker login в gcr работали, docker run тоже. Итак, проблема решена, но возникает пара дополнительных вопросов.

Во-первых, правильно ли это сделать? Если нет, то что? Если это действительно правильный путь, то, возможно, учетная запись службы, выбранная при создании виртуальной машины, должна быть добавлена ​​в качестве пользователя при ее создании (виртуальной машине). Я понимаю, что это приводит к некоторым осложнениям, например к тому, что происходит при изменении учетной записи службы. Удаляется ли старый служебный аккаунт пользователя или его следует сохранить? Но я думаю, что, по крайней мере, можно предоставить возможность добавить пользователя учетной записи службы к виртуальной машине - что-то вроде флажка в консоли - чтобы конечный пользователь мог принять вызов. Надеюсь, кто-нибудь из GCP это прочитает.

person Cyac    schedule 23.02.2019

Как указано в этой статье, предпринятые вами шаги являются правильным способом сделай это. Добавление пользователей в группу «docker» позволит пользователям запускать команды docker без полномочий root. Если вы создаете новую учетную запись службы и хотите, чтобы эта учетная запись службы выполняла команды докеров в экземпляре виртуальной машины, вам также необходимо добавить эту учетную запись службы в группу докеров.

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

Обновление: автоматизация создания учетной записи службы при создании экземпляра виртуальной машины вручную была бы утомительной. В сценарии запуска вам необходимо сначала создать учетную запись службы с помощью команды gcloud, а затем добавьте соответствующие Роли IAM. Как только это будет сделано, вам все равно придется добавить учетную запись службы в каталог docker groupadd.

Было бы намного проще создать учетную запись службы из Консоль при создании экземпляра виртуальной машины. После создания экземпляра виртуальной машины вы можете добавить учетную запись службы в каталог docker groupadd.

Если вы хотите запросить новую функцию в GCE, вы можете отправить общедоступное средство отслеживания проблем, посетив этот сайт .

person Jason    schedule 01.03.2019
comment
Спасибо за подтверждение @Jason - person Cyac; 04.03.2019
comment
Если подход в моем ответе правильный, имеет ли смысл автоматизировать создание идентификатора пользователя учетной записи службы на виртуальной машине (автоматически) при создании виртуальной машины? Можно ли предоставить эту возможность пользователям, если они им понадобятся? - person Cyac; 04.03.2019
comment
Обновил мой исходный ответ. - person Jason; 06.03.2019
comment
Еще раз спасибо, Джейсон. Проверю общедоступный трекер проблем. Чтобы быть ясным, я хотел автоматизировать не создание учетной записи службы (и назначение разрешений IAM). Я хотел автоматизировать только создание пользователя учетной записи службы в виртуальной машине. Еще раз спасибо - person Cyac; 06.03.2019