Керування розкладом резервного копіювання реєстру

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис

Платформа надає можливість керувати розкладом створення резервних копій компонентів реєстру, а також часом зберігання таких копій у сховищі бекапів.

Резервні копії компонентів створюються за допомогою інструменту velero та зберігаються у захищеному сховищі бекапів minio, що знаходиться поза межами кластера Платформи.

Розклад резервного копіювання налаштовується у форматі unix-cron на інтерфейсі адміністративної панелі Control Plane.

Період зберігання резервних копій має бути більшим за або дорівнювати одиниці, бути цілим числом та не містити спеціальних символів.

Запуск процесів по cron визначається у різних часових зонах для резервного копіювання реєстру та реплікації S3-об’єктів (детальніше про це описано у розділах нижче).

Також система виконує автоматичну реплікацію даних, які зберігаються в S3-бакетах. Ви можете налаштувати розклад резервного копіювання таких реплікацій.

Значення розкладу резервного копіювання для компонентів реєстру, а також для реплікацій бакетів зберігаються до конфігурації реєстру у файл deploy-templates/values.yaml за допомогою пайплайну MASTER-Build-<registry-name>.

За створення резервних копій реєстру відповідає Jenkins-пайплайн Create-registry-backup-<registry-name>. Він запускається згідно зі встановленим часом у розкладі, створює бекапи та зберігає їх визначену кількість днів.

2. Налаштування розкладу резервного копіювання

Важливо планувати створення резервних копій на час, коли ваша система найменш завантажена. Рекомендуємо робити це вночі. Так все пройде плавно і без зайвих незручностей.

2.1. Налаштування розкладу створення резервних копій реєстру та періоду їх зберігання

  1. Увійдіть до консолі Control Plane як адміністратор реєстру.

    update cluster mgmt 01

  2. Перейдіть до розділу Реєстри та оберіть необхідний.

    change key 01

  3. Натисніть кнопку Редагувати, що розташована у правому верхньому куті.

    Налаштування розкладу резервного копіювання та часу зберігання резервних копій доступне також при створенні реєстру, та не є обовʼязковим.

    change key 02

  4. Перейдіть до секції Резервне копіювання. Тут можна встановити розклад створення резервних копій та період зберігання. Активуйте перемикач та налаштуйте розклад створення автоматичних резервних копій.

    За замовчуванням налаштування автоматичних резервних копій вимкнено для нових реєстрів.

    backup schedule registry components 01

    Розклад резервного копіювання налаштовується у форматі unix-cron та визначається за київським часом.

    За замовчуванням часовий пояс Europe/Kiev встановлюється у конфігурації values.yaml та на рівні поди з Jenkins як змінна середовища.

    Враховується зміщення на +2 години (UTC+2) у зимовий та +3 години (UTC+3) у літній час.

    Скористайтеся ресурсом https://crontab.guru/ — простим та зручним редактором для виразів cron, щоб краще зрозуміти логіку налаштувань розкладу.

    • У полі Розклад вкажіть, наприклад, таке значення: 5 10 * * MON-FRI. Використовуйте пробіл як роздільник.

      Це означатиме, що резервна копія для середовища реєстру створюватиметься кожного дня, з понеділка по п’ятницю, о 10:05 за київським часом.

      Після введення розкладу резервного копіювання, на інтерфейсі з’являється підказка, яка показує час 3-х наступних запусків створення резервних копій.
    • У полі Час зберігання (днів) вкажіть, наприклад, 5. Тобто бекап зберігатиметься у сховищі протягом 5 днів.

      Значення може бути лише додатним числом та не меншим за 1 день. Рекомендуємо встановити час збереження більшим за період між створенням копій.

      backup schedule registry components 02

  5. Перейдіть до налаштування резервного копіювання реплікацій об’єктів S3, або залиште значення за замовчуванням та натисніть Підтвердити.

2.2. Резервне копіювання реплікацій об’єктів S3

