Velero — это инструмент для резервного копирования, восстановления и переноса данных в Kubernetes. Он позволяет создавать бэкапы и восстанавливать состояние кластеров, а также выполнять миграции между кластерами.
Для работы с Velero необходимо установить Velero CLI на локальную машину и настроить его в вашем кластере Kubernetes.
Предварительные требования
Перед началом установки убедитесь, что выполнены следующие условия:
- Настроен доступ к вашему Kubernetes-кластеру через kubectl. Инструкцию по настройке можно найти здесь.
- Создан 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.
Примените манифест:
kubectl apply -f velero-credentials-secret.yaml
Проверьте создание секрета:
kubectl describe secrets cloud-credentials -n velero
Значение Data.cloud
должно быть ненулевым.
Установка 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
Установка 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.twcstorage.ru
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.
Установка через панель управления
-
Перейдите в панель управления кластером и откройте вкладку «Дополнения». Выберите Velero.
- Включите режим продвинутой установки и загрузите файл
values.yaml
, нажав на «Загрузить конфигурацию из файла».
-
Нажмите «Установить».
- Дождитесь завершения установки и проверьте стутс подов:
kubectl get pods -n velero
Установка через Helm
Вы можете установить Velero при помощи Helm. Для этого:
-
Добавьте репозиторий Velero:
helm repo add velero https://vmware-tanzu.github.io/helm-charts
helm repo update
-
Установите Velero с использованием файла конфигурации:
helm install velero velero/velero -f values.yaml --namespace velero
-
Проверьте установку:
kubectl get pods -n velero
Статус подов Velero должен быть Running
.
Использование
Для демонстрации работы Velero создадим тестовый деплоймент с Nginx и покажем процесс создания резервной копии, удаления ресурсов и последующего восстановления данных.
Создание бэкапа
-
Создайте деплоймент с Nginx в отдельном неймспейсе:
kubectl create namespace nginx-test
kubectl create deployment nginx --image=nginx -n nginx-test
-
Создайте бэкап:
velero backup create nginx-backup --include-namespaces nginx-test
Мы указали параметр --include-namespaces
, чтобы выполнить копирование всего неймспейса. Вы также можете указать другие параметры при создании бэкапа:
-
--include-resources
: включает конкретные ресурсы (например,pods
,services
). -
--exclude-resources
: исключает определённые ресурсы. -
--ttl
: задаёт время жизни бэкапа (например,10h15m0s
).
-
Проверьте статус бэкапа:
velero backup describe nginx-backup
Восстановление данных
-
Удалите тестовый неймспейс:
kubectl delete namespace nginx-test
-
Восстановите ресурсы из бэкапа:
velero restore create --from-backup nginx-backup
-
Убедитесь, что неймспейс и деплоймент восстановлены:
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
Эти функции позволяют гибко управлять процессами резервного копирования и восстановить данные в нужный момент.