Deckhouse Kubernetes Platform в Google Cloud

Перед установкой обязательно проверьте:

  • Квоты облачного провайдера для развёртывания кластера.
  • Включён Compute Engine API.
  • На ВМ установлен пакет cloud-init. После старта ВМ запущены службы cloud-config.service, cloud-final.service, cloud-init.service.
  • В шаблоне виртуальной машины присутствует только один диск.

Дополнительные требования и сведения

  • Для ContainerdV2 на узлах кластера ОС на виртуальных машинах должна соответствовать требованиям:
    • ядро Linux версии 5.8 и новее, за исключением диапазонов 6.12.0–6.12.28 или 6.14.0–6.14.6 (эти версии подвержены уязвимости CVE-2025-37999 в EROFS);
    • поддержка CgroupsV2;
    • systemd версии 244 и новее;
    • поддержка модуля ядра erofs.

    Подробнее в разделе «ClusterConfiguration».

  • Начиная с версии 1.74 в Deckhouse появился механизм контроля целостности модулей (защита от подмены и модификаций). Он включается автоматически, если на узлах ОС поддерживает модуль ядра erofs. Если erofs недоступен, Deckhouse продолжит работать как раньше, но контроль целостности будет отключён, и в мониторинге появится алерт о недоступности механизма.

Чтобы Deckhouse Kubernetes Platform смог управлять ресурсами в облаке Google Cloud, необходимо создать сервисный аккаунт. Подробная инструкция по этому действию доступна в документации. Здесь мы представим краткую последовательность необходимых действий (выполните их на персональном компьютере):

Список необходимых ролей:

  • roles/compute.admin
  • roles/iam.serviceAccountUser
  • roles/networkmanagement.admin

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

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

Выполните проверку ролей 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