Обновление#
В данном разделе описан сценарий обновления DropApp с помощью утилиты Dactl.
Порядок обновления:
Предварительные условия#
Предварительные условия для обновления DropApp с помощью утилиты Dactl:
Существующий кластер DropApp.
Подготовленный реестр образов Harbor, например, созданный в разделе Установка реестра образов.
Подготовленный RPM-репозиторий, например, созданный в разделе Создание RPM-репозитория.
Порядок подготовки к обновлению:
Загрузить дистрибутивы
K8S-k8sc-<version>-<distrib_number>-distrib.zipиk8s-mgmt-<version>-<distrib_number>-distrib.zipи сохранить их на машину администратора.Распаковать дистрибутивы и извлечь артефакты DropApp.
Подготовить артефакты DropApp:
загрузить образы DropApp в реестр образов Harbor;
загрузить RPM-пакеты в RPM-репозиторий.
Загрузка дистрибутивов из личного кабинета#
Загрузите дистрибутив продукта и дистрибутив с управляющим слоем из Личного Кабинета клиента:
Архив продукта:
K8S-k8sc-<version>-<distrib_number>-distrib.zip;Архив управляющего слоя:
k8s-mgmt-<version>-<distrib_number>-distrib.zip.
Распаковка дистрибутивов#
Примечание
В данном примере дистрибутивы находятся в каталоге /root
Архив имеет большой размер - более 10 Гб, рекомендуется перед разархивацией установить переменную окружения UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE используя команду:
export UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE
Для получения вложенных архивов и файлов разархивируйте дистрибутив:
Разархивируйте из архива
K8S-k8sc-<version>-<distrib_number>-distrib.zipвложенные архивы с образами и RPM-пакетами дистрибутива:unzip K8S-k8sc-<version>-<distrib_number>-distrib.zipРазархивируйте архивы с образами и RPM-пакетами:
unzip k8sc-images-<version>-<distrib_number>-distrib.zip -d images unzip k8sc-packages-<version>-<distrib_number>-distrib.zip -d rpms unzip packages/k8s-k8sc-packages-<version>-<distrib_number>-SBEL9-distrib.zip -d packages/packages-sbel9 unzip packages/k8s-k8sc-packages-<version>-<distrib_number>-SBEL8-distrib.zip -d packages/packages-sbel8Разархивируйте архив с утилитой Dactl:
unzip k8s-mgmt-<version>-<distrib_number>-distrib.zip -d mgmtРазархивируйте образы и бинарный файл
dactl:unzip ./mgmt/mgmt-binaries-<version>-<distrib_number>-distrib.zip -d ./dactl unzip ./dactl/package/bh/dactl-<version>.zip -d ./dactl/ unzip ./mgmt/mgmt-images-<version>-<distrib_number>-distrib.zip -d ./images-mgmtПроверьте версию Dactl:
./dactl/dactl versionВывод будет следующим:
Platform V DropApp version: <version>
Подготовка артефактов DropApp#
Загрузка образов DropApp в реестр#
Dactl при загрузке образов использует утилиту skopeo.
Установите skopeo из дистрибутива SberLinux:
dnf install skopeo
Образы MGMT#
Загрузите образы из каталога images_mgmt в созданный реестр, используя Dactl:
./dactl/dactl copy images --src ./images-mgmt --dest registry.da-cluster.domain.ru/dapp
Образы K8SC#
Загрузите образы из каталога images_mgmt в созданный реестр, используя Dactl:
./dactl/dactl copy images --src ./images --dest registry.da-cluster.domain.ru/dapp
Загрузка RPM-пакетов в репозиторий#
Скопируйте файлы из каталога rpms/rpms-sbel9 и/или rpms/rpms-sbel8 в существующий RPM-репозиторий.
Формирование конфигурационного файла DropAppUpgradeConfiguration#
Перед формированием конфигурационного файла DropAppUpgradeConfiguration для Dactl, убедитесь в наличии:
реестра с образами контейнеров новой версии DropApp;
репозиторий с RPM-пакетами новой версии DropApp.
Создайте конфигурационный файл
da-upgrade.yaml:da-upgrade.yaml
apiVersion: config.dropapp.ru/v1alpha1 kind: DropAppUpgradeConfiguration metadata: name: "da-cluster" spec: artifacts: # Реестр образов, куда были загружены образы в разделе "Подготовка артефактов DropApp" imageRegistry: host: registry.da-cluster.domain.ru path: dapp # Если реестр без аутентификации - поле можно удалить credentials: <credentials> # Токен аутентификации в base64 для Harbor, в приведенном примере это echo -n 'admin:Harbor12345' | base64 | base64 certificate: <certificate> # Сертификат реестра. Если реестр имеет доверенный сертификат - поле можно удалить # Репозиторий, куда были загружены rpm пакеты в разделе "Подготовка артефактов DropApp" rpmRepository: - name: "dapp-<version>" baseUrl: http://my-rpm-repo.com/dapp-<version> gpgCheck: 1 enabled: 1 gpgKey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SberLinux"Для заполнения поля
credentialsв блокеimageRegistryнеобходимо использовать токен аутентификации для Harbor, для этого на машине администратора выполните следующую команду:echo -n "admin:<harbor-admin-password>" | base64 | base64Пример вывода:
<credentials>==Для заполнения поля
certificateв блокеimageRegistryнеобходимо использовать сертификат для Harbor, для этого на машине администратора выполните следующую команду:~~bash cat ./harbor/certs/harbor.crt | base64 -w0 ~~
Пример вывода:
<certificate>
Запуск обновления кластера#
Для обновления кластера выполните команду:
./dactl/dactl upgrade cluster --config ./da-upgrade.yaml
Примечание
Если конфигурационный файл DropAppUpgradeConfiguration от кластера располагается не в каталоге по умолчанию (~/.kube/config), передайте флаг --kubeconfig
В конце установки появится сообщение:
======================================
Done! Platform V DropApp is upgraded to the version '4.0.0'
We've upgraded kubernetes, cilium, dapp-operator and mandatory components, check 'kubectl get tools -o wide' and 'kubectl get components -o wide
Next steps are:
- use 'dactl upgrade component <component_name>' to upgrade other components
- use 'dactl upgrade tool <tool_name>' to upgrade tools if it was installed without Component
Описание обновленного кластера#
Команда dactl upgrade cluster обновляет:
пакеты Kubernetes (Kubeadm, Kubelet) на всех узлах кластера, которыми управляет DropApp (все узлы для которых в кластере есть ресурс
dropappnode);Cri-o на всех узлах кластера, которыми управляет DropApp (все узлы для которых в кластере есть ресурс
dropappnode);Cilium до актуальной версии из текущего релиза DropApp;
Dapp-operator до актуальной версии из текущего релиза DropApp;
компоненты:
UI (и его инструмент Console) до актуальной версии из текущего релиза DropApp;
Load-balancer (и его инструмент Metallb) до актуальной версии из текущего релиза DropApp
Cert-management (и его инструмент Cert-manager) до актуальной версии из текущего релиза DropApp
Ingress-controller (и его инструмент Ingress-nginx) до актуальной версии из текущего релиза DropApp
Auth (и его инструмент Dex) до актуальной версии из текущего релиза DropApp
Важно
Команда dactl upgrade cluster не обновляет узлы, которые были добавлены в кластер вручную, не через ресурс DropAppNode, если такие узлы есть в кластере, то появится предупреждающее сообщение.
Команда dactl upgrade cluster идемпотентна, то есть, если в процессе обновления что-то пошло не так, то ее можно перезапустить и Dactl дообновит оставшиеся узлы кластера.
Обновление компонентов и инструментов#
Команда dactl upgrade cluster по умолчанию не обновляет остальные компоненты и инструменты, автоматическое обновление инструмента происходит только если его версия несовместима с версией Kubernetes из текущего релиза DropApp.
Вручную обновить компоненты и инструменты можно командами:
dactl upgrade component <имя_компонента>– используйте эту команду, чтобы обновить все инструменты в компоненте;dactl upgrade tool <имя_инструмента>– используйте эту команду чтобы обновить отдельный инструмент, если он был установлен не через компонент.
Проверить корректность обновления можно в соответствии с инструкцией Чек-лист проверки корректности работы