2.5.0
Требования к обновлению
- Доступ до harbor.bootsman.host для обновления или выгрузки образов в ваш локальный регистри
- Наличие активной лицензии
- Наличие дистрибутивов:
bootsmanctl 2.5.0
- Наличие списка образов для выгрузки.
- Наличие в управляющем кластере 3 мастеров и 3 воркеров.
- Для baremetal обеспечьте как минимум одну свободную ноду.
- Все кластеры должны иметь версию Kubernetes 1.27.6+.
Внимание
Обновление подчиненного кластера проводим только путем правки Yaml-манифестов
Подготовка
Загрузка образов
Используя полученный список и скрипт, выгрузите из harbor.bootsman.host указанные образы и разместите их в вашем хранилище образов.
Для загрузки требуемых образов узнайте версию установленного кластера с помощью команды:
kubectl get deployment -n default -o wide | grep museum | awk '{print $7}' | awk -F":" '{print $2}'
С дистрибутивом есть файл с именем вида "${bootsman_version}.yaml".
В списке содержатся необходимые образы для конкретной версии bootsman.
Скачивание выполните командой:
./mirror.sh v2.5.0.yaml
Подготовка конфигурации
Начиная с версии v2.5.0, Bootsman начинает работать с структурированным файлом конфигурации в YAML-формате.
Для облегчения перехода вы можете использовать инструмент миграции для конвертации конфигурации v2.4.1 в v2.5.0 Конвертация:
source config_2.4.1
./bootsmanctl mgmt config migrate -i ${PROVIDER}
Обновление управляющего кластера
Для обновления перенесите новый дистрибутив на АРМ администратора в директорию, содержащую данные об установке.
Запустите обновление.
./bootsmanctl management update ${cluster-name} -c bootsmanctl.config.yaml
${cluster-name} - имя кластера, данное ему при установке.
Обновление будет продолжительным (около 30 минут), время может варьироваться в зависимости от выделенных ресурсов.
Обновление подчинённого кластера
Обновление подчинённого кластера происходит с помощью kubectl.
Используя kubeconfig управляющего кластера, выполните команды:
Запрос списка всех подчинённых кластеров и воркерпулов:
kubectl get cluster.provisioning.bootsman.tech -A
kubectl get workerpool.provisioning.bootsman.tech -A
Из полученного списка получите имя подчинённого кластера(${cluster_name}) и его неймспейс (${namespace})
Обновление:
kubectl patch cluster.provisioning.bootsman.tech ${cluster_name} -n ${namespace} --type=merge --patch="{\"spec\": {\"bootsmanVersion\": \"v2.5.0\"}}"
Дождитесь завершения обновления подчиненного кластера
kubectl get cluster.provisioning.bootsman.tech ${cluster_name} -n ${namespace} -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
True
Дополнительные правки для подчиненного кластера VK Cloud
Если ваш подчиненный кластер запущен не в VK Cloud пропустите эту главу.
По завершению обновления подчиненного кластера VK Cloud требуется внести правки в Yaml-манифесты
export WORKERPOOL_ZONE=$(kubectl get workerpool.provisioning.bootsman.tech ${workerpool_name} -n ${namespace}-wk -n default -o jsonpath='{.spec.infrastructure.vkProviderConfig.availabilityZone}')
export CLUSTER_ZONE=$(kubectl get cluster.provisioning.bootsman.tech ${cluster_name} -n ${namespace} -n default -o jsonpath='{.spec.capiConfig.infrastructure.vkProviderConfig.template.availabilityZone}')
kubectl patch workerpool.provisioning.bootsman.tech ${workerpool_name} -n ${namespace}-wk -n default --type=merge -p "{\"spec\": {\"infrastructure\": {\"vkProviderConfig\": {\"availabilityZones\": [\"${WORKERPOOL_ZONE}\"]}}}}"
kubectl patch workerpool.provisioning.bootsman.tech ${workerpool_name} -n ${namespace}-wk -n default --type=json -p '[{"op": "remove", "path": "/spec/infrastructure/vkProviderConfig/availabilityZone"}]'
kubectl patch cluster.provisioning.bootsman.tech ${cluster_name} -n ${namespace} -n default --type=merge -p "{\"spec\": {\"capiConfig\": {\"infrastructure\": {\"vkProviderConfig\": {\"template\": {\"availabilityZones\": [\"${CLUSTER_ZONE}\"]}}}}}}"
kubectl patch cluster.provisioning.bootsman.tech ${cluster_name} -n ${namespace} -n default --type=json -p '[{"op": "remove", "path": "/spec/capiConfig/infrastructure/vkProviderConfig/template/availabilityZone"}]'
Обновление Longhorn Volume Engine
При обновлении модуля Longhorn потребуется дополнительно обновить старые тома на новую версию
Для начала потребуется выключить модули, использующие longhorn.
Заметка
Можно произвести выключение с помощью UI для этого ознакомьтесь с статьей Работа с модулями
kubectl patch logging.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": true}}"
kubectl patch BillingPluginServer.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": true}}"
kubectl patch MonitoringFiles.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": true}}"
kubectl patch RancherMonitoring.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": true}}"
kubectl patch RancherUIBillingAPI.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": true}}"
После выключения зайдите через Web-интерфейс в панель управления Longhorn Для этого авторизируйтесь на сайте и зайдите в кластер ${name} -n ${namespace}
Откройте панель управления longhorn

Выберите доступный Engine image

Повторите обновление для всех Volume отмеченных зеленой стрелкой
После обновления последнего из Volumes нужно удалить старый Engine image
Для получения списка всех Engine image переходим в Settings > Engine Image

Удалите Engine image предыдущей версии

По завершению удаления, можно снова запустить модули
kubectl patch logging.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": false}}"
kubectl patch BillingPluginServer.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": false}}"
kubectl patch MonitoringFiles.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": false}}"
kubectl patch RancherMonitoring.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": false}}"
kubectl patch RancherUIBillingAPI.configuration.bootsman.tech ${name} -n ${namespace} --type=merge --patch="{\"spec\": {\"disabled\": false}}"
Заметка
Данную процедуру потребуется провести с каждый кластером

