Настройка бэкапирования Kubernetes через Velero — опыт и сроки

Потеря данных в StatefulSet после неудачного деплоя может обернуться часами ручного восстановления. Мы настраиваем бэкапирование Kubernetes через Velero, чтобы вы могли откатить любой namespace или PersistentVolume за минуты. Наша команда реализует проект под ключ — от аудита до внедрения и последующей поддержки, обеспечивая надёжную защиту данных без срыва сроков.
Часто задаваемые вопросы

Настройка бэкапирования Kubernetes через Velero — опыт и сроки

Потеря данных в StatefulSet после неудачного деплоя — стандартная ситуация в боевых кластерах. Без бэкапа на уровне namespace восстановление занимает часы: пересоздавать StatefulSet, искать последний снапшот etcd, поднимать PV вручную. Мы сталкивались с этим десятки раз и знаем, как избежать таких сценариев. Velero закрывает этот gap: namespace-level и resource-level backup с поддержкой PV через CSI snapshot или Kopia (бывший Restic). При тестовом restore в изолированном namespace данные восстанавливаются за 5–15 минут — это в 10 раз быстрее ручного поднятия, которое занимает 2–3 часа.

Почему Velero лучше etcd-снапшотов?

etcd хранит состояние кластера, но восстановление из него — это возврат всего кластера целиком. Если нужно откатить один namespace или один PersistentVolume после ошибочного деплоя — etcd не подойдёт. Velero даёт гранулярность на уровне ресурсов и поддерживает гибкие политики хранения.

Кроме того, Velero интегрируется с облачными объектными хранилищами (S3, GCS, Azure Blob), что позволяет хранить бэкапы в другом регионе или аккаунте — ключевой элемент disaster recovery. По нашим замерам, время восстановления отдельного приложения снижается в 10 раз по сравнению с ручным процессом. При типичном кластере с 100 PVC и 50 workloads полный бэкап занимает около 20 минут.

Как избежать типичных ошибок при настройке Velero?

Первая проблема: CSI-драйвер без поддержки VolumeSnapshot API. Если такой драйвер не зарегистрировал VolumeSnapshotClass, Velero молча пропустит данные томов. В логах — Included Volumes: 0. Решение: включите Node Agent (Kopia) для файлового бэкапа или добавьте аннотацию velero.io/csi-volumesnapshot-class к PVC.

Вторая ошибка — IAM-политика для object storage без прав на запись объектов. На AWS типично: у service account есть доступ к bucket, но не к пути /*. Бэкап метаданных проходит, а данные нет. Ошибка в логах: AccessDenied на s3:PutObject для backups/*. Исправляется добавлением отдельного statement на arn:aws:s3:::velero-bucket/*.

Третья — restore в кластер с другим StorageClass. Velero не переименует StorageClass автоматически. Нужен --namespace-mappings или ConfigMap с resource modifier для маппинга имён. Без этого PVC зависнут в Pending.

Правильная архитектура бэкапа

Для production-кластера схема выглядит так: Object storage: отдельный S3-bucket (или GCS/Azure Blob) в другом регионе или аккаунте. Политика бэкапов: два расписания через Schedule CR:

  • Ежедневный полный бэкап всего кластера с TTL 30 дней
  • Почасовой бэкап критичных namespace'ов (базы данных, stateful workloads) с TTL 7 дней
Пример Schedule для почасовых бэкапов
---
apiVersion: velero.io/v1
kind: Schedule
metadata:
  name: hourly-databases
  namespace: velero
spec:
  schedule: "0 * * * *"
  template:
    includedNamespaces:
      - postgres
      - redis
    storageLocation: default
    volumeSnapshotLocations:
      - default
    ttl: 168h0m0s
---

Node Agent (Kopia) обязательно включать, если хотя бы часть PV использует hostPath или NFS — там CSI snapshot недоступен.

Тестирование restore — обязательная часть настройки. Запускаем restore в отдельный namespace с суффиксом -restore-test каждые две недели. Автоматически проверяем, что приложение поднялось и данные целые.

Сравнение подходов: Velero vs etcd-снапшоты

Критерий Velero etcd-снапшот
Гранулярность namespace, resource весь кластер
Восстановление PV CSI/Kopia вручную + ручное поднятие PV
Хранение object storage (S3/GCS) локальный файл
Время восстановления одного приложения 5–15 минут 1–2 часа
Поддержка кросс-региона встроенная нет

Мониторинг бэкапов

Velero экспортирует метрики Prometheus на порту 8085. Ключевые:

  • velero_backup_success_total
  • velero_backup_failure_total
  • velero_backup_duration_seconds
  • velero_restore_success_total

Алерт на velero_backup_failure_total > 0 за 2 часа — must-have. В Grafana есть готовый дашборд (ID 11055) с визуализацией статусов и длительности. Наша услуга включает автоматизацию бэкапов в рамках DevOps практик.

Процесс настройки под ключ

  1. Инвентаризация — проверяем StorageClass, CSI-драйвер, наличие VolumeSnapshotClass, список приложений.
  2. Выбор object storage и настройка IAM/service account с минимальными правами.
  3. Установка Velero через Helm-чарт (vmware-tanzu/velero), настройка BackupStorageLocation и VolumeSnapshotLocation.
  4. Создание расписаний — для всего кластера и для критичных namespace.
  5. Настройка мониторинга — метрики, алерты, дашборд.
  6. Пробный restore — в отдельный namespace с проверкой целостности данных.
  7. Документация — описание всех Schedule CR, процедура полного и частичного восстановления.

Что входит в работу

  • Аудит текущей инфраструктуры
  • Установка и конфигурация Velero под ваше облако
  • Настройка файлового бэкапа через Kopia при необходимости
  • Интеграция с Prometheus и Grafana (3 алерта)
  • Проведение тестового restore
  • Документация и инструкция для команды
  • 2 недели сопровождения после запуска

Ориентировочные сроки

Сценарий Сроки
Один кластер, CSI snapshot, S3 от 1 дня
Несколько кластеров, кросс-регион restore 2–3 дня
+ Настройка мониторинга и алертов +0.5 дня
+ Тестирование disaster recovery +1 день

Стоимость рассчитывается индивидуально после аудита. Свяжитесь с нами для оценки вашей инфраструктуры. DevOps-инженеры нашей компании имеют десятилетний опыт в области резервного копирования Kubernetes, выполнено более 200 проектов по миграции и резервному копированию K8s. Гарантируем работоспособность настроек и готовы обучить вашу команду. Закажите настройку Velero для вашего кластера уже сегодня.

Velero Documentation на GitHub

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142