Velero — это инструмент для резервного копирования, восстановления и переноса данных в Kubernetes. Он позволяет создавать бэкапы и восстанавливать состояние кластеров, а также выполнять миграции между кластерами.
Для работы с Velero необходимо установить Velero CLI на локальную машину и настроить его в вашем кластере Kubernetes.
Перед началом установки убедитесь, что выполнены следующие условия:
Создадим отдельный неймспейс для Velero:
kubectl create namespace velero
Для настройки доступа 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 с официальной страницы релизов 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
Создайте файл 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.
Перейдите в панель управления кластером и откройте вкладку «Дополнения». Выберите Velero.
values.yaml
, нажав на «Загрузить конфигурацию из файла».Нажмите «Установить».
kubectl get pods -n velero
Вы можете установить 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
Эти функции позволяют гибко управлять процессами резервного копирования и восстановить данные в нужный момент.