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.adminroles/iam.serviceAccountUserroles/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