Подготовка к обновлению#

На этой стадии подготовьте установочный узел и установочный пакет, сохраните состояние платформы и создайте резервную копию баз данных.

Требования#

Все команды инструкции следует выполнять на установочном узле, на котором установлены и настроены следующие утилиты, сервис и привилегии:

  • утилита kubectl с доступом к API кластера от имени администратора;

  • утилита Ansible Navigator, а также пакет ansible-core версии 2.14 или новее с коллекцией ansible.posix;

  • сервис rsync;

  • доступ по SSH с ключом ко всем узлам кластера от имени пользователя с правом sudo.

Предупреждение

Сервис rsync должен быть установлен также на всех узлах кластера в процессе размещения образов.

Примечание

Требование к сервису rsync, а также место под архивы образов на установочном узле и во временном каталоге /tmp/images на узлах кластера относятся к сценарию без доступа в интернет. При обновлении кластера с доступом в интернет стадия размещения образов пропускается, однако свободное место под распакованные образы новой версии в хранилище containerd (~45 ГБ на каждом рабочем узле) необходимо в обоих сценариях.

Установочный пакет#

Загрузите из Личного кабинета установочный пакет для кластера без доступа в интернет aa-kubernetes-bundle-<version>-offline.tar.gz и доставьте его на установочный узел. Состав пакета описан в инструкции по планированию. По сравнению с пакетом версии 2.0-upd2 в каталоге images/ добавлены образы automation-dashboard и dashboard-operator, а в каталоге operators/ – манифест dashboard-operator-deploy.yaml.

Примечание

Для кластера с доступом в интернет используйте установочный пакет aa-kubernetes-bundle-<version>.tar.gz с учетом особенностей онлайн-обновления.

Распакуйте установочный пакет:

mkdir -p ~/aa-bundle
tar -xzf aa-kubernetes-bundle-<version>-offline.tar.gz -C ~/aa-bundle

Здесь <version> – номер новой версии платформы.

Дисковое пространство#

Убедитесь, что на узлах достаточно свободного места:

Узел

Свободное место

Назначение

Установочный узел

Не менее 35 ГБ

Архив установочного пакета (~8 ГБ) и распакованный пакет (~25 ГБ, из них ~24 ГБ – каталог images/)

Каждый рабочий узел кластера

Около 70 ГБ дополнительно к текущему потреблению

Временная копия архивов образов в каталоге /tmp/images (~24 ГБ, сценарий удаляет ее автоматически) и распакованные образы в хранилище containerd (~45 ГБ)

Сценарий размещения образов перед копированием проверяет свободное место: прогнозируемая занятость диска каждого узла не должна превысить 80% после размещения этих образов. При заполнении диска на 85% служба kubelet начинает вытеснять образы, и еще не запущенные поды переходят в состояние ImagePullBackOff. Рекомендуется размер диска рабочего узла от 200 ГБ.

Примечание

Во время обновления на узлах кластера одновременно находятся образы обеих версий: работающие поды созданы из образов версии 2.0-upd2, а образы новой версии должны быть загружены и доступны. Место, занятое образами предыдущей версии, освобождается на стадии очистки. Если после первичного развертывания на узлах остались каталоги /tmp/images с архивами образов предыдущей версии, удалите их до начала обновления.

Сохранение состояния#

Сохраните текущее состояние ресурсов платформы, так как оно понадобится для контроля обновления и для отката:

mkdir -p ~/preupgrade-exports

kubectl get aas,acs,pahs,edas -n astra-automation -o yaml > ~/preupgrade-exports/custom-resources.yaml

kubectl get deploy,sts,svc,ingress -n astra-automation -o yaml > ~/preupgrade-exports/workloads.yaml

kubectl get pods -n astra-automation > ~/preupgrade-exports/pods.txt

Сохраните определения собственных ресурсов (CRD) и объекты Deployment операторов исходной версии, поскольку откат, если потребуется, невозможен без манифестов операторов:

kubectl get crd -o name | grep astra-automation.ru | xargs kubectl get -o yaml > ~/preupgrade-exports/crds.yaml

kubectl get deploy aa-operator-aa-manager ac-operator-ac-manager pah-operator-pah-manager eda-operator-eda-manager \
  -n astra-automation -o yaml > ~/preupgrade-exports/operators.yaml

Совет

Если сохранился установочный пакет версии 2.0-upd2, манифесты операторов исходной версии можно при откате взять из каталога operators/ этого пакета.

Проверка работоспособности#

Убедитесь, что платформа находится в состоянии Successful и отвечает по API:

kubectl get aas aa-demo -n astra-automation -o jsonpath='{.status.conditions}' | jq .

curl -sk https://<hostname>/api/gateway/v1/ping/

Здесь <hostname> – доменное имя платформы, заданное в поле public_base_url манифеста приложения.

Ожидаемый результат: условие "type": "Successful" с сообщением "Last reconciliation succeeded" и ответ проверки доступности:

{"version":"2.5","pong":"...","status":"good","db_connected":true,"proxy_connected":true}

Примечание

В версии 2.0-upd2 поле version ответа содержит значение 2.5 – номер версии базовой платформы автоматизации. После обновления поле содержит номер версии Astra Automation.

Убедитесь, что установлена именно версия 2.0-upd2, и получите список образов всех компонентов:

kubectl get deploy,sts -n astra-automation \
  -o jsonpath='{range .items[*].spec.template.spec.containers[*]}{.image}{"\n"}{end}' | sort -u

Ожидаемый результат: все образы имеют тег 2.0-upd2. Если в списке есть образы с тегами 2.0 или 2.0-upd1, то платформа не соответствует требованиям по исходной версии. В этом случае сначала обновите платформу до версии 2.0-upd2.

Обновлять неработоспособную платформу нельзя.

Резервное копирование#

Предупреждение

Сохраненные манифесты – не резервная копия данных. Миграции схемы базы данных, выполняемые при обновлении, необратимы, так что после успешных миграций вернуться на версию 2.0-upd2 можно только восстановлением баз данных из резервной копии.

Перед обновлением:

  • создайте дамп всех баз данных компонентов штатными средствами СУБД PostgreSQL, например утилитой pg_dump. Для СУБД, развернутой в кластере, выполните дамп через под StatefulSet СУБД с помощью команды kubectl exec;

  • сохраните секреты шифрования:

    kubectl get secret -n astra-automation -o name | grep encryption-secret \
      | xargs kubectl get -n astra-automation -o yaml > ~/preupgrade-exports/encryption-secrets.yaml
    

    Без секретов шифрования восстановить данные из резервной копии нельзя. Храните дампы и файл с секретами в надежном месте.