Руководство по миграции Harbor: с версии 2.6.4 на 2.12
Содержание
Инструкции по миграцииМиграция данных Helm chartsТребованияМиграция данных Helm chartsРезервное копированиеМиграция базы данныхТребованияВосстановление базы данныхМиграция базы данныхОстановка старого экземпляра HarborРазвёртывание нового экземпляра HarborПолучение конфигурации оригинального экземпляраПреобразование конфигурации хранилища реестраПреобразование конфигурации метода доступаПроверкаИнструкции по миграции
В этом руководстве описывается процесс обновления Harbor с версии 2.6.4 до версии 2.12. Учитывая большой разрыв между версиями и необходимость обеспечения стабильности обновления, мы используем подход миграции данных. Преимущества данного подхода:
- Избежание сложности обновления через несколько промежуточных версий
- Повторное использование данных хранилища реестра для ускорения процесса обновления
Общий процесс миграции выглядит следующим образом:
- Миграция данных Helm charts в хранилище реестра.
- Резервное копирование базы данных PostgreSQL и восстановление её в экземпляр PostgreSQL 14.
- Остановка старого экземпляра Harbor.
- Развёртывание нового экземпляра Harbor с использованием восстановленной базы данных PostgreSQL и оригинального хранилища реестра из старого экземпляра Harbor.
Миграция данных Helm charts
Harbor поддерживает два способа хранения данных Helm charts: 1. хранение непосредственно в хранилище реестра Harbor через OCI API; 2. хранение в backend chartmuseum, размещённом в Harbor, через API chartmuseum.
Начиная с Harbor 2.6, Chartmuseum устарел и был удалён в Harbor 2.8. Если ваш старый экземпляр использует chartmuseum, необходимо мигрировать данные charts в хранилище реестра.
Требования
- Установленный
podmanна локальной машине. - Helm версии 3.8 и выше.
Миграция данных Helm charts
Инструмент копирует Helm charts, но не удаляет их из Chartmuseum.
Для миграции данных charts в хранилище реестра выполните:
Ожидаемый вывод:
Если необходимо мигрировать только часть данных, можно отфильтровать данные по проекту согласно документации.
Для информации о работе с OCI Helm charts обратитесь к следующим документам:
Начиная с Harbor 2.8, поддержка chartmuseum прекращена.
Если вы хотите продолжать использовать chart-репозитории, управляемые chartmuseum, пожалуйста, свяжитесь с нами для получения поддержки.
Процесс миграции в основном включает резервное копирование и восстановление базы данных, поэтому время миграции пропорционально размеру базы данных, а не объёму занимаемого места в хранилище Registry для контейнерных образов.
По результатам тестирования с базой данных размером 7.6 ГБ миграция занимает примерно 18 минут (используется хранилище с производительностью 6000 IOPS на чтение и 2000 IOPS на запись).
Резервное копирование
Выполните следующую команду для резервного копирования базы данных pg старого экземпляра с помощью pg_dump:
Данные реестра обычно очень большие, требуют дополнительного места для резервного копирования и занимают много времени, что затрудняет их резервное копирование. Кроме того, при обновлении экземпляра Harbor структура хранилища реестра обычно не меняется, поэтому новый экземпляр может напрямую использовать хранилище старого экземпляра.
Миграция базы данных
При миграции Harbor с версии 2.6 на 2.12 меняется версия базы данных — с PostgreSQL 12 на PostgreSQL 14. Поэтому необходимо сначала импортировать резервную копию базы данных старого экземпляра в новую базу данных (PostgreSQL 14). Затем с помощью инструмента миграции данных Harbor выполнить миграцию структуры и данных базы данных в формат, совместимый с Harbor 2.12.
Требования
Подготовьте новый экземпляр PostgreSQL версии 14. Резервная копия базы данных Harbor будет восстановлена в этот экземпляр, после чего будет выполнена миграция структуры базы данных.
Восстановление базы данных
Импортируйте резервную копию базы данных в базу данных, используемую новым экземпляром. В примере ниже показан процесс импорта с помощью psql. Для конкретных методов импорта обратитесь к документации поставщика базы данных.
Из-за несовпадения версий базы данных в процессе импорта могут возникать ошибки, связанные с отсутствием ролей или функций, которые можно игнорировать. Например:
ERROR: role "admin" does not existERROR: function metric_helpers.pg_stat_statements(boolean) does not existERROR: schema "metric_helpers" already existsERROR: function "get_btree_bloat_approx" already exists with same argument types
Миграция базы данных
Данные Harbor 2.6 теперь импортированы в базу данных нового экземпляра. Далее запустите задачу миграции данных для преобразования структуры и данных базы в формат, совместимый с Harbor 2.12.
Установите параметры подключения к новому экземпляру PostgreSQL, затем создайте задачу для выполнения миграции базы данных:
После завершения задачи можно просмотреть подробный прогресс и результаты миграции в логах задачи:
Остановка старого экземпляра Harbor
Удалите оператор harbor через страницу Operator Hub, затем уменьшите количество реплик старого экземпляра Harbor следующими командами:
Развёртывание нового экземпляра Harbor
Новый экземпляр должен монтировать хранилище оригинального экземпляра, поэтому он должен находиться в том же namespace, что и оригинальный экземпляр.
Развёртывайте новый экземпляр согласно документации по развёртыванию, обращая внимание на следующие моменты:
- Новый экземпляр должен подключаться к мигрированной базе данных PostgreSQL (версия 14)
- Не используйте Redis старого экземпляра Harbor, создайте новый
- Хранилище реестра должно использовать хранилище старого экземпляра
- Метод доступа должен совпадать с методом старого экземпляра, чтобы избежать сбоев в работе после миграции
Для миграции конфигурации между старым и новым экземплярами обратитесь к следующим разделам.
Получение конфигурации оригинального экземпляра
Необходимо получить конфигурацию из оригинального экземпляра и преобразовать её в конфигурацию нового экземпляра:
Преобразование конфигурации хранилища реестра
Если оригинальный экземпляр развёрнут с использованием Host Path хранилища, конфигурация выглядит так:
Преобразуйте в конфигурацию нового экземпляра:
Если оригинальный экземпляр развёрнут с использованием StorageClass, имена PVC фиксированы:
- имя PVC для реестра:
<имя старого экземпляра>-harbor-registry
Используйте старый PVC в новом экземпляре.
Если оригинальный экземпляр развёрнут с использованием PVC, конфигурация выглядит так:
Преобразование конфигурации метода доступа
Если оригинальный экземпляр развёрнут с NodePort, установите следующую конфигурацию:
Если оригинальный экземпляр развёрнут с доменным именем, установите следующую конфигурацию:
Проверка
-
Проверьте статус всех Pods:
-
Убедитесь, что сервис Harbor доступен:
- Зайдите в веб-интерфейс Harbor, проверьте наличие существующих проектов и образов
- Проверьте вход в систему через Podman
-
Проверьте операции push и pull образов и charts:
- Тестируйте push и pull образов
- Тестируйте push и pull OCI charts (опционально)
-
После подтверждения успешной миграции можно вручную удалить старый экземпляр Harbor на странице
DevOps Toolchain/Instances/.