Синхронизация образов Harbor с реестром кластера
В этом руководстве объясняется, как настроить правила репликации Harbor для автоматической синхронизации образов из Harbor в реестры кластеров при загрузке новых образов.
Содержание
Предварительные требованияОбзорШаги настройкиШаг 1: Настройка Registry Endpoint в HarborШаг 2: Настройка Replication Rule в HarborШаг 3: Проверка синхронизации образовИтогFAQМожно ли использовать функцию репликации для аварийного восстановления Harbor?Решаемые проблемыНерешаемые проблемыРекомендации для комплексного решения DRСсылкиПредварительные требования
- Рабочий сервис Harbor
- Клиент
podmanили другие инструменты управления образами, установленные локально для загрузки образов в Harbor - Kubernetes-кластер с развернутым реестром
- Локально установленный и настроенный kubectl для доступа к Kubernetes-кластеру
Обзор
Основные настройки в Harbor
- Registry Endpoint: Добавление информации о целевом реестре в Harbor
- Replication Rule: Определение, какие образы синхронизировать и путь синхронизации
Обзор процесса
Шаги настройки
Шаг 1: Настройка Registry Endpoint в Harbor
Сначала настройте информацию о целевом реестре в Harbor с помощью функции Registry Endpoint.
- Войдите в Harbor и перейдите в Administration > Registries
- Нажмите NEW ENDPOINT и настройте следующие параметры:
- Provider: Выберите тип реестра. Для примера выберите
Harbor - Name: Укажите описательное имя для целевого реестра. Рекомендуется использовать формат
<cluster-name>-registryдля удобства идентификации в этом примере. - Endpoint URL: Введите URL вашего реестра (например,
https://cluster1-registry.example.com) - Access ID: Имя пользователя с правами
Push/Deleteдля целевого реестра - Access Secret: Пароль для указанного пользователя
- Verify Remote Cert: Определяет, нужно ли проверять сертификат удаленного реестра. Снимите галочку для самоподписанных или недоверенных сертификатов
- Нажмите TEST CONNECTION для проверки конфигурации и сетевого соединения
- Нажмите OK для сохранения настроек
Шаг 2: Настройка Replication Rule в Harbor
Далее настройте правило репликации, чтобы определить, как Harbor будет синхронизировать образы с целевым реестром.
- Перейдите в Administration > Replications
- Нажмите NEW REPLICATION RULE и настройте:
Основные настройки
- Name: Используйте описательное имя, например
<cluster-name>-registry-replication - Replication mode: Выберите
Push-basedдля запуска синхронизации при загрузке образов в Harbor
Фильтр исходных ресурсов
Настройте фильтры для выбора артефактов для репликации:
- Name: Фильтр по имени ресурса. Оставьте пустым или используйте
**для выбора всех. В этом примере оставьте пустым для синхронизации всех репозиториев - Tag: Фильтр по тегу/версии. Оставьте пустым или используйте
**для выбора всех тегов. В этом примере оставьте пустым для синхронизации всех тегов - Label: Фильтр по меткам артефактов. Оставьте пустым для выбора всех артефактов. В этом примере оставьте пустым для синхронизации всех артефактов
- Resource: Фильтр по типу ресурсов. В этом примере выберите
ALLдля синхронизации всех типов артефактов
Назначение
Определите цель синхронизации и структуру пути:
- Destination registry: Выберите конечную точку реестра, настроенную на шаге 1
- Namespace: Имя пространства имён для репликации ресурсов. Если пусто, ресурсы будут помещены в то же пространство имён, что и источник. В этом примере оставьте пустым для использования того же пространства имён, что и у источника
- Flattening: Уменьшение вложенной структуры репозиториев при копировании образов. Оставьте пустым для сохранения исходной иерархии образов
Дополнительные настройки
- Trigger Mode: Выберите способ запуска синхронизации. Для примера выберите
Event Basedдля запуска синхронизации при событиях загрузки в Harbor- Отметьте "Delete remote resources when locally deleted", если хотите, чтобы удаление в Harbor распространялось на целевой реестр
- Bandwidth: Максимальная пропускная способность сети на одного рабочего репликации (используйте -1 для неограниченной)
- Options:
- Отметьте
Overrideдля перезаписи существующих ресурсов в целевом реестре - Отметьте
Enable ruleдля активации правила репликации
- Отметьте
Шаг 3: Проверка синхронизации образов
Загрузка образа в Harbor
Загрузите образ в Harbor для запуска синхронизации:
Мониторинг задания синхронизации в Harbor
- В Harbor перейдите в Administration > Replications
- Выберите созданное правило репликации, чтобы увидеть автоматически запущенную задачу синхронизации
- Нажмите на запись выполнения для просмотра подробной информации
Проверка результатов синхронизации
Создайте pod в целевом кластере, чтобы проверить успешную синхронизацию образа:
Если pod успешно запустится, синхронизация работает корректно.
Итог
Данная настройка обеспечивает автоматическую синхронизацию образов из Harbor в реестры кластеров, поддерживая согласованность путей образов и обеспечивая беспрепятственные рабочие процессы развертывания по всей инфраструктуре. Репликация на основе push-событий гарантирует доступность образов в целевых реестрах сразу после их загрузки в Harbor.
FAQ
Можно ли использовать функцию репликации для аварийного восстановления Harbor?
Функция репликации Harbor может обеспечить лишь предварительное решение для аварийного восстановления (DR) и имеет определённые ограничения.
- Во-первых, необходим механизм автоматического переключения разрешения доменных имён с основного экземпляра на резервный при сбое основного, чтобы пользователи могли продолжать скачивать уже синхронизированные образы.
- Во-вторых, эта функция основана на событийной синхронизации образов и предназначена в первую очередь для репликации между реестрами, а не как полноценное решение для аварийного восстановления.
Ниже приведён анализ проблем, которые решает данное решение, и тех, которые остаются нерешёнными.
Решаемые проблемы
- Автоматическая синхронизация данных образов: Образы контейнеров и Helm-чарты с основного экземпляра могут автоматически синхронизироваться на резервный. При включённой опции "синхронизация удалений" образы, удалённые с основного экземпляра, автоматически удаляются и с резервного.
- Автоматическое переключение (failover): При сбое основного экземпляра внешнее разрешение доменных имён может автоматически переключиться на резервный экземпляр, позволяя пользователям скачивать уже синхронизированные образы (время восстановления, RTO, зависит в первую очередь от реализованного механизма переключения).
Нерешаемые проблемы
- Автоматическая синхронизация необразных данных (критично!):
- Описание проблемы: Функция репликации Harbor не синхронизирует метаданные, такие как учётные записи пользователей, настройки разрешений (например, OIDC), группы участников проектов или журналы аудита.
- Влияние: Пользователи, чьи метаданные не синхронизированы, не смогут получить доступ к Harbor после переключения, что существенно снижает эффективность аварийного восстановления.
- Recovery Point Objective (RPO):
- Описание проблемы: Функция репликации не предназначена специально для аварийного восстановления. Репликация образов зависит от выполнения фоновых задач, что не гарантирует синхронизацию всех образов основного реестра с резервным на момент сбоя.
- Влияние: При сбое основного реестра пользователи не смогут скачать образы, которые ещё не были синхронизированы.
- Возврат к основному экземпляру:
- Описание проблемы: Текущее решение поддерживает только автоматическое переключение на резервный экземпляр. Возврат к основному требует ручного вмешательства.
- Влияние: Перед возвратом необходимо синхронизировать инкрементальные данные с резервного экземпляра обратно на основной, иначе эти данные будут потеряны.
Рекомендации для комплексного решения DR
Для создания надёжного механизма аварийного восстановления следует сосредоточиться на синхронизации на уровне базы данных PostgreSQL (PG) и хранилища. Например, реализовать репликацию базы данных PostgreSQL в реальном времени и включить синхронизацию на уровне хранилища (например, кросс-региональную репликацию S3) для обеспечения полной согласованности как метаданных, так и всех данных.