Резервное копирование и восстановление HARBOR с использованием Velero
В этом руководстве показано, как использовать Velero — инструмент с открытым исходным кодом для аварийного восстановления в облачных нативных средах, для выполнения операций резервного копирования и восстановления HARBOR.
Содержание
Область примененияТерминологияПредварительные требованияРезервное копированиеПодготовкаСоздание бакетаНастройка репозитория резервных копий VeleroВыполнение резервного копированияПеревод экземпляра Harbor в режим только для чтенияСоздание Pod для резервного копированияСоздание политики резервного копирования томовВыполнение резервного копированияПосле успешного резервного копирования отключите режим только для чтения в HarborВосстановлениеПодготовкаВыбор резервной копии для восстановленияОпределение целевого пространства имёнУдаление оператора HARBOR CEОперации восстановленияСоздание конфигурационного файла восстановленияСоздание задачи восстановленияОчистка ресурсовИзменение ресурса HARBOR CRРазвёртывание оператора HARBOR CEВопросы и ответыКак определить, поддерживает ли PVC snapshot?Область применения
Данное решение применимо к экземплярам 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, перейдите в 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 поддерживает создание снимков (snapshot), можно использовать резервное копирование с помощью snapshot для ускорения процесса. Для этого необходимо изменить ConfigMap политики томов, указав, что класс хранилища использует snapshot для резервного копирования. Например, если класс хранилища ceph поддерживает snapshot, добавьте следующую конфигурацию (добавленное условие следует разместить в начале для более высокого приоритета):
Как определить, поддерживает ли PVC snapshot?
Если вы используете резервное копирование PVC с помощью snapshot, при восстановлении нельзя менять класс хранилища. Пожалуйста, корректируйте класс хранилища в соответствии с реальной ситуацией.
Если 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 snapshot?
Чтобы определить, поддерживает ли PVC snapshot, необходимо проверить, поддерживает ли его базовый StorageClass функцию snapshot. PVC поддерживает snapshot, если в кластере существует VolumeSnapshotClass, у которого поле driver совпадает с provisioner StorageClass. Если такой VolumeSnapshotClass существует, значит StorageClass (и, следовательно, PVC) поддерживает функцию snapshot.
Пример конфигурации:
Ключевые моменты:
provisionerStorageClass должен точно совпадать сdriverVolumeSnapshotClass- Оба ресурса должны существовать в кластере
- CSI-драйвер должен поддерживать операции snapshot