2.2.1. Контекст

Velero — це відкритий інструмент, що надає можливості резервного копіювання, відновлення, міграції та аварійного відновлення компонентів Платформи. Важливо зазначити, що Velero спроможний створювати резервні копії не лише власне даних (наприклад, зі сховищ, сумісних з S3), а й стану середовища OpenShift, включаючи конфігурації розгортань.

S3-бакети, своєю чергою, слугують для зберігання різноманітних даних. У контексті нашої системи, вони використовуються для реплікації даних між S3-сумісними сховищами.

Верхньорівневий опис роботи системи наступний:
  1. Використовуючи компонент velero, Платформа створює резервні копії ресурсів OpenShift (таких як конфігурації, секрети, томи (volumes), ресурси баз даних тощо) згідно з налаштованим графіком. Ці резервні копії зберігаються у сховищі Minio протягом визначеного періоду часу (детальніше див. у розділі Налаштування розкладу резервного копіювання).

  2. Крім того, реєстр містить дані, які є необхідними для бізнес-процесів, зокрема тимчасові дані, історія виконання процесів тощо). Ці дані зберігаються у вигляді ObjectBucketClaim (obc) в S3-бакетах. Реплікація цих бакетів відбувається автоматично. Ви можете налаштувати резервне копіювання для таких реплікацій через адміністративну панель Control Plane.

Реплікація полягає в автоматичному копіюванні даних з одного бакета до іншого, що може бути корисним, наприклад, для створення резервних копій даних в інших географічних регіонах, що забезпечує високу доступність та надійність.

Таким чином, платформа надає дворівневий захист: через резервні копії ресурсів OpenShift, які створюються за допомогою Velero і зберігаються в Minio, та через реплікацію S3-бакетів, яка гарантує додаткове зберігання даних.

2.2.2. Налаштування бекапів реплікації S3-об’єктів

  1. Увійдіть до консолі Control Plane як адміністратор реєстру.

    update cluster mgmt 01

  2. Перейдіть до розділу Реєстри та оберіть необхідний.

    change key 01

  3. Натисніть кнопку Редагувати, що розташована у правому верхньому куті.

    change key 02

  4. Перейдіть до секції Резервне копіювання > Резервне копіювання реплікацій об'єктів S3.

    backup schedule registry components 10

  5. Налаштуйте розклад.

    Розклад резервного копіювання налаштовується у форматі unix-cron та визначається за UTC.

    Часова зона встановлюється у конфігурації values.yaml та на рівні поди з Jenkins як змінна середовища.

    Скористайтеся ресурсом https://crontab.guru/ — простим та зручним редактором для виразів cron, щоб краще зрозуміти логіку налаштувань розкладу.

    У полі Розклад вкажіть, наприклад, таке значення: 25 12 * * *. Використовуйте пробіл як роздільник. Це означатиме, що резервна копія реплікації S3-бакета створюватиметься кожного дня о 12:25.

    Якщо не задати власний розклад, то система використає значення за замовчуванням згідно з UTC: 30 17 * * * *.

    Після введення розкладу резервного копіювання, на інтерфейсі з’являється підказка, яка показує час 3-х наступних запусків створення резервних копій:

    Наступний запуск резервного копіювання реплікацій об’єктів S3 (за UTC):

    • 09.06.2023 12:25:00

    • 10.06.2023 12:25:00

    • 11.06.2023 12:25:00

  6. Налаштуйте місце зберігання резервних копій реплікацій об’єктів S3.

    Якщо не встановити власних значень для зберігання, використовуються значення за замовчуванням, встановлені системною при розгортанні реєстру.
    • Встановіть власні значення для зберігання резервних копій реплікацій об’єктів S3. Для цього натисніть Задати власні значення та у новому вікні заповніть відповідні поля:

      • Ім'я бакета
        Ім’я бакета має бути унікальним серед усіх інших бакетів у вашому середовищі S3 та містити від 3 до 63 символів. Допустимі символи: "a-z", "0-9", ".", "-". Наприклад, my-s3-bucket-123.

      • Endpoint
        Це URL, за яким сервіс з’єднується із S3-середовищем. Наприклад, https://endpoint.com. Наприклад, для Amazon S3 це може бути https://s3.amazonaws.com для глобального endpoint або https://s3.<Region>.amazonaws.com для конкретного регіону, де <Region> це ідентифікатор регіону, наприклад, us-west-2.

      • Логін
        Це облікові дані, які ви отримуєте від постачальника послуги. Наприклад, для Amazon S3, це ваш AWS Access Key ID, що виглядає приблизно так: AKIAIOSFODNN7EXAMPLE.

      • Пароль
        Це облікові дані, які ви отримуєте від постачальника послуги. Наприклад, для Amazon S3, це ваш AWS Secret Access Key, що може виглядати приблизно так: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.

    • Натисніть Підтвердити, щоб зберегти власні значення для зберігання, або Відмінити, щоб скасувати внесення змін.

      backup schedule registry components 9

    • На сторінці Резервне копіювання знову натисніть Підтвердити, щоб зберегти зміни та відправити запит на оновлення конфігурації реєстру.

      backup schedule registry components 11

