<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатный перенос IT-инфраструктуры в облако
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Velero

Velero — это инструмент для резервного копирования, восстановления и переноса данных в Kubernetes. Он позволяет создавать бэкапы и восстанавливать состояние кластеров, а также выполнять миграции между кластерами.

Для работы с Velero необходимо установить Velero CLI на локальную машину и настроить его в вашем кластере Kubernetes.

Предварительные требования

Перед началом установки убедитесь, что выполнены следующие условия:

  1. Настроен доступ к вашему Kubernetes-кластеру через kubectl. Инструкцию по настройке можно найти здесь.
  2. Создан S3-бакет для размещения резервных копий. Создать бакет можно по инструкции.

Создадим отдельный неймспейс для Velero:

kubectl create namespace velero

Создание секрета S3

Для настройки доступа Velero к S3-бакету создадим секрет. Создайте файл манифеста velero-credentials-secret.yaml со следующим содержимым:

apiVersion: v1
kind: Secret
metadata:
  name: cloud-credentials
  namespace: velero
type: Opaque
stringData:
  cloud: |
    [default]
    aws_access_key_id=S3_Access_Key
    aws_secret_access_key=S3_Secret_Access_Key

Замените S3_Access_Key и S3_Secret_Access_Key на свои ключи доступа к S3.

Selection 167

Примените манифест:

kubectl apply -f velero-credentials-secret.yaml

Проверьте создание секрета:

kubectl describe secrets cloud-credentials -n velero

Значение Data.cloud должно быть ненулевым.

Screenshot 01 25 25 21:02:04

Установка Velero CLI

Бинарный файл

Скачайте архив с последней версией Velero с официальной страницы релизов GitHub:

wget https://github.com/vmware-tanzu/velero/releases/download/v1.15.2/velero-v1.15.2-linux-amd64.tar.gz

Распакуйте архив:

tar -xvzf velero-v1.15.2-linux-amd64.tar.gz

Переместите бинарный файл Velero в директорию /usr/local/bin:

sudo mv ./velero-v1.15.2-linux-amd64/velero /usr/local/bin/

Homebrew

Для установки Velero на macOS выполните команду:

brew install velero

Chocolatey

Для установки Velero на Windows с использованием Chocolatey выполните команду:

choco install velero

Проверьте установку:

velero version

Screenshot 01 25 25 21:04:13

Установка Velero в кластере

Создайте файл values.yaml с минимально необходимой конфигурацией:

namespace:
  name: velero
  labels: {}

credentials:
  existingSecret: cloud-credentials

configuration:
  backupStorageLocation:
    - name: default
      provider: aws
      bucket: имя_бакета
      default: true
      config:
        region: ru-1
        s3ForcePathStyle: true
        s3Url: https://s3.timeweb.cloud

  volumeSnapshotLocation:
    - name: default
      provider: aws
      config:
        region: ru-1

initContainers:
  - name: velero-plugin-for-aws
    image: velero/velero-plugin-for-aws:v1.7.0
    volumeMounts:
      - mountPath: /target
        name: plugins

Описание параметров:

  • backupStorageLocation: Настраивает хранилище для бэкапов.

    • bucket: Имя S3-бакета.

    • s3Url: URL для S3-хранилища Timeweb Cloud.

  • initContainers: Добавляет необходимый плагин для работы с S3.

  • credentials.existingSecret: Ссылается на ранее созданный секрет cloud-credentials, содержащий ключи доступа к S3.

Установка через панель управления

  1. Перейдите в панель управления кластером и откройте вкладку «Дополнения». Выберите Velero.

Selection 168

  1. Включите режим продвинутой установки и загрузите файл values.yaml, нажав на «Загрузить конфигурацию из файла».

Selection 169

  1. Нажмите «Установить».

  2. Дождитесь завершения установки и проверьте стутс подов:
kubectl get pods -n velero

Установка через Helm

Вы можете установить Velero при помощи Helm. Для этого:

  1. Добавьте репозиторий Velero:

helm repo add velero https://vmware-tanzu.github.io/helm-charts
helm repo update
  1. Установите Velero с использованием файла конфигурации:

helm install velero velero/velero -f values.yaml --namespace velero
  1. Проверьте установку:

kubectl get pods -n velero

Статус подов Velero должен быть Running.

Использование

Для демонстрации работы Velero создадим тестовый деплоймент с Nginx и покажем процесс создания резервной копии, удаления ресурсов и последующего восстановления данных.

Создание бэкапа

  1. Создайте деплоймент с Nginx в отдельном неймспейсе:

kubectl create namespace nginx-test
kubectl create deployment nginx --image=nginx -n nginx-test
  1. Создайте бэкап:

velero backup create nginx-backup --include-namespaces nginx-test

Мы указали параметр --include-namespaces, чтобы выполнить копирование всего неймспейса. Вы также можете указать другие параметры при создании бэкапа:

  • --include-resources: включает конкретные ресурсы (например, pods, services).

  • --exclude-resources: исключает определённые ресурсы.

  • --ttl: задаёт время жизни бэкапа (например, 10h15m0s).

  1. Проверьте статус бэкапа:

velero backup describe nginx-backup

Восстановление данных

  1. Удалите тестовый неймспейс:

kubectl delete namespace nginx-test
  1. Восстановите ресурсы из бэкапа:

velero restore create --from-backup nginx-backup
  1. Убедитесь, что неймспейс и деплоймент восстановлены:

kubectl get all -n nginx-test

Управление расписанием и статусами бэкапов

Помимо создания бэкапов вручную, Velero позволяет автоматизировать создание резервных копий по расписанию. Также вы можете управлять существующими бэкапами.

Настройка автоматического создания бэкапов

Вы можете настроить расписание для регулярного создания резервных копий. Например, чтобы создавать бэкап всех неймспейсов каждый день в полночь:

velero schedule create имя_задачи --schedule "0 0 * * *" --include-namespaces '*'
  • --schedule "0 0 * * *": расписание в формате Cron (каждый день в 00:00).

  • --include-namespaces '*': включить все неймспейсы.

Для создания бэкапов одного неймспейса раз в час:

velero schedule create имя_задачи --schedule "0 * * * *" --include-namespaces my-namespace

Проверить расписание создания бэкапов можно командой:

velero schedule get

Если задача в расписании больше не нужна, ее можно удалить:

velero schedule delete имя_задачи

Просмотр и управление бэкапами

Список всех существующих бэкапов можно вывести командой:

velero backup get

Для удаления старого бэкапа воспользуйтесь командой:

velero backup delete имя_бэкапа

Чтобы проверить детали бэкапа, включая его статус и ресурсы, выполните:

velero backup describe имя_бэкапа --details

Эти функции позволяют гибко управлять процессами резервного копирования и восстановить данные в нужный момент.

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев