Deckhouse Platform в Google Cloud
Перед установкой обязательно проверьте:
- Квоты облачного провайдера для развёртывания кластера.
- Включён Compute Engine API.
- На ВМ установлен пакет
cloud-init. После старта ВМ запущены службыcloud-config.service,cloud-final.service,cloud-init.service. - В шаблоне виртуальной машины присутствует только один диск.
- Правила межсетевого экрана и группы безопасности разрешают UDP-трафик между узлами кластера. Новый кластер по умолчанию использует CNI Cilium с туннелированием трафика подов через VXLAN. Для работы Cilium на узлах требуется ядро Linux версии 5.8 или новее, а список портов приведён в разделе «Сетевое взаимодействие компонентов платформы».
Подготовьте окружение Google Cloud, чтобы Deckhouse Platform мог управлять ресурсами в облаке. Полная инструкция приведена на странице подготовки окружения модуля cloud-provider-gcp.
Создайте сервисный аккаунт для Deckhouse Platform. Выполните следующие команды на персональном компьютере.
Список необходимых ролей:
roles/compute.adminroles/iam.serviceAccountUserroles/networkmanagement.admin
Экспортируйте переменные окружения:
export PROJECT_ID=sandbox
export SERVICE_ACCOUNT_NAME=deckhouse
Выберите проект:
gcloud config set project $PROJECT_ID
Создайте сервисный аккаунт:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME
Назначьте роли сервисному аккаунту:
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
Проверьте роли сервисного аккаунта:
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"
Создайте ключ сервисного аккаунта:
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