• Русский
  • 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