Обновление

ВНИМАНИЕ

Общие рекомендации и ограничения

  • Перед выполнением обновления рекомендуется сделать резервную копию данных ADCM. Дополнительную информацию см. в статье Резервное копирование и восстановление.

  • Понижение версии ADCM не поддерживается.

  • Не рекомендуется обновлять ADCM более чем на 5 минорных версий (см. <minor> в описании формата версионирования ниже).

  • Перед обновлением ADCM до версии 2.7.0 выполните миграцию данных из SQLite в PostgreSQL. Миграцию можно выполнить в ADCM любой версии до 2.6.0 включительно.

Ограничения версий при обновлении

  • Версия 2.10.0 является обязательной для установки и не может быть пропущена. Прямое обновление с версий ниже 2.10.0 до 2.11.0 и выше не поддерживается.

  • Если среди установленных кластеров присутствуют продукты с устаревшей версией контракта, в логах Docker-контейнера отображается предупреждение о наличии неподдерживаемых версий контрактов.

  • Если среди установленных кластеров присутствуют продукты с неподдерживаемой версией контракта, запуск Docker-контейнера прекращается. Такие продукты необходимо обновить до поддерживаемой версии.

ВАЖНО

Версия ADCM 3.0.0 является обязательной для установки и не может быть пропущена при обновлении.

Начиная с версии ADCM 3.0.0 все процессы внутри Docker-контейнера запускаются от имени непривилегированного пользователя adcm (UID/GID 10001) вместо пользователя root.

При обновлении без использования ADCM Installer с версии ADCM ниже 3.0.0 перед первым запуском контейнера с новой версией необходимо изменить владельца каталога /adcm/data. В противном случае Docker-контейнер не сможет получить доступ к существующим данным и завершит работу.

Если для хранения данных используется Docker volume, выполните следующие шаги:

  1. Определите имя Docker volume, смонтированного в каталог /adcm/data:

    $ sudo docker inspect \
        --format='{{range .Mounts}}{{if eq .Type "volume"}}{{.Name}}{{"\n"}}{{end}}{{end}}' \
        adcm

    Команда выведет имя Docker volume. Используйте его вместо <volume_name> в следующей команде.

  2. Измените владельца каталога с данными:

    $ sudo docker run --rm \
        -v <volume_name>:/adcm/data \
        --user 0:0 \
        --entrypoint sh \
        hub.arenadata.io/adcm/adcm:<version> \
        -c 'chown -R 10001:10001 /adcm/data'

    где <version> — версия ADCM, до которой планируется обновление.

Процесс обновления ADCM зависит от способа установки ADCM.

Обновление при использовании ADCM Installer

Если ADCM был развернут с использованием ADCM Installer, обновление выполняется путем изменения конфигурации и применения изменений с помощью утилиты adi.

Для обновления ADCM до нужной версии выполните следующие шаги:

  1. Откройте файл конфигурации adcm.yaml, использовавшийся при установке. Пример файла конфигурации приведен в статье Использование ADCM Installer.

  2. В секции, соответствующей ADCM, в параметре image укажите Docker-образ ADCM с требуемым тегом версии, например hub.arenadata.io/adcm/adcm:2.12.0.

  3. Примените изменения:

    $ sudo adi apply

    После выполнения команды будет пересоздан контейнер ADCM с использованием образа, указанного в параметре image файла adcm.yaml.

Online-обновление

Для обновления ADCM, установленного без использования ADCM Installer, до нужной версии выполните следующие шаги:

  1. Остановите и удалите Docker-контейнер adcm:

    $ sudo docker rm -f adcm
  2. Загрузите из Arenadata Docker Registry необходимый Docker-образ:

    $ sudo docker pull hub.arenadata.io/adcm/adcm:<version>

    где <version> — это версия Docker-образа в одном из следующих форматов:

    • <major>.<minor>.<patch> — если необходим конкретный патч ADCM. Пример: 2.0.0.

    • <major>.<minor> — если необходим последний патч в рамках выбранной версии ADCM. Пример: 2.0.

    ВАЖНО
    • latest использовался для ранних версий ADCM и начиная с версии 2.0.0 больше не поддерживается.

    • До выпуска ADCM 2.0.0 для версионирования использовался следующий формат: YYYY.MM.DD.HH.

  3. Создайте и запустите новый Docker-контейнер на базе загруженного образа, выбрав вариант в зависимости от того, каким образом была установлена предыдущая версия ADCM:

    ВАЖНО
    При обновлении используйте тот же способ хранения данных (bind mount или именованный том), что и при установке. Смена способа хранения без предварительного резервного копирования и восстановления приведет к потере данных.
    • Если ранее использовался именованный том (named volume):

      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v adcm-data:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    • Если ранее использовался bind mount:

      ПРИМЕЧАНИЕ

      Перед запуском контейнера убедитесь, что права на существующий каталог с данными принадлежат пользователю 10001:10001. При необходимости измените владельца:

      $ sudo chown -R 10001:10001 /opt/adcm
      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v /opt/adcm:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    ПРИМЕЧАНИЕ
    Подробная информация о переменных окружения DB_HOST, DB_PORT, DB_USER, DB_NAME, DB_PASS и DB_OPTIONS приведена в статье Установка.