2.3. Застосування конфігурації розкладу

У результаті виконання налаштувань розкладу резервного копіювання, описаних у попередніх підрозділах, формується запит на оновлення зі статусом Новий та типом Редагування реєстру.

  1. У розділі Реєстри > Запити на оновлення знайдіть необхідний запит.

    cp submit mr 1

  2. Відкрийте сформований запит, натиснувши іконку перегляду — 👁.

  3. У новому вікні зіставте 2 версії змін, переконайтеся, що внесені вами дані вірні, та натисніть Підтвердити. Ви також можете відразу відхилити зміни до конфігурації, натиснувши Відхилити.

    Запропоновані зміни вносяться до конфігурації файлу deploy-templates/values.yaml репозиторію реєстру у разі підтвердження.

    backup schedule registry components 12

    cp submit mr 3

    У результаті запит набуває статусу Підтверджено.

  4. Зачекайте, доки виконається збірка коду. Це може зайняти декілька хвилин.

Після успішного застосування конфігурації, у встановлений час запускається Jenkins-пайплайн Create-registry-backup-<registry-name>. Він застосовує параметри заданої конфігурації та створює резервні копії у сховищі бекапів (див. детальніше у розділі Створення та перевірка бекапів).

3. Створення та перевірка бекапів

У визначену дату та час мають бути створені резервні копії, згідно із розкладом, вказаним у конфігурації (див. — Налаштування розкладу резервного копіювання).

Перевірити це можна наступним чином:
  1. У відомостях про реєстр відкрийте секцію Компоненти реєстру та перейдіть до Jenkins.

    backup schedule registry components 1

  2. Перейдіть до теки з необхідним реєстром та оберіть пайплайн Create-registry-backup-<registry-name>. Якщо пайплайн підсвічується зеленим, то збірку можна вважати успішною.

    backup schedule registry components 2

  3. Відкрийте деталі збірки.

    backup schedule registry components 3

  4. Перейдіть до виводу консолі, Console Output, щоб переглянути технічний лог виконання пайплайну.

    backup schedule registry components 4

  5. Прокрутіть бігунок униз сторінки та переконайтеся, що резервну копію реєстру створено.

    Приклад 1. Console Output. Успішне створення резервної копії реєстру
    [INFO] Velero backup - external-1-2023-02-17-17-07-36 done with Completed status

    Вираз показує, що створено резервну копію для реєстру із певною назвою (тут — external-1), дату та час створення бекапу та статус успішного завершення.

    backup schedule registry components 5

Після закінчення строку зберігання, система бекапування видаляє застарілі резервні копії.

© 2023 Платформа Реєстрів.