Резервное копирование и восстановление HARBOR с использованием Velero
В этом руководстве показано, как использовать Velero — инструмент с открытым исходным кодом для аварийного восстановления в облачных нативных средах, для выполнения операций резервного копирования и восстановления HARBOR.
Содержание
Область примененияТерминологияПредварительные требованияРезервное копированиеПодготовкаСоздание бакетаНастройка репозитория резервных копий VeleroВыполнение резервного копированияПеревод экземпляра harbor в режим только для чтенияСоздание Pod для резервного копированияСоздание политики резервного копирования томовВыполнение резервного копированияПосле успешного резервного копирования отключите режим только для чтения в HarborВосстановлениеПодготовкаВыбор резервной копии для восстановленияОпределение целевого пространства имёнУдаление оператора HARBOR CEОперации восстановленияСоздание конфигурационного файла восстановленияСоздание задачи восстановленияОчистка ресурсовИзменение ресурса HARBOR CRРазвёртывание оператора HARBOR CEВопросы и ответыКак определить, поддерживает ли PVC снапшоты?Область применения
Данное решение применимо к экземплярам HARBOR версии 2.12 и выше.
Данные Harbor состоят из трёх основных компонентов: хранилище, база данных PostgreSQL.
Это решение поддерживает резервное копирование только хранилища.
Резервное копирование базы данных PostgreSQL необходимо выполнять отдельно в соответствии со стратегией резервного копирования вашего поставщика базы данных.
Данное решение не поддерживает экземпляры HARBOR, развернутые с использованием хранилища HostPath.
Терминология
Предварительные требования
- Развернуть объектное хранилище MinIO: данное решение для резервного копирования и восстановления опирается на объектное хранилище для сохранения данных резервных копий, поэтому необходимо заранее развернуть экземпляр MinIO. ACP предоставляет Быстрое создание экземпляра MinIO.
- Развернуть Velero: Velero — инструмент для резервного копирования и восстановления. ACP предоставляет
Alauda Container Platform Data Backup for Velero, который можно развернуть во вкладкеAdministratorв разделеMarketplace->Cluster Plugins, выполнив поиск поVelero. - Установить командную утилиту mc: mc — это командный инструмент управления MinIO. Инструкции по установке доступны в официальной документации MinIO.
- Установить командную утилиту kubectl: kubectl — командный инструмент управления Kubernetes. Инструкции по установке доступны в официальной документации Kubernetes.
Для удобства последующих операций сначала задайте следующие переменные окружения:
Выполните следующие команды для настройки инструмента mc и проверки соединения:
Если ping до экземпляра MinIO проходит успешно, значит mc настроен корректно.
Резервное копирование
Подготовка
Подготовка к резервному копированию состоит из двух шагов:
- Создание бакета
- Настройка репозитория резервных копий Velero
Создание бакета
Выполните следующую команду для создания бакета для хранения данных резервных копий:
Настройка репозитория резервных копий Velero
Выполните следующую команду для создания репозитория резервных копий Velero:
Выполнение резервного копирования
Ручное резервное копирование состоит из четырёх шагов:
- Перевести экземпляр harbor в режим только для чтения
- Создать Pod для резервного копирования
- Выполнить резервное копирование
- После успешного резервного копирования отключить режим только для чтения в harbor
Перевод экземпляра harbor в режим только для чтения
Войдите в Harbor, перейдите в Administration -> Configuration -> System Settings -> Repository Read Only и установите режим только для чтения.
После изменения в верхней части интерфейса Harbor появится сообщение:
"Harbor is set to read-only mode, Deleting repository, artifact, tag and pushing image will be deactivated under read-only mode."
Создание Pod для резервного копирования
На этом шаге создаётся Pod, который монтирует PVC HARBOR, что позволяет Velero выполнить резервное копирование данных PVC.
Создание политики резервного копирования томов
Политика томов используется для указания метода резервного копирования PVC. По умолчанию PVC резервируются с помощью метода fs-backup.
Если PVC поддерживает снапшоты, можно использовать их для ускорения резервного копирования. Для этого необходимо изменить ConfigMap политики томов, указав, что для определённого класса хранения используется метод snapshot. Например, если класс хранения ceph поддерживает резервное копирование через снапшоты, добавьте следующую конфигурацию (условие добавляется в начало для более высокого приоритета):
Как определить, поддерживает ли PVC снапшоты?
Если вы используете резервное копирование PVC через снапшоты, при восстановлении нельзя менять класс хранения. Пожалуйста, корректируйте класс хранения в соответствии с реальной ситуацией.
Если Velero не включён с поддержкой CSI snapshot, при резервном копировании вы получите ошибку:
Для исправления необходимо добавить параметр --features=EnableCSI в развертывание Velero.
Выполнение резервного копирования
Выполните следующие команды для создания расписания резервного копирования и запуска задачи резервного копирования:
Просмотр логов резервного копирования:
Проверка статуса задачи. Если статус Completed, резервное копирование прошло успешно.
После успешного резервного копирования отключите режим только для чтения в Harbor
Войдите в Harbor и снимите галочку в Administration -> Configuration -> System Settings -> Repository Read Only.
Восстановление
Подготовка
Подготовка к восстановлению состоит из четырёх шагов:
- Выбор резервной копии для восстановления
- Определение целевого пространства имён для восстановления
- Удаление оператора HARBOR CE
Выбор резервной копии для восстановления
Выполните следующую команду для просмотра всех успешных записей резервного копирования и выберите нужную по времени начала.
Задайте переменную окружения BACKUP_NAME:
Определение целевого пространства имён
Рекомендуется восстанавливать в новое пространство имён. Задайте следующие переменные окружения:
Удаление оператора HARBOR CE
Выполните следующую команду для удаления оператора HARBOR CE:
Почему нужно удалить оператор HARBOR?
Во время восстановления Velero запускает backup pods для восстановления данных PVC, что занимает продолжительное время. Если оператор не удалить, могут возникнуть следующие проблемы:
- Оператор может заново создавать рабочие нагрузки на основе HARBOR CR, что приведёт к перезапуску или пересозданию восстановленных Pod, в итоге прервав или сорвав восстановление.
- Некоторые восстановленные ресурсы могут конфликтовать с существующими, например, Ingress.
Влияние удаления оператора HARBOR CE
После удаления оператора изменения в HARBOR CR, такие как настройка ресурсов или размера хранилища, не будут применяться.
Удаление оператора не вызовет сбоев в работе существующих экземпляров.
Операции восстановления
Восстановление состоит из пяти шагов:
- Создание конфигурационного файла восстановления
- Создание задачи восстановления
- Очистка ресурсов
- Изменение ресурса HARBOR CR
- Развёртывание оператора HARBOR CE
Создание конфигурационного файла восстановления
Внимательно прочитайте комментарии в YAML и при необходимости внесите изменения (например, измените класс хранения) перед созданием.
Создание задачи восстановления
Выполните следующую команду для создания задачи восстановления:
Просмотр логов восстановления:
Проверка статуса задачи. Если статус Completed, восстановление прошло успешно.
Очистка ресурсов
Убедитесь, что операция восстановления завершена, прежде чем продолжить!
Выполните следующие команды для очистки ресурсов:
Изменение ресурса HARBOR CR
В новом CR экземпляра могут потребоваться следующие изменения. Пожалуйста, скорректируйте в соответствии с вашей ситуацией:
- Доменное имя:
- Сценарий применения: исходный экземпляр был развернут с использованием доменного имени
- Причина: одинаковые доменные имена в ресурсах Ingress старого и нового экземпляров вызовут конфликт, из-за чего не удастся создать Ingress для нового экземпляра
- Рекомендация:
- (Рекомендуется) изменить домен старого экземпляра на временный, оставить новый без изменений
- или оставить старый без изменений, а новый изменить на новый домен
- Как изменить: см. Настройка сетевого доступа экземпляра
- NodePort:
- Сценарий применения: исходный экземпляр был развернут с использованием NodePort
- Причина: одинаковые NodePort в ресурсах Service старого и нового экземпляров вызовут конфликт, из-за чего не удастся создать Service для нового экземпляра
- Рекомендация:
- (Рекомендуется) изменить NodePort старого экземпляра на временный, оставить новый без изменений
- или оставить старый без изменений, а новый изменить на новый порт
- Как изменить: см. Настройка сетевого доступа экземпляра
- Класс хранения:
- Сценарий применения: класс хранения старого и нового экземпляров отличается (например, старый использует NFS, новый — Ceph)
- Причина: если не изменить, оператор будет создавать PVC с использованием старого класса хранения, что вызовет конфликт с восстановленными PVC
- Рекомендация: изменить на корректный класс хранения
- Как изменить: см. Настройка хранилища экземпляра
- Информация для подключения к PostgreSQL:
- Сценарий применения: новый и старый экземпляры используют разные инстансы или базы данных PostgreSQL
- Причина: если не изменить, новый экземпляр будет подключаться к старой базе данных
- Рекомендация: изменить на корректные данные подключения
- Как изменить: см. Настройка учётных данных PostgreSQL
Развёртывание оператора HARBOR CE
Перейдите во вкладку Administrator, на страницу Marketplace -> OperatorHub и заново разверните оператор Alauda Build of HARBOR.
После развертывания оператора он создаст новый экземпляр согласно HARBOR CR. Вы можете отслеживать прогресс на странице деталей экземпляра.
После того, как статус экземпляра вернётся в норму, войдите в HARBOR и проверьте успешность восстановления данных. Проверяемые элементы включают, но не ограничиваются:
- Группы
- Репозитории
- Образы
Одновременно отключите режим только для чтения для восстановленного экземпляра Harbor (войдите в Harbor и снимите галочку в Administration -> Configuration -> System Settings -> Repository Read Only).
Вопросы и ответы
Как определить, поддерживает ли PVC снапшоты?
Чтобы определить, поддерживает ли PVC снапшоты, необходимо проверить, поддерживает ли его базовый StorageClass функциональность снапшотов. PVC поддерживает снапшоты, если в кластере существует VolumeSnapshotClass, у которого поле driver совпадает с provisioner StorageClass. Если такой VolumeSnapshotClass есть, значит StorageClass (а следовательно, и PVC) поддерживает снапшоты.
Пример конфигурации:
Ключевые моменты:
provisionerStorageClass должен точно совпадать сdriverVolumeSnapshotClass- Оба ресурса должны существовать в кластере
- CSI-драйвер должен поддерживать операции со снапшотами