Установка подчиненного кластера
Требования к запуску нового подчинённого кластера
Заметка
Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее
Перед началом установки подчинённого кластера следует удовлетворить следующие требования:
- Успешная установка управляющего кластера Bootsman
- DNS-имя управляющего кластера должно быть в DNS-сервере и разрешается для будущего подчинённого кластера
- Доступ подчинённого кластера к управляющему
- Сумма символов будущего имени кластера и имени Namespace не должно превышать 30 символов
Установка
Установку можно провести двумя способами:
- Использовать установщик Bootsman
- Применить yaml-манифесты
Установка с помощью установщика Bootsman
Заметка
Во время заполнения формы вы можете в любой момент переключится в режим yaml
Для создания подчинённого кластера авторизуйтесь в управляющий кластер и нажмите кнопку 
Вас перенаправит на страничку установщика для заполнения данных о будущем кластере.
Сначала укажите имя нового подчинённого кластера (1)
- Cluster Name
Kubernetes Options
| Имя параметра | Описание | Комментарий |
|---|---|---|
| SUBCLUSTER_KUBERNETES_VERSION | Версия Kubernetes. Поддерживаемые версии | |
| SUBCLUSTER_NAMESPACE | Namespace управляющего кластера, который будет содержать объекты подчинённого кластера | |
| SUBCLUSTER_POD_CIDR | Подсеть для подов подчинённого кластера | Не пересекается с управляющим или другим подчинённым кластером |
| SUBCLUSTER_SERVICE_CIDR | Подсеть для сервисов подчинённого кластера | Не пересекается с управляющим или другим подчинённым кластером |
Provider Configuration
| Имя параметра | Описание | Комментарий |
|---|---|---|
| BREST_AUTH_URL | IP-адрес или DNS-имя Brest. Пример: http://10.0.0.10:2633/RPC2 |
Заметка
В случае использования уже существующего секрета на управляющем кластере, следует использовать настройку "Credential settings" "Use existing" Формы помогут найти секрет и указать имена полей, которые соответствуют пользователю и паролю
| Имя параметра | Описание | Комментарий |
|---|---|---|
| BREST_AUTH_SECRET_NAMESPACE | Имя namespace, в котором размещен secret для авторизации | |
| BREST_AUTH_SECRET_NAME | Имя секрета с авторизацией в Brest | |
| BREST_AUTH_USERNAME | Пользователь Brest | |
| BREST_AUTH_PASSWORD | Пароль пользователя Brest | |
| BREST_AUTH_SECRET_USERNAME_KEY | Ключ в секрете для хранения имени пользователя Brest | |
| BREST_AUTH_SECRET_PASSWORD_KEY | Ключ в секрете для хранения пароля пользователя Brest |
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${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 | Пароль для пользователя в репозитории образов | |
| PRIVATE_REGISTRY_SECRET_HOST_KEY | При использовании существующего secret. Указывает ключ, содержащий параметр HOST | |
| PRIVATE_REGISTRY_SECRET_USERNAME_KEY | При использовании существующего secret. Указывает ключ, содержащий параметр USERNAME | |
| PRIVATE_REGISTRY_SECRET_PASSWORD_KEY | При использовании существующего secret. Указывает ключ, содержащий параметр PASSWORD |
Control Plane
Заметка
Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее
| Имя параметра | Описание | Комментарий |
|---|---|---|
| KCP_REPLICAS | Количество узлов с ролью master. Может принимать значения 3 или 5 |
|
| K8SCPIP | IP ControlPlane подчиненного кластера. Адрес должен быть "свободен" и не состоять в dhcp-пулах Подробнее |
|
| KUBE_API_PORT | Порт для kube-api | По-умолчанию 6443 |
| MHC_MAX_UNHEALTY | Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления | Для узлов с ролью master, значение по-умолчанию 100% |
| MHC_TIMEOUT | Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck | По-умолчанию 10m |
Шаблон виртуальных машин
| Имя параметра | Описание | Комментарий |
|---|---|---|
| BREST_TEMPLATE_IMAGE_NAME | Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины | |
| BREST_VM_CONTROLPLANE_CPU | Число vCPU | Требования к инфраструктуре |
| BREST_VM_CONTROLPLANE_MEMORY_GB | Объём оперативной памяти. Пример: 8Gi |
Требования к инфраструктуре |
| BREST_VM_CONTROLPLANE_DISK_GB | Объём дискового хранилища. Пример: 45Gi |
Требования к инфраструктуре |
| Имя параметра | Описание | Комментарий |
|---|---|---|
| BREST_NETWORK_NAME | Имя сети, в которую будут подключены новые виртуальные машины | |
| BREST_NETWORK_ID | ID существующей сети. Аналог BREST_NETWORK_NAME | |
| BREST_NETWORK_ADDRESS | Начало DHCP-пула Бреста | |
| BREST_NETWORK_SIZE | Число IP-адресов в DHCP-пуле | |
| BREST_NETWORK_PHYDEV | Физическое устройство на узле | |
| BREST_NETWORK_VLAN_ID | vlan ID внутри гипервизора Брест | |
| BREST_NETWORK_GATEWAY | Адрес шлюза | |
| BREST_NETWORK_DNS | Опционально. Адрес dns-сервера |
WorkerPool
Шаблон виртуальных машин
Заметка
Вы не ограничены в одном типе ВМ, предназначенных для нагрузки. Для создания дополнительного пула виртуальных машин используйте кнопку
| Имя параметра | Описание | Комментарий |
|---|---|---|
| SUBCLUSTER_WORKERPOOL_NAME | Имя workerpool кластера. Должен быть уникальным в пределах namespace. |
|
| WORKER_REPLICAS | Число виртуальных машин | |
| MHC_MAX_UNHEALTY | Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления | Для узлов с ролью master, значение по-умолчанию 100% |
| MHC_TIMEOUT | Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck | По-умолчанию 10m |
| BREST_TEMPLATE_IMAGE_NAME | Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины | |
| BREST_VM_WORKERPOOL_CPU | Число vCPU | Требования к инфраструктуре |
| BREST_VM_WORKERPOOL_MEMORY_GB | Объём оперативной памяти. Пример: 12Gi |
Требования к инфраструктуре |
| BREST_VM_WORKERPOOL_DISK_GB | Объём дискового хранилища. Пример: 60Gi |
Требования к инфраструктуре |
Установка с помощью yaml-манифестов
Если вам удобнее способ применения yaml-манифестов, то ниже есть примеры. Заполните их в соответствии с описанием из главы, представленной ранее.
Для применения yaml-манифестов можно использовать kubectl
kubectl apply -f secret_brest_auth.yaml
kubectl apply -f cluster.yaml
kubectl apply -f workerpool.yaml
apiVersion: v1
kind: Secret
metadata:
name: BREST_AUTH_SECRET_NAME (1)
namespace: BREST_AUTH_SECRET_NAMESPACE (2)
data:
password: BREST_AUTH_PASSWORD (3)
username: BREST_AUTH_USERNAME (4)
- Имя secret для авторизации в Брест.
Один секрет может использоваться несколькими подчиненными кластерами.
- Имя namespace.
Может быть размещен в отдельном namespace относительно объектов подчиненного кластера.
- Пароль для авторизации в Брест.
- Имя пользователя для авторизации в Брест
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: Cluster
metadata:
name: SUBCLUSTER_NAME (1)
namespace: SUBCLUSTER_NAMESPACE (2)
spec:
bootsmanVersion: latest
clusterType: capi
capiConfig:
controlPlane:
replicas: KCP_REPLICAS (3)
endpoint:
host: K8SCPIP (4)
port: KUBE_API_PORT (5)
infrastructure:
provider: brest
sshAuthorizedKeys: (6)
- >-
ssh-ed25519 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
brestProviderConfig:
authConfig:
identityEndpoint: BREST_AUTH_URL (7)
passwordKey: password (8)
secret:
name: BREST_AUTH_SECRET_NAME (9)
namespace: BREST_AUTH_SECRET_NAMESPACE (10)
usernameKey: username (11)
machineOptions:
cpu: BREST_VM_CONTROLPLANE_CPU (12)
disk: BREST_VM_CONTROLPLANE_MEMORY_GB (13)
memory: BREST_VM_CONTROLPLANE_DISK_GB (14)
template:
name: BREST_TEMPLATE_IMAGE_NAME (15)
network:
name: BREST_NETWORK_NAME (16)
useExisting: true (17)
privacy: Private (18)
kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (19)
network:
podsCidrBlocks:
- SUBCLUSTER_POD_CIDR (20)
servicesCidrBlocks:
- SUBCLUSTER_SERVICE_CIDR (21)
registry:
url: PRIVATE_REGISTRY_URL (22)
credentials:
username: PRIVATE_REGISTRY_USERNAME (23)
password: PRIVATE_REGISTRY_PASSWORD (24)
kubeletExtraArgs:
kubeReserved: ''
systemReserved: ''
evictionHard: ''
evictionMinimumReclaim: ''
evictionMaxPodGracePeriod: ''
maxPods: ''
- Имя подчиненного кластера.
Должен быть уникальным в пределах namespace.
- Namespace управляющего кластера, который будет содержать объекты подчинённого кластера
- Количество узлов с ролью master.
Может принимать значения 3 или 5
- IP ControlPlane подчиненного кластера.
Адрес должен быть "свободен" и не состоять в dhcp-пулах Подробнее
- Порт kube-api. По-умолчанию 6443
- Список ssh-ключей, которые будут добавлены на узлы
- IP-адрес или DNS-имя Brest.
Пример: http://10.0.0.10:2633/RPC2
- Имя ключа, содержащего пароль в secret. По-умолчанию - password
- Имя secret с авторизацией в Brest
- Имя namespace, в котором размещен secret для авторизации
- Имя ключа, содержащего имя пользователя в secret. По-умолчанию - username
- Число vCPU
- Объём оперативной памяти.
Пример: 8Gi.
- Объём дискового хранилища.
Пример: 45Gi.
- Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины
- Имя сети, в которую будут подключены новые виртуальные машины
- true - использовать существующую сеть
- Брест поддерживает только Private
- Версия Kubernetes. Поддерживаемые версии
- Блок адресов для Pods.
Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.
Минимальный размер блока /16
Пример:podsCidrBlocks: - "172.20.0.0/16" - Блок адресов для Service.
Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.
Минимальный размер блока /16
Пример:servicesCidrBlocks: - "172.21.0.0/16" - URL вашего репозитория образов
- Имя пользователя в репозитории образов
- Пароль для пользователя в репозитории образов
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
name: SUBCLUSTER_WORKERPOOL_NAME (1)
namespace: SUBCLUSTER_NAMESPACE (2)
spec:
clusterName: SUBCLUSTER_NAME (3)
kubernetesVersion: SUBCLUSTER_KUBERNETES_VERSION (4)
replicas: WORKER_REPLICAS (5)
infrastructure:
provider: brest
brestProviderConfig:
cpu: BREST_VM_WORKERPOOL_CPU (6)
disk: BREST_VM_WORKERPOOL_DISK_GB (7)
memory: BREST_VM_WORKERPOOL_MEMORY_GB (8)
template:
name: BREST_TEMPLATE_IMAGE_NAME (9)
kubeletExtraArgs:
kubeReserved: ''
systemReserved: ''
evictionHard: ''
evictionMinimumReclaim: ''
evictionMaxPodGracePeriod: ''
maxPods: ''
- Имя workerpool кластера.
Должен быть уникальным в пределах namespace.
- Имя namespace, должен соответствовать имени namespace указанный в Cluster.yaml
- Имя кластера SUBCLUSTER_NAME, к которому будет подключен workerpool
- Версия Kubernetes.
Может принимать значения указанные в cluster.yaml и ниже из числа поддерживаемых.
Поддерживаемые версии){target="_blank"}
- Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
- Число vCPU
- Объём оперативной памяти.
Пример: 12Gi.
- Объём дискового хранилища.
Пример: 60Gi.
- Имя шаблона виртуальной машины, из которого будут созданы новые виртуальные машины



























