Перейти к содержанию

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 image

Зайдите в управление Volume image

Обновите Volume image

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

Повторите обновление для всех Volume отмеченных зеленой стрелкой

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

Удалите Engine image предыдущей версии 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}}"

Заметка

Данную процедуру потребуется провести с каждый кластером