Шаг 0. Подготовка к инсталляции платформы Боцман
Перед началом инсталляции платформы "Боцман" убедитесь, что выполнены все шаги по подготовке:
- Подготовлен АРМ Администратора АРМ
- Подготовлен образ операционной системы
Внимание!
Для успешной инсталяции, на вашем аккаунте VK Cloud должна быть активирована двуфакторная авторизация.
Дополнительные возможности инсталяции
На этой странице начиная с Шага 1 будет представлена обычная инсталяция без существенных модификаций и в качестве первого опыта рекомендуется использовать именно ее, но вы можете дополнительно модифицировать свою инсталяцию:
- Установка кластера с внешний Etcd
- Установка Bootsman 1+1 для тестовых сред
- Расширенные настройки мастер-узлов
- Зеркалирование образов контейнеров
Шаг 1. Подготовка файла конфигурации (bootsman.config.yaml)
На АРМ создайте конфиг файл bootsman.config.yaml в той же директории, где расположен инсталлятор-bootsmanctl
Заметка
Обратите внимание на закомментированные блоки. Следует выбрать один из предложенных и раскомментировать.
kubernetesVersion: KUBERNETES_VERSION (1)
# Раскоментируйте блок в случае airgap установки
# registry:
# username: PRIVATE_REGISTRY_USERNAME (2)
# password: PRIVATE_REGISTRY_PASSWORD (3)
# path: PRIVATE_REGISTRY_URL (4)
# insecure: PRIVATE_REGISTRY_INSECURE (5)
sshAuthorizedKeys: (6)
- ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@example.ru
wait:
clusterCtlTimeout: 30m0s (42)
operationTimeout: 40m0s (43)
operationRetryInterval: 15s (44)
objCreateTimeout: 4m0s (45)
objCreateInterval: 5s (46)
infrastructure:
clusterNetwork:
podCidrBlocks: ["POD_CIDR"] (7)
servicesCidrBlocks: ["SERVICE_CIDR"] (8)
vk:
projectId: VK_PROJECT_ID (9)
regionName: VK_REGION_NAME (10)
auth:
identityEndpoint: VK_ENDPOINT (11)
userDomainName: VK_USER_DOMAN_NAME (41)
credentials:
username: VK_USERNAME (12)
password: VK_PASSWORD (13)
network:
# Раскоментируйте блок в случае использования новой сети VK cloud
# name: VK_NETWORK_NAME (14)
# Раскоментируйте блок в случае использования существующей сети VK cloud
# id: VK_NETWORK_ID (15)
# useExisting: VK_NETWORK_EXIST (16)
externalNetworkName: VK_EXTERNAL_NETWORK_NAME (17)
subnetwork:
# Раскоментируйте блок в случае использования новой подсети VK cloud
# name: VK_SUBNETWORK_NAME (18)
# cidr: VK_SUBNETWORK_CIDR (21)
# Раскоментируйте блок в случае использования существующей подсети VK cloud
# id: VK_SUBNETWORK_ID (19)
# useExisting: VK_SUBNETWORK_USE_EXISTING (20)
router:
# Раскоментируйте блок в случае использования нового маршрутизатора VK cloud
# name: VK_ROUTER_NAME (22)
# Раскоментируйте блок в случае использования существующего маршрутизатора VK cloud
# id: VK_ROUTER_ID (23)
# useExisting: VK_ROUTER_EXIST (24)
privacyScope: VK_PRIVACY (25)
controlPlane:
endpoint:
host: ""
port: KUBE_API_PORT (26)
replicas: KCP_REPLICAS (27)
label: master
kubeletExtraArgs: {}
vkMachine:
imageId: VK_CONTROLPLANE_IMAGE_ID (28)
availabilityZones:
- VK_CONTROLPLANE_AVAILABILITY_ZONE (29)
flavorRef: VK_CONTROLPLANE_FLAVOR_REF (30)
volumeSize: VK_CONTROLPLANe_VOLUME_SIZE (31)
volumeType: VK_CONTROLPLANE_VOLUME_TYPE (32)
machineHealthCheck:
timeoutDuration: 10m0s (47)
maxUnhealthy: 100% (48)
workerPool:
replicas: WORKER_REPLICAS (33)
label: worker
kubeletExtraArgs: {}
vkMachine:
imageId: VK_WORKER_IMAGE_ID (34)
availabilityZones:
- VK_WORKER_AVAILABILITY_ZONE (35)
flavorRef: VK_WORKER_FLAVOR_REF (36)
volumeSize: VK_WORKERE_VOLUME_SIZE (37)
volumeType: VK_WORKER_VOLUME_TYPE (38)
machineHealthCheck:
timeoutDuration: 10m0s (49)
maxUnhealthy: 40% (50)
web:
bootstrapPassword: BOOTSMAN_WEB_BOOTSTRAPPASSWORD (39)
hostname: BOOTSMAN_WEB_HOSTNAME (40)
- Версия Kubernetes. Поддерживаемые версии
- Имя пользователя в репозитории образов.
Если установка будет производится online блок registry можно удалить
- Пароль для пользователя в репозитории образов.
Если установка будет производится online блок registry можно удалить
- URL вашего репозитория образов.
Если установка будет производится online блок registry можно удалить
- Это служебный параметр, всегда будет false
- Список ssh-ключей, которые будут добавлены на узлы
- Блок адресов для Pods.
Должен не пересекаться с другими блоками внутри одного Kubernetes кластера и реальными сетями вашей инфраструктуры.
Допустимый размер блока /[1-20]
Пример:
podsCidrBlocks: ["172.20.0.0/16"] - Блок адресов для Service.
Должен не пересекаться с другими блоками внутри одного Kubernetes кластера и реальными сетями вашей инфраструктуры.
Допустимый размер блока /[1-20]
Пример:
servicesCidrBlocks: ["172.21.0.0/16"] - ID проекта в облаке VK.
Можно узнать в "Настройках проекта" в разделе "Terraform" параметр "Project ID / tenant_id"
- Служебный параметр для работы с API.
Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Region Name
- URL для API доступа к вашему проекту.
Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Auth URL"
- Имя пользователя для авторизации в VK Cloud
- Пароль пользователя для авторизации в VK Cloud
- Имя сети VK CLoud. Несовместим с VK_NETWORK_ID
- ID существующей сети
- true - использовать существующую сеть VK Cloud, false - создать новую
- Технический параметр. Всегда будет "ext-net"
- Имя подсети VK CLoud. Несовместим с VK_SUBNETWORK_ID
- ID существующей подсети
- {{ no such element: dict object['VK_SUBNETWORK_USE_EXISTING'] }}
- Адресное пространство для новой подсети VK CLoud. Несовместим с существующей подсетью
- Имя маршрутизатора VK CLoud. Несовместим с VK_ROUTER_ID
- ID существующего роутера
- true - использовать существующий роутер, false - создать новую
- Выбор режима взаимодействия с кластером Поддерживаемые значения Public, PrivateMachines, Private. Подробнее
- Порт kube-api. По-умолчанию 6443
- Количество узлов с ролью master.
Может принимать значения 3 или 5
- ID образа операционной системы.
Подготовьте ОС в соответствии с инструкцией или используйте уже подготовленные образа
- Зона доступности VK Cloud. Возможно задать более 1 зоны.
- Шаблон конфигурации облака VK.
- Объём дискового пространства.
Измеряется в GiB.
- Тип дисков.
Подробнее о типах дисков
- Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
- ID образа операционной системы.
Подготовьте ОС в соответствии с инструкцией или используйте уже подготовленные образа
- Зона доступности VK Cloud. Возможно задать более 1 зоны.
- Шаблон конфигурации облака VK.
- Объём дискового пространства.
Измеряется в GiB.
- Тип дисков.
Подробнее о типах дисков
- Первоначальный пароль от web портала
- Доменное имя, по которому будет доступен web портал платформы.
Имя должно иметь запись на DNS-сервере.
Нельзя использовать Hosts
Нельзя указывать IP-адрес
- Технический параметр. Всегда будет "users".
Можно узнать в "Настройках проекта" в разделе "Доступ по API" параметр "Auth URL"
- Таймаут на все действия bootsmanctl
- Таймаут по-умолчанию для всех операций
- Интервал по-умолчанию для всех операций
- Таймаут на создание или обновление объектов
- Интервал повторной попытки создания или обновления объектов
- Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.
По-умолчанию 10m
- Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.
Для узлов с ролью master, значение по-умолчанию 100%.
Для узлов с ролью worker, значение по-умолчанию 40%
- Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.
По-умолчанию 10m
- Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.
Для узлов с ролью master, значение по-умолчанию 100%.
Для узлов с ролью worker, значение по-умолчанию 40%
Пример заполненного файла конфигурации:
kubernetesVersion: v1.28.4
registry:
username: demo
password: demo
path: redos-quay.example.lan/bootsman-v210
insecure: true
sshAuthorizedKeys:
- ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@example.ru
wait:
AddonHelmTimeout: 10m
clusterCtlTimeout: 50m0s
operationTimeout: 40m0s
operationRetryInterval: 15s
objCreateTimeout: 4m0s
objCreateInterval: 5s
infrastructure:
clusterNetwork:
podCidrBlocks: ["172.20.0.0/16"]
servicesCidrBlocks: ["172.21.0.0/16"]
vk:
projectId: d1f12a62de9bdf541302f158
regionName: RegionOne
auth:
identityEndpoint: https://infra.mail.ru:35357/v3/
userDomainName: users
credentials:
username: demo@example.ru
password: demopass
network:
name: bootsman-network
externalNetworkName: ext-net
subnetwork:
name: bootsman-subnetwork
cidr: 10.0.250.0/24
router:
name: bootsman-router
privacyScope: Public
controlPlane:
endpoint:
host: ""
port: 6443
replicas: 3
label: ""
kubeletExtraArgs: {}
vkMachine:
imageId: 68e42c1c-c62a-4c16-9c28-3646bffbc8df
availabilityZones:
- MS1
flavorRef: STD3-4-12
volumeSize: 100
volumeType: ceph-ssd
workerPool:
replicas: 3
label: ""
kubeletExtraArgs: {}
vkMachine:
imageId: 68e42c1c-c62a-4c16-9c28-3646bffbc8df
availabilityZones:
- MS1
flavorRef: STD3-4-12
volumeSize: 60
volumeType: ceph-ssd
web:
bootstrapPassword: "somePassword123$"
hostname: rancher.redos-v21-ag.dev.example.lan
kubernetesVersion: "v1.28.4"
sshAuthorizedKeys:
- ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@example.ru
wait:
AddonHelmTimeout: 10m
clusterCtlTimeout: 50m0s
operationTimeout: 40m0s
operationRetryInterval: 15s
objCreateTimeout: 4m0s
objCreateInterval: 5s
infrastructure:
clusterNetwork:
podCidrBlocks: ["172.20.0.0/16"]
servicesCidrBlocks: ["172.21.0.0/16"]
vk:
projectId: d1f12a62de9bdf541302f158
regionName: RegionOne
auth:
identityEndpoint: https://infra.mail.ru:35357/v3/
userDomainName: users
credentials:
username: demo@example.ru
password: demopass
network:
name: bootsman-network
externalNetworkName: ext-net
subnetwork:
name: bootsman-subnetwork
cidr: 10.0.250.0/24
router:
name: bootsman-router
privacyScope: Public
controlPlane:
endpoint:
host: ""
port: 6443
replicas: 3
label: ""
kubeletExtraArgs: {}
vkMachine:
imageId: 68e42c1c-c62a-4c16-9c28-3646bffbc8df
availabilityZones:
- MS1
flavorRef: STD3-4-12
volumeSize: 60
volumeType: ceph-ssd
workerPool:
replicas: 3
label: ""
kubeletExtraArgs: {}
vkMachine:
imageId: 68e42c1c-c62a-4c16-9c28-3646bffbc8df
availabilityZones:
- MS1
flavorRef: STD3-4-12
volumeSize: 60
volumeType: ceph-ssd
web:
bootstrapPassword: "somePassword123$"
hostname: rancher.redos-v21-ag.dev.example.lan
Шаг 2. Запуск установки
Заметка
Установка платформы "Боцман" запускается с заранее подготовленным АРМ
Выполните команду запуска процесса установки:
- cluster-name - Имя управляющего кластера
Вывод инсталляции должен окончиться так:
В процессе установки кластера будет формироватьсяжурнал событий
Неудачная инсталляция
В случае, если установка прервалась, и потребуется сделать еще одну попытку. Для новой попытки нужно сделать:
- Удалить вручную все что успел создать установщик Ресурсы Bootsman
- Удалить файлы инсталляции на АРМ администратора
- Если лицензия была установлена в env операционной системы - удостовериться в ее наличии
Доступ в интерфейс
Для успешного доступа в интерфейс нужно добавить запись в ваш DNS-сервер.
Запись состоит из двух параметров: IP-адрес и доменное имя(Оно указывалось в bootsman.config.yaml в виде опции BOOTSMAN_WEB_HOSTNAME).
IP-адрес можно получить двумя способами:
- Использовать kubectl(потребуется отдельная установка) и kubeconfig управляющего кластера
- Зайти в VK Cloud в указанный Folder и найти балансировщик вида: kube_service_cluster-name_nginx-ingress_ingress-nginx-controller
После добавления записи, произведите вход в web-панель (1)
- Адрес web-панели содержится в опции BOOTSMAN_WEB_HOSTNAME
- Пароль для доступа в web-панель содержится в опции BOOTSMAN_WEB_BOOTSTRAPPASSWORD
Вы авторизовались под пользователем admin. Далее рекомендуем сменить этот пароль с помощью стандартного меню управления пользователями.

