На виртуальных машинах должен быть установлен пакет cloud-init
.
После запуска виртуальной машины должны быть запущены следующие службы, связанные с этим пакетом:
cloud-config.service
;cloud-final.service
;cloud-init.service
.
Чтобы Deckhouse мог управлять ресурсами, в Google Cloud необходимо создать service account. Далее представлена краткая последовательность действий по созданию service account. Если вам необходима более подробная инструкция, вы можете найти ее в документации провайдера.
Внимание! Созданный service account key
невозможно восстановить, только удалить и создать новый.
Настройка через Google Cloud Console
Перейдите по ссылке, выберите проект и создайте новый service account (также можно выбрать уже существующий).
Созданному service account’у должны быть присвоены несколько необходимых ролей:
Compute Admin
Service Account User
Network Management Admin
Роли можно присвоить на этапе создания service account’а либо изменить на этой странице.
Чтобы получить service account key
в JSON-формате, на странице в колонке Actions нажмите на три вертикальные точки и выберите Manage keys
. Затем нажмите Add key
-> Create new key
-> Key type
-> JSON
.
Настройка через gcloud CLI
Для настройки через интерфейс командной строки выполните следующие шаги:
-
Экспортируйте переменные окружения:
export PROJECT_ID=sandbox export SERVICE_ACCOUNT_NAME=deckhouse
-
Выберите project:
gcloud config set project $PROJECT_ID
-
Создайте service account:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME
-
Присвойте роли созданному service account:
for role in roles/compute.admin roles/iam.serviceAccountUser roles/networkmanagement.admin; do gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ --role=${role}; done
Список необходимых ролей:
roles/compute.admin roles/iam.serviceAccountUser roles/networkmanagement.admin
-
Выполните проверку ролей service account:
gcloud projects get-iam-policy ${PROJECT_ID} --flatten="bindings[].members" --format='table(bindings.role)' \ --filter="bindings.members:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
-
Создайте
service account key
:gcloud iam service-accounts keys create --iam-account ${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ ~/service-account-key-${PROJECT_ID}-${SERVICE_ACCOUNT_NAME}.json