Hooks
Содержание
Overview
Пользовательские хуки — это расширяющие команды, которые выполняются в контейнерах внутри кластера. Настраивая хуки, вы можете выполнять индивидуальные операции во время резервного копирования и восстановления. Для особых требований к конфигурации обращайтесь в техническую поддержку.
Backup Hook
Во время выполнения резервного копирования, когда происходит бэкап Pod, в контейнерах Pod может выполняться одна или несколько команд. Эти команды могут запускаться до (pre) или после (post) завершения операции резервного копирования Pod.
Хуки можно настроить в поле .spec.template.spec.hooks ресурса schedule или в поле .spec.hooks ресурса backup.
Пример конфигурации и описание параметров:
hooks:
resources:
-
# Имя хука, отображается в логах.
name: my-hook
# (Опционально) Пространства имён, в которых запускается хук (массив). Если не указано, хук запускается во всех пространствах имён.
includedNamespaces:
- '*'
# (Опционально) Пространства имён для исключения (массив).
excludedNamespaces:
- some-namespace
# Ресурсы, на которых запускается хук. В настоящее время поддерживаются только pods.
includedResources:
- pods
# (Опционально) Селектор меток для целевых ресурсов.
labelSelector:
matchLabels:
app: velero
component: server
# Действия с Pod, выполняемые до резервного копирования (массив). Поддерживаются только exec хуки.
pre:
-
exec:
# (Опционально) Имя контейнера, в котором выполняется команда. Если не указано, по умолчанию выбирается первый контейнер в Pod.
container: my-container
# Команда для выполнения (массив). Обязательно.
command:
- /bin/uname
- -a
# (Опционально) Стратегия при ошибке выполнения команды: Continue или Fail. По умолчанию: Fail.
onError: Fail
# (Опционально) Таймаут выполнения команды. По умолчанию: 30s.
timeout: 10s
# Действия с Pod, выполняемые после резервного копирования (массив). Поддерживаются только exec хуки.
post:
# Аналогично pre
Restore Hooks
Компонент резервного копирования и восстановления поддерживает выполнение пользовательских операций через хуки во время или после задачи восстановления.
Поддерживаются два типа хуков восстановления:
-
initContainer хук восстановления: добавляет init контейнер в восстановленный Pod для выполнения необходимой настройки до запуска контейнера приложения.
-
exec хук восстановления: используется для выполнения команд или скриптов в контейнере восстановленного Pod.
Хуки восстановления можно задать в поле .spec.hooks ресурса restore. Пример конфигурации и описание параметров:
hooks:
resources:
# Имя хука
- name: restore-hook-1
# (Опционально) Пространства имён, в которых запускается хук (массив). Если не указано, хук запускается во всех пространствах имён.
includedNamespaces:
- ns1
# (Опционально) Пространства имён для исключения (массив).
excludedNamespaces:
- ns3
# Ресурсы, на которых запускается хук. В настоящее время поддерживаются только pods.
includedResources:
- pods
# (Опционально) Селектор меток для целевых ресурсов.
labelSelector:
matchLabels:
app: velero
component: server
# Список хуков. Поддерживаются типы init и exec.
postHooks:
- init:
# Список контейнеров для добавления как initContainers.
initContainers:
- name: restore-hook-init1
image: alpine:latest
volumeMounts:
- mountPath: /restores/pvc1-vm
name: pvc1-vm
command:
- /bin/ash
- -c
- echo -n "FOOBARBAZ" >> /restores/pvc1-vm/foobarbaz
- name: restore-hook-init2
image: alpine:latest
volumeMounts:
- mountPath: /restores/pvc2-vm
name: pvc2-vm
command:
- /bin/ash
- -c
- echo -n "DEADFEED" >> /restores/pvc2-vm/deadfeed
- exec:
# (Опционально) Имя контейнера, в котором выполняется команда. Если не указано, по умолчанию выбирается первый контейнер в Pod.
container: my-container
# Команда для выполнения (массив). Обязательно.
command:
- /bin/uname
- -a
# (Опционально) Стратегия при ошибке выполнения команды: Continue или Fail. По умолчанию: Fail.
onError: Fail
# (Опционально) Таймаут выполнения команды. По умолчанию: 30s.
timeout: 10s