Обновление системы¶
Общие принципы¶
Обновление AppSec.GenAI в compose-сценарии выполняется путём подмены тегов образов в docker-compose.yml на новую версию, загрузки новых образов из приватного реестра registry.appsec.global и перезапуска контейнеров. Миграции базы данных выполняются автоматически при запуске.
Обязательно сделайте бэкап
Перед любым обновлением обязательно создайте резервную копию базы данных и конфигурации. Процедура бэкапа описана в разделе Управление сервисами.
Процедура обновления¶
Шаг 1: Создание резервной копии¶
cd $DEPLOY_DIR
# Бэкап базы данных
docker exec postgres pg_dumpall -U postgres > backup_before_update_$(date +%Y%m%d_%H%M%S).sql
# Бэкап конфигурации
cp .env .env.backup
cp docker-compose.yml docker-compose.yml.backup
Шаг 2: Получение новой поставки¶
Вендор предоставляет обновлённую поставку одним из двух способов:
Новая версия поставляется в виде архива с обновлённым docker-compose.yml и (при необходимости) изменённым шаблоном env. После распаковки:
- Замените
docker-compose.ymlв$DEPLOY_DIRна новый. - Сравните новый шаблон
envс текущим.envи при необходимости добавьте новые переменные (см. шаг 3).
Если ничего, кроме версий образов, не изменилось, можно вручную обновить теги в существующем docker-compose.yml. Например, при переходе с 2026.5.0 на 2026.5.1:
sed -i 's|appsecgenai-release/\([a-z-]*\):2026\.5\.0|appsecgenai-release/\1:2026.5.1|g' \
$DEPLOY_DIR/docker-compose.yml
Warning
Этот способ работает только если набор сервисов и переменных окружения в новой версии не менялся. В случае сомнений используйте полную поставку.
Шаг 3: Проверка изменений .env¶
Если в обновлении появились новые переменные окружения, добавьте их в файл .env:
# Сравнение текущего .env с новым шаблоном env (если поставка обновлённая)
diff .env /path/to/new-release/env
При появлении новых обязательных переменных запросите у вендора их назначение и допустимые значения.
Шаг 4: Загрузка новых образов¶
Перед запуском подтяните образы с новой версией:
Команда скачает только те образы, теги которых отличаются от уже загруженных локально.
Аутентификация в реестре
Если со времени первой установки прошло много времени, может потребоваться повторно выполнить docker login registry.appsec.global — см. Установка и запуск.
Шаг 5: Перезапуск платформы¶
Docker Compose автоматически:
- Остановит контейнеры со старыми тегами образов.
- Создаст новые контейнеры с обновлёнными образами.
- Прогонит миграции БД через
*-migrationsконтейнеры. - Запустит сервисы в правильном порядке.
Автоматические миграции
При запуске контейнеры миграций автоматически выполнят alembic upgrade head. Если в обновлении есть новые миграции базы данных, они будут применены автоматически.
Шаг 6: Проверка¶
# Статус контейнеров (все должны быть Up или Exited (0) для one-shot)
docker compose ps
# Контейнеры миграций — должны быть Exited (0)
docker ps -a --filter "name=migrations" --format "table {{.Names}}\t{{.Status}}"
# Проверка версий сервисов
for port in 8001 8002 8003 8004 8005 8008 8009 8025; do
echo -n "Port $port: "
curl -s "http://localhost:$port/healthz" 2>/dev/null | jq -r '.version // "N/A"' 2>/dev/null \
|| echo "unavailable"
done
Откат обновления¶
В случае проблем после обновления:
Шаг 1: Возврат к предыдущим тегам¶
Восстановите предыдущий docker-compose.yml из бэкапа:
Шаг 2: Откат базы данных¶
Если новая версия применила несовместимые миграции, восстановите БД из бэкапа:
cd $DEPLOY_DIR
# Остановка сервисов
docker compose down
# Запуск только PostgreSQL
docker compose up -d postgres
sleep 10
# Восстановление БД
docker exec -i postgres psql -U postgres < backup_before_update_YYYYMMDD_HHMMSS.sql
# Запуск платформы с предыдущей версией
docker compose up -d
Шаг 3: Откат миграций отдельного сервиса (расширенный сценарий)¶
Если необходимо откатить только миграцию конкретного сервиса без полного восстановления БД:
# Откат последней миграции Model Management
docker exec model-management alembic downgrade -1
# Откат на конкретную ревизию
docker exec model-management alembic downgrade <revision_id>
# Проверка текущей ревизии
docker exec model-management alembic current
Совместимость кода и схемы
Откат миграций без отката версии образа может привести к несовместимости кода и схемы БД. Используйте этот способ только по рекомендации технической поддержки.
Версионирование¶
Проверка текущих версий¶
# Версии локально загруженных образов AppSec.GenAI
docker images --format "table {{.Repository}}\t{{.Tag}}" \
| grep appsecgenai-release | sort -u
# Версия API каждого сервиса
for port in 8001 8002 8003 8004 8005 8008 8009 8025; do
echo -n "Port $port: "
curl -s "http://localhost:$port/healthz" 2>/dev/null | jq -r '.version // "N/A"' 2>/dev/null \
|| echo "unavailable"
done
Журнал обновлений¶
Рекомендуется вести журнал обновлений для аудита: