Перейти к содержанию

Особенности обновлений на старых версиях(до 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

Результат успешной авторизации представлен на скриншоте ниже:

Скриншот15.03.15.png

Значения логина и токена необходимо получить у службы поддержки.

Проверка наличия 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

grep correct version.png

unzip -v

unzip correct version.png

rsync --version

rsync correct version.png

Подготовительные операции перед началом обновления

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