Deckhouse Kubernetes Platform в Google Cloud

Перед началом установки убедитесь в наличии квот облачного провайдера, необходимых для развертывания вашего кластера. Убедитесь, что у вас включен Compute Engine API.

Чтобы использовать ContainerdV2 в качестве container runtime на узлах кластера, ОС на виртуальных машинах должны соответствовать следующим требованиям:

  • ядро Linux версии 5.8 и новее;
  • поддержка CgroupsV2;
  • systemd версии 244 и новее;
  • поддержка модуля ядра erofs.

Подробнее — в документации.

Deckhouse Kubernetes Platform, начиная с версии 1.74, имеет механизм контроля целостности модулей, который защищает их от подмены и изменения. Этот механизм включается автоматически при поддержке операционной системой на узлах, где установлен Deckhouse, модуля ядра erofs. При отсутствии этого модуля ядра Deckhouse продолжит работу без механизма контроля целостности модулей, при этом появится алерт о неработоспособности этой функциональности.

На виртуальных машинах должен быть установлен пакет cloud-init. После запуска виртуальной машины должны быть запущены следующие службы, связанные с этим пакетом :

  • cloud-config.service;
  • cloud-final.service;
  • cloud-init.service.

Провайдер поддерживает работу только с одним диском в шаблоне виртуальной машины. Убедитесь, что шаблон содержит только один диск.

Чтобы 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