Deployment считается завершённым не после старта процесса, а после прохождения health-check, проверки логов и подтверждения доступности через настоящий edge.

Перед началом

  • изменение описано и имеет owner;
  • известен affected service и его зависимости;
  • сделан подходящий backup;
  • подготовлен rollback artifact/config;
  • maintenance window согласовано для критичного изменения;
  • monitoring не удалён, а переведён в maintenance при необходимости.

Systemd service

1

Проверьте unit и environment

Используйте systemd-analyze verify, не выводите secret values.
2

Установите новый binary

Сохраняйте предыдущую версию для rollback.
3

Перезапустите один service

Не делайте reboot VM без необходимости.
4

Проверьте состояние

systemctl status, локальный health и journal.
5

Проверьте edge

Внешний DNS/TLS/API контракт должен отвечать.

Docker Compose / Portainer

1

Зафиксируйте image digests

Не используйте плавающий latest для критичных сервисов.
2

Проверьте Compose config

Volumes, networks, healthchecks и secrets.
3

Получите новые images

Старые images оставьте на rollback window.
4

Обновите stack

Следите за health, restart count и миграциями.
5

Проверьте данные

Открытие UI недостаточно для stateful приложения.
Portainer должен отображать те же stacks, containers и agents. Не создавайте параллельно второй Compose project с теми же volumes и именами контейнеров.

Обновление Proxmox guest

  1. Проверьте backup и свободное место ZFS.
  2. Убедитесь, что QEMU Guest Agent отвечает.
  3. Обновите приложение внутри guest по его runbook.
  4. Перезагружайте guest только если этого требует kernel/runtime.
  5. Reboot PVE node планируется отдельно и учитывает VM autostart.
Сейчас VM 102–104 не имеют onboot: 1. Перед плановым reboot xinboshin нужно либо включить согласованную startup policy, либо подготовить ручной порядок запуска GitLab, Runner и launcher-server.

Rollback

  • Binary: вернуть предыдущий файл и перезапустить service.
  • Container: вернуть прежний image digest и выполнить compose up -d.
  • Database: не откатывать schema копированием старого приложения без проверки backward compatibility; используйте migration rollback/restore plan.
  • Proxy: вернуть старый upstream.
  • VM: restore выполняется в новый VMID, если inplace restore создаёт лишний риск.
После rollback monitoring остаётся включённым, а причина неудачного deployment фиксируется отдельно от симптома.