# Обновление ## Обновление комплекта приложения с использованием nscli 1. Для обновления [комплекта приложения](./020_install.md#подготовка-комплекта-приложений-appkit) (appkit: сервера приложений, прикладного решения) подготовьте его и загрузите на NFS-хранилище: ```bash ./appkit.sh push --namespace gs-ctk --source workspace/appkit --destination appkit/v2 ``` - `--namespace gs-ctk` - пространство имен, в котором развертан gs-ctk - `--source workspace/appkit` - путь к папке с комплектом на локальной ФС относительно текущей папки - `--destination appkit/v2` - путь к папке, в которую следует поместить комплект, относительно [точки монтирования системного хранилища](#шаг-2-установите-оператор) 2. Обновите хеши и пути к комплекту приложения (appkit) в конфигурации при помощи команды: ```bash # не требует подключения к кластеру, хеши будут посчитаны с комплекта приложений на локальном диске ./appkit.sh switch_local --config-path ./config.yaml --resgroup gs-cluster-1 --local-appkit workspace/appkit --remote-appkit appkit/2 ``` - `--config-path ./config.yaml` - путь к конфигурационном ресурсу - `--resgroup gs-cluster-1` - название группы ресурсов - `--local-appkit workspace/appkit` - путь к папке с комплектом на локальной ФС относительно текущей папки (`--source` из предыдущего пункта) - `--remote-appkit appkit/v2` - путь к папке на системном хранилище, в котором находится комплект (`--destination` из предыдущего пункта) *ИЛИ* ```bash # хеши читаются с комплекта приложений на хранилище в кластере, следовательно требует подключения к кластеру ./appkit.sh switch_remote --config-path ./config.yaml --resgroup gs-cluster-1 --namespace gs-ctk --remote-appkit appkit/v2 ``` - `--config-path ./config.yaml` - путь к конфигурационном ресурсу - `--resgroup gs-cluster-1` - название группы ресурсов - `--namespace gs-ctk` - пространство имен, в котором развертан gs-ctk - `--remote-appkit appkit/v2` - путь к папке на системном хранилище, в котором находится комплект (`--destination` из предыдущего пункта) 3. Переключите [показатель версии базы данных `database_schema_version`](./040_config.md#комплект-группы-appkit-и-версия-схемы), чтобы спровоцировать обновление базы данных при следующем применении ресурса: ```bash ./appkit.sh upgrade --config-path ./config.yaml --resgroup gs-cluster-1 ``` 4. Повторно примените ресурс: ```bash kubectl apply -f ./config.yaml ``` ### Обновление комплекта приложения без nscli Вот инструкция, как сделать без nscli то же, что и эти команды nscli: ```bash ./appkit.sh push --namespace gs-ctk-ns --source workspace/appkit --destination appkit/v1 # загрузка комплекта приложений на NFS (требует доступа к кластеру) ./appkit.sh switch_local --config-path ./new_config.yaml --resgroup gs-cluster-1 --local-appkit workspace/appkit --remote-appkit appkit/v1 # переключение комплекта приложений ./appkit.sh upgrade --config-path ./new_config.yaml --resgroup gs-cluster-1 # обновление счетчика версии БД ``` 1. Сформировать комплект приложения в виде трех zip-архивов: - `globalserver.zip` - `applip.zip` - `profile.zip` ```{attention} Обратите внимание, что архивы содержат в себе *содержимое* соответствующих папок комплекта приложений. Так `applip.zip` содержит в себе непосредственно модули, а не папку `applib` с модулями. ``` 2. Рядом с каждым из архивов должен лежать файл c хэш-суммой архива, полученной по алгоритму команды `sha1sum` из GNU Core Utilities. Название файла должно соответствовать названию архива и иметь суффикс `.sha1`. Так, например, в комплекте приложений должен находиться архив `applip.zip` и рядом с ним файл `applip.zip.sha1` с текстом `4f3b71ee067f146d68a8795b3bde1e5c0f8956d7`. Вы можете сгенерировать эти файлы при помощи следующего shell-скрипта: ```sh for archive in appkit/*.zip do sha1sum < "$archive" | tr -d ' -' | tr -d '\n' > "$archive.sha1" done ``` 3. Загрузите архивы и хеш-суммы на системное NFS-хранилище. 4. Замените в конфигурации поля с хэш-суммами (`applib_sha1`, `appsrc_sha1`, `globalserver_sha1` и `profile_sha1`) и путем к комплекту (`path`) на новые. Обновите значения счетчиков `globalserver_instance` и `database_schema_version`. ## Обновление кластерных утилит 1. [Загрузите и распакуйте](./020_install.md#шаг-1-скачайте-nscli) новую версию nscli и Helm-чарт 2. Обновите, используя [созданный ранее](./020_install.md#helm) `values.yaml`: ```bash helm upgrade gs-ctk ~/nscli/helm_chart -f values.yaml ```