Offline-обновление

Если хосты не имеют доступа к Интернету, доступно offline-обновление ADCM.

Чтобы выполнить offline-обновление ADCM, установленного без использования ADCM Installer, до нужной версии, сделайте следующее:

  1. Остановите и удалите Docker-контейнер adcm:

    $ sudo docker rm -f adcm
    ПРИМЕЧАНИЕ
    Клиенты, использующие Enterprise-версии продуктов, могут обратиться в команду поддержки Arenadata для получения архива с расширением sh.xz, который содержит специальный скрипт для ADCM. После остановки Docker-контейнера adcm дальнейшее обновление ADCM включает установку согласно инструкции.
  2. Загрузите Docker-образ из Arenadata Docker Registry на хост, который имеет доступ в Интернет:

    $ sudo docker pull hub.arenadata.io/adcm/adcm:<version>

    где <version> — это версия Docker-образа в одном из следующих форматов:

    • <major>.<minor>.<patch> — если необходим конкретный патч ADCM. Пример: 2.0.0.

    • <major>.<minor> — если необходим последний патч в рамках выбранной версии ADCM. Пример: 2.0.

    ВАЖНО
    • latest использовался для ранних версий ADCM и начиная с версии 2.0.0 больше не поддерживается.

    • До выпуска ADCM 2.0.0 для версионирования использовался следующий формат: YYYY.MM.DD.HH.

  3. Сохраните загруженный Docker-образ в файл с расширением .tar:

    $ sudo docker save -o <file_name> hub.arenadata.io/adcm/adcm:<version>

    где <file_name> — имя создаваемого файла с расширением (например, adcm_2.5.0_arenadata.tar).

    ПРИМЕЧАНИЕ
    Выполнение команды может занять некоторое время. Пожалуйста, дождитесь ее завершения.
  4. Скопируйте сохраненный файл с текущего хоста на хост без доступа к Интернету любым из доступных способов.

    ВАЖНО
    Убедитесь в наличии настроенного доступа к хостам и необходимых прав доступа к файлу.
  5. Загрузите Docker-образ из сохраненного файла:

    $ sudo docker load -i <file_path>

    где <file_path> — абсолютный путь к сохраненному файлу с Docker-образом.

    Пример результата успешного выполнения команды:

    Loaded image: hub.arenadata.io/adcm/adcm:2.5.0
  6. Создайте и запустите новый Docker-контейнер на базе загруженного образа, выбрав вариант в зависимости от того, каким образом была установлена предыдущая версия ADCM:

    ВАЖНО
    При обновлении используйте тот же способ хранения данных (bind mount или именованный том), что и при установке. Смена способа хранения без предварительного резервного копирования и восстановления приведет к потере данных.
    • Если ранее использовался именованный том (named volume):

      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v adcm-data:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    • Если ранее использовался bind mount:

      ПРИМЕЧАНИЕ

      Перед запуском контейнера убедитесь, что права на существующий каталог с данными принадлежат пользователю 10001:10001. При необходимости измените владельца:

      $ sudo chown -R 10001:10001 /opt/adcm
      $ sudo docker run \
          --name adcm \
          -p 8000:8000 \
          -v /opt/adcm:/adcm/data \
          -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" \
          -e DB_PORT="<DATABASE_TCP_PORT>" \
          -e DB_USER="<DATABASE_USERNAME>" \
          -e DB_NAME="<DATABASE_NAME>" \
          -e DB_PASS="<DATABASE_USER_PASSWORD>" \
          -e DB_OPTIONS="<DATABASE_OPTIONS>" \
          hub.arenadata.io/adcm/adcm:<version>
    ПРИМЕЧАНИЕ
    Подробная информация о переменных окружения DB_HOST, DB_PORT, DB_USER, DB_NAME, DB_PASS и DB_OPTIONS приведена в статье Установка.
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней