На виртуальных машинах должен быть установлен пакет 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

Для настройки через интерфейс командной строки выполните следующие шаги:

  1. Экспортируйте переменные окружения:

    export PROJECT_ID=sandbox
    export SERVICE_ACCOUNT_NAME=deckhouse
    
  2. Выберите project:

    gcloud config set project $PROJECT_ID
    
  3. Создайте service account:

    gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME
    
  4. Присвойте роли созданному 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
    
  5. Выполните проверку ролей 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"
    
  6. Создайте 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