Особенности обновлений на старых версиях(до 1.59)
Проверка переменных окружения
1. Откройте файл /etc/profile.d/alpine-octopus-variables.sh для редактирования.
2. Убедитесь, что содержимое файла соответствует следующему:
export OCTOPUS_WORKDIR=~/octopus
export PRIVATETOKEN=glpat-...
export DOCKER_USER=...
export DOCKER_REGISTRY=registry.usetech.ru
Актуальное значение для переменных PRIVATETOKEN, DOCKER_USER необходимо запросить у службы поддержки.
3. Сохраните изменения.
4. Перезайдите на сервер по SSH и выполните повторное подключение. Это обеспечит применение новых настроек к окружению вашего сервера.
Проверка авторизации в реестре контейнеров Октопус
Проверка имеет смысл для обновлений на версиях до 1.59.20. Для выполнения авторизации выполните следующую команду:
docker login -u <логин> -p <glpat-...<токен>> registry.usetech.ru
Результат успешной авторизации представлен на скриншоте ниже:

Значения логина и токена необходимо получить у службы поддержки.
Проверка наличия SSL сертификатов
На последних версиях продукта Октопус, пользовательский интерфейс стал использовать протокол HTTPS вместо HTTP.
Для его корректной работы нужны либо пользовательские сертификаты, либо сертификаты, поставляемые с продуктом Octopus.
1. Скачайте сертификаты на официальном сайте обновлений Октопус
2. Создайте директорию /home/octopus/octopus/certificates при необходимости.
3. Скачанные сертификаты разместите в директории /home/octopus/octopus/certificates.
Установка необходимых пакетов для процесса обновления
1. Для работы скрипта обновления нужны следующие пакеты:
- busybox-extras;
- grep;
- rsync;
- unzip.
2. При онлайн обновлении и наличии выхода в интернет необходимо поставить пакеты следующей командой:
sudo apk add busybox-extras grep rsync unzip
3. При офлайн обновлении необходимо вместе с пакетом обновления Октопус скачать все необходимые недостающие пакеты. Это можно сделать из официального репозитория alpine, либо специально подготовленного архива с пакетами с сайта Октопус.
4. Далее необходимо выполнить следующие команды из домашнего каталога пользователя octopus:
mkdir offline-update-begin
tar -xf octopus-begin-offline-update.tar -C offline-update-begin/
5. После распаковки архива внутрь директории offline-update-begin необходимо вручную запустить следующую команду установки пакетов из каждой вложенной директории:
sudo apk add --no-network --allow-untrusted *.apk
6. Убедитесь, что инструменты обновлены:
grep --version

unzip -v

rsync --version

