Hooks

目录

Overview

自定义钩子是在集群内容器中运行的扩展命令。通过配置钩子,您可以在备份和恢复过程中执行定制操作。对于特殊配置需求,请联系技术支持。

Backup Hook

在备份执行过程中,当 Pod 正在备份时,可以在 Pod 内的容器中执行一个或多个命令。这些命令可以在 Pod 备份操作完成之前(pre)或之后(post)运行。

钩子可以配置在 schedule 资源的 .spec.template.spec.hooks 字段或 backup 资源的 .spec.hooks 字段下。

配置示例及参数说明:

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 恢复钩子:向恢复后的 Pod 添加 init 容器,在应用容器启动前执行必要的初始化操作。

  • exec 恢复钩子:用于在恢复后的 Pod 容器中执行命令或脚本。

恢复钩子可以设置在 restore 资源的 .spec.hooks 字段中。配置示例及参数说明:

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