VK Cloud
Требования к запуску нового подчинённого кластера
Заметка
Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее
Перед началом установки подчинённого кластера следует удовлетворить следующие требования:
- Успешная установка управляющего кластера Bootsman
- DNS-имя управляющего кластера должно быть в DNS-сервере и разрешается для будущего подчинённого кластера
- Доступ подчинённого кластера к управляющему
- Сумма символов будущего имени кластера и имени Namespace не должно превышать 30 символов
Установка
Установку можно провести двумя способами:
- Использовать установщик Bootsman
- Применить yaml-манифесты
Установка с помощью установщика Bootsman
Заметка
Во время заполнения формы вы можете в любой момент переключиться в режим yaml
Для создания подчинённого кластера авторизуйтесь в управляющий кластер и нажмите кнопку 
Откроется страница установщика для заполнения данных о будущем кластере.
Сначала укажите имя нового подчинённого кластера (1) и описание (2)
- Cluster Name
- Description
Kubernetes Options
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${SUBCLUSTER_KUBERNETES_VERSION} | Версия Kubernetes | |
| ${SUBCLUSTER_NAMESPACE} | Namespace управляющего кластера, который будет содержать объекты подчинённого кластера | |
| ${SUBCLUSTER_POD_CIDR} | Подсеть для подов подчинённого кластера | Не пересекается с управляющим или другим подчинённым кластером |
| ${SUBCLUSTER_SERVICE_CIDR} | Подсеть для сервисов подчинённого кластера | Не пересекается с управляющим или другим подчинённым кластером |
Provider Configuration
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${VK_PROJECT_ID} | ID проекта в облаке VK | Можно узнать в "Найстройках проекта" в разделе "Terraform" параметр "Project ID / tenant_id" |
| ${VK_REGION_NAME} | Служебный параметр для работы с API | Можно узнать в "Найстройках проекта" в разделе "Доступ по API" параметр "Region Name" |
| ${VK_PRIVACY} | Выбор режима взаимодействия с кластером | Поддерживаемые значения Public, PrivateMachines, Private. Подробнее |
| ${VK_ENDPOINT} | URL для API доступа к вашему проекту | Можно узнать в "Найстройках проекта" в разделе "Доступ по API" параметр "Auth URL" |
| ${VK_USER_DOMAN_NAME} | Технический параметр. Всегда будет "users" | Можно узнать в "Найстройках проекта" в разделе "Доступ по API" параметр "Auth URL" |
| ${VK_USERNAME} | Имя пользователя для авторизации в VK Cloud | |
| ${VK_PASSWORD} | Пароль пользователя для авторизации в VK Cloud | |
| ${SSH_KEY_#} | Публичный ключ, который будет добавлен на узлы подчиненного кластера |
Private Registry
В случае, если вы хотите использовать наш репозиторий образов, то переключите параметр "Use private registry" в выключенное состояние и продолжайте заполнять в соотвествии с следующим разделом.
Если хотите произвести установку из локального репозитория, то заполните поля из формы ниже
Заметка
В случае использования уже существующего секрета на управляющем кластере, следует использовать настройку "Credential settings" "Use existing" Формы помогут найти секрет и указать имена полей, которые соотвествуют пользователю и паролю
Заметка
Advanced mode поможет вам задать специфические имена ключей в секрете. По умолчанию, username - пользователь, password - пароль
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${PRIVATE_REGISTRY_URL} | URL вашего репозитория образов | |
| ${PRIVATE_REGISTRY_SECRET_NAMESPACE} | Namespace секрета | |
| ${PRIVATE_REGISTRY_SECRET_NAME} | Имя секрета | |
| ${PRIVATE_REGISTRY_USERNAME} | Имя пользователя в репозитории образов | |
| ${PRIVATE_REGISTRY_PASSWORD} | Пароль для пользователя в репозитории образов |
Control Plane
Заметка
Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${KCP_REPLICAS} | Число реплик мастер-нод | |
| ${KUBE_API_PORT} | Порт для kube-api | По умолчанию 6443 |
Настройка Сети
Bootsman позволяет использовать как существующие сети и подсети VK Cloud, так и вновь созданные
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${VK_NETWORK_NAME} | Имя сети | Не совместим с ${VK_NETWORK_ID} |
| ${VK_NETWORK_ID} | ID существующей сети | Не совместим с ${VK_NETWORK_NAME} |
| ${VK_SEC_GROUP} | Имя группы правил в Firewall в облаке VK | Опционально |
| ${VK_SUBNETWORK_NAME} | Имя подсети | Не совместим с ${VK_SUBNETWORK_ID} |
| ${VK_SUBNETWORK_ID} | ID существующей подсети | Не совместим с ${VK_NETWORK_NAME} |
| ${VK_SUBNETWORK_CIDR} | адресное пространство для новой подсети | Не совместим с ${VK_SUBNETWORK_ID} |
| ${VK_ROUTER_NAME} | Имя маршрутизатора облака ВК | Не совместим с ${VK_ROUTER_ID} |
| ${VK_ROUTER_ID} | ID существующего маршрутизатора | Не совместим с ${VK_ROUTER_NAME} |
Шаблон виртуальных машин
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${VK_KCP_IMAGE_ID} | ID образа операционной системы | Подготовьте ОС в соответсвии с инструкцией или используйте уже подготовленные образа |
| ${VK_KCP_FLAVOR} | Шаблон конфигурации облака VK | О Шаблонах конфигурации |
| ${VK_KCP_DISK_SIZE} | Тип дисков | Подробнее о типах дисков |
| ${VK_KCP_DISK_TYPE} | Объём дискового пространства | Измеряется в GiB |
| ${VK_KCP_ZONE} | Зона доступности VK Cloud. Возможно задать более 1 зоны | О зонах доступности |
WorkerPool
Шаблон виртуальных машин
Заметка
Вы не ограничены в одном типе ВМ, предназначенных для нагрузки. Для создания дополнительного пула виртуальных машин используйте кнопку
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${SUBCLUSTER_WORKERPOOL_NAME} | Имя пула виртуальных машин | |
| ${WORKER_REPLICAS} | Число виртуальных машин | |
| ${VK_WORKER_IMAGE_ID} | ID образа операционной системы | Подготовьте ОС в соответсвии с инструкцией или используйте уже подготовленные образа |
| ${VK_WORKER_FLAVOR} | Шаблон конфигурации облака VK | О Шаблонах конфигурации |
| ${VK_WORKER_DISK_SIZE} | Тип дисков | Подробнее о типах дисков |
| ${VK_WORKER_DISK_TYPE} | Объём дискового пространства | Измеряется в GiB |
| ${VK_WORKER_ZONE} | Зона доступности VK Cloud. Возможно задать более 1 зоны | О зонах доступности |
Установка с помощью yaml-манифестов
Если вам удобнее способ применения yaml-манифестов, то ниже есть примеры. Заполните их в соответствии с описанием из главы, представленной ранее.
Для применения yaml-манифестов можно использовать kubectl
kubectl apply -f Cluster.yaml
kubectl apply -f Workerpool.yaml
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: Cluster
metadata:
name: ${SUBCLUSTER_NAME}
namespace: ${SUBCLUSTER_NAMESPACE}
spec:
clusterType: capi
capiConfig:
kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
# Раскомментируйте здесь для установки из вашего регистри
# registry:
# url: ${PRIVATE_REGISTRY_URL}
# credentials:
# username: ${PRIVATE_REGISTRY_USERNAME}
# password: ${PRIVATE_REGISTRY_PASSWORD}
controlPlane:
replicas: ${KCP_REPLICAS}
endpoint:
port: ${KUBE_API_PORT}
infrastructure:
sshAuthorizedKeys:
- >-
ssh-ed25519 CCULn/ example
provider: vk
vkProviderConfig:
projectId: ${VK_PROJECT_ID}
regionName: ${VK_REGION_NAME}
authConfig:
credentials:
password: ${VK_PASSWORD}
username: ${VK_USERNAME}
identityEndpoint: ${VK_ENDPOINT}
userDomainName: users
secGroup:
name: ${VK_SEC_GROUP}
privacy: ${VK_PRIVACY}
network:
externalNetworkName: ext-net
name: ${VK_NETWORK_NAME}
useExisting: ${VK_NETWORK_EXIST}
router:
useExisting: ${VK_ROUTER_EXIST}
name: ${VK_ROUTER_NAME}
# Раскомментируйте здесь для использования существующей подсети
# subNetwork:
# name: ${VK_SUBNETWORK_NAME}
# useExisting: true
# Раскомментируйте здесь для создания новой подсети
# subNetwork:
# name: ${VK_SUBNETWORK_NAME}
# cidr: ${VK_SUBNETWORK_CIDR}
# useExisting: false
template:
imageId: ${VK_KCP_IMAGE_ID}
availabilityZones:
- ${VK_KCP_ZONE}
flavorRef: ${VK_KCP_FLAVOR}
volumeSize: ${VK_KCP_DISK_SIZE}
volumeType: ${VK_KCP_DISK_TYPE}
network:
podsCidrBlocks:
- ${SUBCLUSTER_POD_CIDR}
servicesCidrBlocks:
- ${SUBCLUSTER_SERVICE_CIDR}
kubeletExtraArgs:
kubeReserved: ''
systemReserved: ''
evictionHard: ''
evictionMinimumReclaim: ''
evictionMaxPodGracePeriod: ''
maxPods: ''
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
name: ${SUBCLUSTER_WORKERPOOL_NAME}
namespace: ${SUBCLUSTER_NAMESPACE}
spec:
clusterName: ${SUBCLUSTER_NAME}
kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
replicas: ${WORKER_REPLICAS}
infrastructure:
provider: vk
vkProviderConfig:
imageId: ${VK_WORKER_IMAGE_ID}
availabilityZones:
- ${VK_WORKER_ZONE}
flavorRef: ${VK_WORKER_FLAVOR}
volumeSize: ${VK_WORKER_DISK_SIZE}
volumeType: ${VK_WORKER_DISK_TYPE}
kubeletExtraArgs:
kubeReserved: ''
systemReserved: ''
evictionHard: ''
evictionMinimumReclaim: ''
evictionMaxPodGracePeriod: ''
maxPods: ''