Подготовительные операции перед началом обновления
1. Размонтируйте /tmp
sudo umount /tmp
2. Пересоздайте /tmp как обычную директорию на диске. После umount это станет обычным каталогом на корневой ФС
sudo mkdir -p /tmp
sudo chmod 1777 /tmp
3. Отключите автоматическое монтирование tmpfs для /tmp в /etc/fstab при старте системы.
sudo sed -Ei 's|^(\s*tmpfs\s+/tmp\s+.*)|#\d|' /etc/fstab || true
4. Перепроверьте, что /tmp теперь на диске
df -hT /tmp
Ожидаемый результат: ext4/xfs/btrfs и тп, но не tmpfs
Обновить скрипт обновления
1. Скачайте файл update_begin.sh с официального сайта обновлений Октопус.
2. Замените файл, расположенный по пути /home/octopus/octopus/scripts/update_being.sh на тот, который был скачан в пункте 1.
3. Добавьте права на выполнение:
sudo chmod a+x /home/octopus/octopus/scripts/update_begin.sh
4. Убедитесь, что права установлены корректно (опционально):
ls -la /home/octopus/octopus/scripts/update_begin.sh
Ручное выполнение миграции с неподдерживаемой версии 1.0.181.21
К сожалению, на старых версиях 1.0.181.21 необходимо ПЕРЕД обновлением вручную произвести миграцию.
1. Скачайте файл миграции manual_181.sql и поместите его внутрь ВМ Октопус.
2. Перейдите в рабочий каталог Октопус:
cd /home/octopus/octopus
3. Выполните команды миграции:
docker compose stop && docker compose up -d postgres
docker exec -i octopus.postgres psql -U postgres -d octopus --single-transaction --set ON_ERROR_STOP=on -f - < manual_181.sql
Обновление скрипта управления брандмауэром (iptables)
1. Скачайте файл closeports.sh с официального сайта обновлений Октопус.
2. Замените файл, расположенный по пути /home/octopus/octopus/scripts/closeports.sh на тот, который был скачан в пункте 1.
3. Добавьте права на выполнение обновленного скрипта:
sudo chmod +x /home/octopus/octopus/scripts/closeports.sh
4. Запустите обновленный скрипт, указав в качестве аргументов номера портов, которые необходимо открыть (например, 22, 80, 443 для SSH, HTTP и HTTPS).
sudo /home/octopus/octopus/scripts/closeports.sh 22 80 443
Скрипт выполнит следующие действия:
- Сбросит текущие правила
iptables. - Установит политики по умолчанию (закрытый входящий и переадресуемый трафик, открытый исходящий).
- Разрешит работу через локальный интерфейс (
lo). - Разрешит уже установленные и связанные соединения.
- Перезапустит службу Docker.
- Добавит правила для приема входящего трафика на указанные порты.
- Сохранит примененные правила для восстановления после перезагрузки.
Важно: После выполнения этого скрипта будут открыты только те порты, которые вы указали в команде.
Очистка устаревших вольюмов
Из-за изменения подхода к сериализации объектов на платформе Октопус, старые данные, записанные в volume Kafka будут несовместимы при обновлении с версии 1.30.X на 1.59.X. Поэтому при запуске Октопус, без удаления этого вольюма, могут возникнуть ошибки. Вольюм не содержит важные данные и используется только для взаимодействия компонентов.
Из-за изменения пользователя и прав доступа компонент анализа может потерять возможность записи вспомогательных файлов, необходимых для процесса балансировки. В результате система может перестать формировать Move-рекомендации. Для того, чтобы этого избежать необходимо выполнить следующие шаги:
1. Перейдите в рабочий каталог Октопус:
cd /home/octopus/octopus
2. Перед пересозданием вольюмов, необходимо произвести остановку Октопус. После успешного обновления он запустится самостоятельно:
docker compose stop
3. Для yдаления вольюмов следует выполнить следующую команду:
docker volume ls -q | grep -E "^(.*kafka_data$|.*analysis\.storage$|.*exhaustion\.storage$)" | \
while read v; do echo "Processing volume: $v"; \
docker rm -f $(docker ps -a -q --filter volume=$v 2>/dev/null) >/dev/null 2>&1; \
docker volume rm $v >/dev/null 2>&1; done && echo "Done"
Изменение пользователя и прав доступа
Постепенно вносятся критически важные изменения в модель безопасности и управления правами доступа. В версии 1.59 платформа Октопус должна запускаться от имени специально созданного системного пользователя octopus.
В старых версиях некоторые контейнеры могут запускаться от пользователя root и создавать файлы и директории, к которым не будет доступа у пользователя octopus. Поэтому перед началом обновления необходимо вручную исправить права доступа для некоторых директорий, чтобы обеспечить корректность процесса обновления и предотвратить возможную потерю данных.
Выполните следующие команды на сервере под учетной записью, обладающей правами sudo:
1. Измените владельца рабочей директории octopus:
sudo chown -R octopus:octopus /home/octopus/octopus
2. Настройте права на запись для директории дампов. Это обеспечит корректную работу механизма резервного копирования и восстановления ClickHouse под новым пользователем.
sudo chmod 775 /home/octopus/octopus/config/clickhouse/dumps/
Запуск последовательного старта контейнеров
Для соблюдения правильной последовательности запуска контейнеров необходимо выполнить следующий набор команд:
docker compose stop
docker compose up -d rsyslog
docker compose up -d zookeeper postgres clickhouse
docker compose up -d prometheus grafana pushgateway
docker compose up -d \
octopus-kafka \
repository \
orchestrator \
topology.worker \
api \
analysis
docker compose up -d \
agent.basis \
agent.brest \
agent.hyperv \
agent.rosplatforma \
agent.vcenter \
agent.yandex.cloud \
agent.yandex.cloud.cost \
agent.zabbix \
agent.zvirt \
ui \
keycloak